0

我已经使用 Export Excel Cocept 将我的数据从数据表和数据集中提取到 Excel 工作表中,对于每个数据表和数据集,我都准备好了一个 Excel 工作表。有什么方法可以让我使用 (c#) 在单个 Excel 工作簿中获取所有工作表

   protected void UploadDataTableToExcel(DataTable dtEmp, string filename)
   {
       string attachment = "attachment; filename=" + filename;
       Response.ClearContent();
       Response.AddHeader("content-disposition", attachment);
       Response.ContentType = "application/vnd.ms-excel";
       string tab = string.Empty;
       foreach (DataColumn dtcol in dtEmp.Columns)
       {
           Response.Write(tab + dtcol.ColumnName);
           tab = "\t";
       }
       Response.Write("\n");
       foreach (DataRow dr in dtEmp.Rows)
       {
           tab = "";
           for (int j = 0; j < dtEmp.Columns.Count; j++)
           {
               Response.Write(tab + Convert.ToString(dr[j]));
               tab = "\t";
           }
           Response.Write("\n");
       }
       Response.End();
       }


       protected void lnkExport_Click(object sender, EventArgs e)
        {
          DataTable dt = new DataTable();
          DataSet ds = new DataSet();
          string funcName = (string)ViewState["Reports"];
          if (funcName == "DataTable1")
          dt = DbAccess.GetDataTable1();
          else if (funcName == "DataTable2")
            dt = DbAccess.GetDataTable2();

          if (ds.Tables.Count > 0)
          {
             string strFilename = funcName + ".xls";
             UploadDataSetToExcel(ds, strFilename);
          }
           else
          {

            string strFilenames = funcName + ".xls";
            UploadDataTableToExcel(dt, strFilenames);
          }
4

2 回答 2

0

在创建工作表并保存工作簿后,您可以使用 Office.Excel 互操作将工作表移动到单个工作簿。这将打开两个工作簿并将一个工作表从第一个工作簿复制到第二个工作簿中,然后保存第二个工作簿:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Excel = Microsoft.Office.Interop.Excel;

namespace MergeBooks
{
    class Program
    {
        static void Main(string[] args)
        {
            Excel.Application exApp = new Excel.Application();
            Excel.Workbook wb1 = exApp.Workbooks.Open(@"C:\wb1.xls");
            Excel.Workbook wb2 = exApp.Workbooks.Open(@"C:\wb2.xls");
            Excel.Worksheet worksheet1 = wb1.Worksheets[1];
            Excel.Worksheet worksheet2 = wb2.Worksheets[1];
            worksheet1.Copy(worksheet2);
            wb2.SaveAs(@"C:\wb3.xls");

            wb1.Close(false);
            wb2.Close(false);
            exApp.Quit();

        }
    }
}

阅读有关移动和互操作的更多信息:

于 2013-11-07T08:03:06.087 回答
0

您正在使用 csv 表作为 excel 表吗?虽然 excel 可以打开它,但它不是格式正确的 excel 文件,因此您不太可能向该文件添加工作表。我建议使用像 EPPLUS 这样的库,它可以处理原生 xlsx 格式并包含从头开始或数据库创建“真实”excel 文件的方法。

于 2013-11-07T08:04:37.620 回答