【问题标题】:Export DataSet to Multiple Excel Sheets and download into a zip file using asp.net C#将数据集导出到多个 Excel 工作表并使用 asp.net C# 下载到 zip 文件中
【发布时间】:2011-01-21 10:54:10
【问题描述】:

您好,如何将数据集导出到多个 Excel 工作表并将这些文件下载到 C# asp.net 中的 zip 中?

【问题讨论】:

    标签: c# asp.net vb.net


    【解决方案1】:

    这已经在 Stack Overflow 上得到了很好的介绍。 首先,要创建 Excel 电子表格,请查看之前的帖子:

    在压缩文件旁边,检查这些优秀的答案:

    如果您想自动将其流式传输给用户,请尝试以下答案:

    【讨论】:

      【解决方案2】:

      NPoi 用于导出,DotNetZip Library 用于压缩。

      【讨论】:

        【解决方案3】:

        私有子 CopySheet() 将 cmd 调暗为 OleDbCommand 将 dt 调暗为字符串 Dim ds As DataSet = New DataSet() Dim connString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\EXCEL\From.xls;Extended Properties=Excel 8.0" 将 oledbConn 调暗为 OleDbConnection = New OleDbConnection(connString) 尝试 oledbConn.Open() 对于 i = 0 到 1 如果 i = 0 那么 cmd = New OleDbCommand("SELECT * FROM [Sheet1$]", oledbConn) dt = "表 3" 别的 cmd = New OleDbCommand("SELECT * FROM [Sheet2$]", oledbConn) dt = "表 4" 万一 Dim oleda As 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
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-02-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多