1

我正在从我的数据库中获取数据,并且我希望将这些数据作为 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 ?

请帮忙..我是新手!

4

4 回答 4

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)

这解决了整个问题!

于 2011-08-02T04:26:12.923 回答
0

最简单的解决方案是编写一个 csv 文件。在 csv 中,列用逗号 (;) 分隔,excel 可以读取此文件。

最好的方法是 OLE 自动化,但为此您必须在运行程序的 pc 上安装一个 excel。这是一个示例:OLE 自动化

于 2011-07-28T06:19:36.527 回答
0

最好的方法是使用数据表的 XmlSerialization,然后执行序列化 Xml 的 Excel 加载...

有一个很好的开源实用程序(您可以将其添加到您的项目中并对其进行更改)称为 ExcelLibrary ...请参阅这篇文章...从 C# 创建 Excel(.XLS 和 .XLSX)文件

这是批量 Excel 加载的最有效方式之一。

于 2011-07-28T06:42:53.533 回答
-1

看看像EPlus这样的东西,它似乎是一个流行的库。

... 或FileHelpers,其中有一个很好的快速入门向您展示如何创建 .csv 文件

如果是一次性工作,您可以只使用 Sql Server Management Studio 的导出功能吗?

于 2011-07-28T06:17:51.770 回答