[英]Export DataSet to Multiple Excel Sheets and download into a zip file using asp.net C#
嗨,如何將DataSet導出到多個Excel工作表並將這些文件下載到C#asp.net中的zip文件中?
堆棧溢出已經對此進行了詳細介紹。 首先,要創建您的Excel電子表格,請查看以下上一篇文章:
在壓縮文件的旁邊,檢查以下出色的答案:
如果要自動將其流回用戶,請嘗試以下答案:
私有子CopySheet()Dim cmd作為OleDbCommand Dim dt作為字符串Dim ds作為DataSet = New DataSet()Dim connString As String =“ Provider = Microsoft.Jet.OLEDB.4.0; Data Source = E:\\ EXCEL \\ From.xls;擴展的屬性= Excel 8.0“ Dim oledbConn作為OleDbConnection =新的OleDbConnection(connString)嘗試oledbConn.Open()對於i = 0到1如果i = 0則cmd = New OleDbCommand(” SELECT * FROM [Sheet1 $]“,oledbConn) dt =“ Sheet3”其他cmd =新OleDbCommand(“ SELECT * FROM [Sheet2 $]”,oledbConn)dt =“ Sheet4”如果Dim oleda為OleDbDataAdapter = New OleDbDataAdapter()則結束oleda.SelectCommand = cmd oleda.Fill(ds, dt)接下來
ExportDatasetToExcel(ds, "dd")
Catch
Finally
oledbConn.Close()
End Try
End Sub
Public Sub ExportDatasetToExcel(ByVal ds As DataSet, ByVal strExcelFile As String)
Dim conn As New OleDbConnection(String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\EXCEL\To.xls;Extended Properties=Excel 8.0"))
conn.Open()
Dim strTableQ(ds.Tables.Count) As String
Dim i As Integer = 0
'making table query
For i = 0 To ds.Tables.Count - 1
strTableQ(i) = "CREATE TABLE [" & ds.Tables(i).TableName & "]("
Dim j As Integer = 0
For j = 0 To ds.Tables(i).Columns.Count - 1
Dim dCol As DataColumn
dCol = ds.Tables(i).Columns(j)
strTableQ(i) &= " [" & dCol.ColumnName & "] varchar(255) , "
Next
strTableQ(i) = strTableQ(i).Substring(0, strTableQ(i).Length - 2)
strTableQ(i) &= ")"
Dim cmd As New OleDbCommand(strTableQ(i), conn)
cmd.ExecuteNonQuery()
Next
'making insert query
Dim strInsertQ(ds.Tables.Count - 1) As String
For i = 0 To ds.Tables.Count - 1
strInsertQ(i) = "Insert Into " & ds.Tables(i).TableName & " Values ("
For k As Integer = 0 To ds.Tables(i).Columns.Count - 1
strInsertQ(i) &= "@" & ds.Tables(i).Columns(k).ColumnName & " , "
Next
strInsertQ(i) = strInsertQ(i).Substring(0, strInsertQ(i).Length - 2)
strInsertQ(i) &= ")"
Next
'Now inserting data
For i = 0 To ds.Tables.Count - 1
For j As Integer = 0 To ds.Tables(i).Rows.Count - 1
Dim cmd As New OleDbCommand(strInsertQ(i), conn)
For k As Integer = 0 To ds.Tables(i).Columns.Count - 1
cmd.Parameters.AddWithValue("@" & ds.Tables(i).Columns(k).ColumnName.ToString(), ds.Tables(i).Rows(j)(k).ToString())
Next
cmd.ExecuteNonQuery()
cmd.Parameters.Clear()
Next
Next
conn.Close()
End Sub
NPoi用於導出, DotNetZip庫用於壓縮它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.