我有一个应用程序可以自动化最初基于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
答案 0 :(得分:1)
您没有在示例中使用excel,因为我可以告诉您,并且您正在输出.csv文件。您只是保存扩展名为.xls的.csv文件。如果您实际上是在启动excel,那么您不会在此代码中执行此操作。
答案 1 :(得分:1)
您的代码中没有任何内容与Excel有任何关系 - 它只是写出了一个带有.xls扩展名的制表符分隔文件。
您可以通过将“Chr(9)”更改为“,”来轻松地将其设为CSV(尽管您还必须确保从输入数据中删除逗号或引用它,但请确保如果你引用它,你也可以在输入数据中转义引号...猜猜这比“相当容易”:)少一点。)。