How dump database table to excel sheet?

爱⌒轻易说出口 提交于 2019-11-28 11:28:58

问题


I am getting data from my database and I want to have that data as a table in excel file. So, I have written the following :

    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()

There should be a straight obvious way of doing this ?

Dumping a database table to excel sheet ?

[ Should I ? ]

Should I use dataset of something.. ? If yes, how to proceed for that ?

Please help.. I am new to this !!


回答1:


Here is how I solved this :

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

Then Finally, do the following to the range where you want to have this data

range.Value = getDate(query,conStr)

That solved the whole problem !




回答2:


The simplest solution is if you write a csv file. In the csv the columns are separated with comma (;) and the excel can read this file.

The best way is the OLE Automation but for this you have to install an excel to the pc where your program runs. Here is a sample: OLE Automation




回答3:


Best way is to use XmlSerialization of the data table and then perform Excel Loading of the serialised Xml...

There is a nice open source utility (which you can add to your project and make changes to as well) called ExcelLibrary ... please refer to this article... Create Excel (.XLS and .XLSX) file from C#

This is one of the most efficient ways of Bulk Excel Loading.




回答4:


Look at something like EPlus which seems to be a popular library.

... or FileHelpers, where there is a good quickstart showing you how to create a .csv file

You can just use the export functionality of Sql Server Management studio if it's a one off type job?



来源:https://stackoverflow.com/questions/6854750/how-dump-database-table-to-excel-sheet

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!