こんにちは、データセットを複数のExcelシートにエクスポートし、それらのファイルをC#asp.netのzipにダウンロードする方法はありますか?複数のExcelシートにデータセットをエクスポートし、asp.netを使用してzipファイルにダウンロードするC#
答えて
NPoi輸出用、DotNetZip Libraryジップ用です。
これはすでにスタックオーバーフローで十分にカバーされています。
- How to zip multiple files using only .net api in c#
- :これらの優れた答えをチェックし、
次のファイルを圧縮するために:すべての まず、Excelのスプレッドシートを作成するには、この前のポストをチェックC# .net code for zipping a file using PKZIP
- Sample C# .net code for zipping a file using 7zip
- more potential answers here
あなたは自動的にユーザーにそれをストリーミングする場合は、これらの答えを試してみてください。
プライベートサブコピーシート() 薄暗いCMDのDataSet =新しいデータセットとして文字列 薄暗いDS()文字列=「プロバイダ= Microsoft.Jet.OLEDB.4.0として 薄暗いCONNSTRINGとしてのOleDbCommand 薄暗いDTとして、データソース= E: \ EXCEL \ From.xlsに、OleDbConnectionオブジェクト=新しいOleDbConnectionオブジェクト(CONNSTRING) として、拡張プロパティ=エクセル8.0" 点心oledbConnは( oledbConn.Openを試してみてください) I = 0の場合1 へのI = 0なら、 CMD =新規のOleDbCommand (「SELECT * FROM [Sheet1 $]」、oledbConn) dt = "Sheet3" Else cmd =新しいOleDbCommand( "SELECT * FROM [シート2 $]」、oledbConn) DT = "シート4" OleDbDataAdapterおよ=新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
として 場合は薄暗いoledaを終了