Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 将xls转换为csv或终止EXCEL.exe进程_Asp.net_Csv_Xls_Kill Process - Fatal编程技术网

Asp.net 将xls转换为csv或终止EXCEL.exe进程

Asp.net 将xls转换为csv或终止EXCEL.exe进程,asp.net,csv,xls,kill-process,Asp.net,Csv,Xls,Kill Process,我有一个应用程序,它可以自动化最初基于DTS包的报告系统。基于web的应用程序当前正在将输出xls文件写入网络上的另一台服务器。我发现,即使在网站关闭后,正在写入的服务器上仍有一个excel实例在运行。我希望能够更改现有例程以输出csv文件而不是xls文件,或者在联网机器上终止EXCEL.exe进程。救命啊 编辑:如果我将文件扩展名更改为另存为csv,则文件的外观如下 如果图片太小,它基本上显示行是分开的,但列不是。在逗号应该用来分隔列的地方,有带问号的小方框 下面是我当前编写.xls文件的例

我有一个应用程序,它可以自动化最初基于DTS包的报告系统。基于web的应用程序当前正在将输出xls文件写入网络上的另一台服务器。我发现,即使在网站关闭后,正在写入的服务器上仍有一个excel实例在运行。我希望能够更改现有例程以输出csv文件而不是xls文件,或者在联网机器上终止EXCEL.exe进程。救命啊

编辑:如果我将文件扩展名更改为另存为csv,则文件的外观如下

如果图片太小,它基本上显示行是分开的,但列不是。在逗号应该用来分隔列的地方,有带问号的小方框

下面是我当前编写.xls文件的例程

Public Sub DisplayandConvertToXLS()
    Dim i As Integer
    Dim ds As New DataSet
    Dim da As SqlDataAdapter
    Dim objFileStream As FileStream
    Dim objStreamWriter As StreamWriter
    Dim fs As Object, myFile As Object
    Dim cnn As SqlConnection = New SqlConnection("DataSource=dpsdb;InitialCatalog=productionservicereminder;User Id=id;Password=pass;")
    Dim strLine, filePath, fileExcel As String

    'Create a file name.

    fileExcel = FileNameTxt.Text & ".xls"



    'Set a virtual folder to save the file.
    'Make sure that you change the application name to match your folder.

    filePath = "\\10.1.2.4\SRS Shortcuts\Export\SQL Output\CSV Reports\"


    fileName = filePath & FolderNameTXT.Text & "/" & fileExcel

    'Use FileStream to create the .xls file.
    objFileStream = New FileStream(fileName, FileMode.OpenOrCreate, FileAccess.Write)
    objStreamWriter = New StreamWriter(objFileStream)

    'Use a DataReader to connect to the database.
    cnn.Open()
    Dim sql3 As String = DisplayQTXT.Text

    Dim cmd As SqlCommand = New SqlCommand(sql3, cnn)
    cmd.Parameters.Add(New SqlParameter("@ProgramGroupID", PgidTXT.Text))
    Dim drr As SqlDataReader

    drr = cmd.ExecuteReader()

    'Enumerate the field names and records that are used to build the file.
    For i = 0 To drr.FieldCount - 1
        strLine = strLine & drr.GetName(i).ToString & Chr(9)
    Next

    'Write the field name information to file.
    objStreamWriter.WriteLine(strLine)

    'Reinitialize the string for data.
    strLine = ""

    'Enumerate the database that is used to populate the file.
    While drr.Read()
        For i = 0 To drr.FieldCount - 1
            strLine = strLine & drr.GetValue(i) & Chr(9)
        Next
        objStreamWriter.WriteLine(strLine)
        strLine = ""
    End While

    'Clean up.
    drr.Close()
    cnn.Close()
    ds.Clear()

    objStreamWriter.Close()
    objFileStream.Close()
    objStreamWriter.Dispose()
    objFileStream.Dispose()

End Sub

就我所知,您在示例中没有使用excel,而是输出了一个.csv文件。您只需保存一个扩展名为.xls的.csv文件。如果您真的要启动excel,那么您并不是在这段代码中启动的。

这里的代码中没有任何内容与excel有关——它只是写出一个以制表符分隔的文件,该文件的扩展名恰好是.xls


通过将“Chr(9)”更改为“,”(虽然您还必须确保从输入数据中去掉逗号或引用它,但如果您引用它,请确保在输入数据中也转义引号…我猜这比“相当容易”要小一些:)。

谢谢大家。这也是别人告诉我的。但是,当我将文件扩展名更改为csv时,我的文件将全部关闭。请参见上面的“编辑”。@JDV590-这可能是Excel(或您查看文件的任何程序)将制表符显示为不可显示的字符;如果您使用“文本导入向导”在Excel中打开文件,它将询问您分隔符是什么,您应该选择哪个“选项卡”。