我从数据库中获取数据,我希望将这些数据作为excel文件中的表。 所以,我写了以下内容:
Dim sheetToPopulate As Excel.Worksheet = getSheet()
Dim reader As OleDbDataReader
Dim query As String = "SELECT * FROM dataTable"
Dim cmd As New OleDbCommand(query, oleConn)
Dim reader As OleDbDataReader
oleConn.Open()
reader = cmd.ExecuteReader()
Do While reader.Read()
// How use the reader to populate the sheet at once.
// I have the sheet object as sheetToPopulate.
// cell.Vaule = reader.GetString(0) ' It would be very in-efficient and complex.
// How can I dump the table to my excel sheet ?
Loop
reader.Close()
oleConn.Close()
这应该有一个明显的方法吗?
将数据库表转储到Excel工作表?
[我应该吗? ] 的
Should I use dataset of something.. ? If yes, how to proceed for that ?
请帮助..我是新手!!
答案 0 :(得分:1)
以下是我解决这个问题的方法:
Private Function getData(ByVal query As String, ByVal conStr As String) As Object
Dim adapter As New Data.OleDb.OleDbDataAdapter(query, conStr)
Dim dataSet As New Data.DataSet
adapter.Fill(dataSet)
Dim dataTable As Data.DataTable = dataSet.Tables(0)
Dim data(dataTable.Rows.Count, dataTable.Columns.Count - 1) As Object
For col = 0 To dataTable.Columns.Count - 1
For row = 0 To dataTable.Rows.Count - 1
data(row, col) = dataTable.Rows(row).ItemArray(col)
Next
Next
Return data
End Function
然后,最后,在您想要拥有此数据的范围内执行以下操作
range.Value = getDate(query,conStr)
这解决了整个问题!
答案 1 :(得分:0)
最简单的解决方案是编写csv文件。在csv中,列用逗号(;)分隔,excel可以读取此文件。
最好的方法是OLE自动化,但为此必须在运行程序的pc上安装excel。 以下是一个示例:OLE Automation
答案 2 :(得分:0)
最好的方法是使用数据表的XmlSerialization,然后执行序列化Xml的Excel加载......
有一个很好的开源实用程序(您可以将其添加到项目中并进行更改)称为ExcelLibrary ...请参阅此文章... Create Excel (.XLS and .XLSX) file from C#
这是批量Excel加载的最有效方法之一。
答案 3 :(得分:-1)
看看类似EPlus的东西,它似乎是一个受欢迎的图书馆。
...或FileHelpers,其中有一个好的quickstart向您展示如何创建.csv文件
如果它是一次性类型的工作,你可以使用Sql Server Management studio的导出功能吗?