簡體   English   中英

C# - 如何使用 ClosedXml 將導出數據表中的 StringBuilder 用於 Excel

[英]C# - How to used for StringBuilder in Export Datatable to excel using ClosedXml

我在下面使用這個代碼

 private void Form1_Load(object sender, EventArgs e)
 {
        System.Data.DataTable dt;
        SqlConnection con=new SqlConnection("Data Source=sanjay;Initial Catalog=Login;Integrated Security=True");
        SqlCommand cmd=new SqlCommand("select * from login",con);
        SqlDataAdapter sda=new SqlDataAdapter(cmd);
         dt=new System.Data.DataTable();
        sda.Fill(dt);
        int srno = 1;

        StringBuilder stb = new StringBuilder();

        ClosedXML.Excel.XLWorkbook wb = new ClosedXML.Excel.XLWorkbook();
        String Todaysdate1 = DateTime.Now.ToString("dd-MM-yyyy");

        string appPath = Path.Combine(Environment.CurrentDirectory + "\\");
        if (!Directory.Exists(appPath + "\\" + Todaysdate1 + "\\TD"))
        {
            Directory.CreateDirectory(appPath + "\\" + Todaysdate1);
        }

        if (dt.Rows.Count > 0)
        {
           stb.Append("<html>");
             stb.Append("<head>");
             stb.Append("</head>");
             stb.Append("<body>");
             stb.Append("Sanju");
             stb.Append("<table border=2>");
             stb.Append("<tbody>");
             stb.Append("<tr style='height:25px'>");
             stb.Append("<td  colspan='18' style='text-align:center;font-size:18px;font-weight:bold;min-width:50px'>");
             stb.Append("<center> Form III - DEAF Voucher Preparation</center>");
             stb.Append("</td>");
             stb.Append("</tr>");
             stb.Append("<tr style='height:21px'>");
             stb.Append("<td colspan='18' style='text-align:center;font-size:16px;font-weight:bold;min-width:50px'>");
             stb.Append("<center>2018-05-01</center>");
             stb.Append("</td>");
             stb.Append("</tr>");
             stb.Append("<tr style='height:100px;font-weight:bold'>");
             stb.Append("<td style='text-align:center;font-size:14px'>No.</td>");
             stb.Append("</tr>");

             for (int i = 0; i < dt.Rows.Count; i++)
             {
                 stb.Append("<tr>");
                 stb.Append("<td>" + srno++ + " </td>");
                 stb.Append("<td nowrap>" + dt.Rows[i][0].ToString() + "</td>");
                 stb.Append("<td style='background-color:#ff99cc'></td>");
                 stb.Append("<td style='background-color:#ff99cc'></td>");
                 stb.Append("<td style='background-color:#ff99cc'></td>");
                 stb.Append("</tr>");
                 wb.Worksheets.Add(srno.ToString(), i);//Add worksheet
             }
             stb.Append("</tbody>");
             stb.Append("</table>");
             stb.Append("</body>");
             stb.Append("</html>");

            using (System.IO.StreamWriter file = new System.IO.StreamWriter(appPath + "\\" + Todaysdate1 + "\\TD_Results_From.XLS"))
            {
                file.WriteLine(stb.ToString());   
            }
            System.Diagnostics.Process.Start(appPath + "\\" + Todaysdate1 + "\\TD_Results_From.XLS");
        }

我使用Wb.SavaAs()只顯示添加工作表,但第一個工作表未打開我將訪問工作簿和所有工作表每個后退創建工作表。 添加多個工作表我正在使用wb.Worksheets.Add(srno.ToString(), i); 這個語句我也使用了closedXml

問題是只創建主工作表但從不打開所有工作表

任何身體幫助我前進謝謝

ClosedXML 無法導入 HTML。

ClosedXML 可以為 Excel 寫出 HTML 表格嗎

您必須自己解析 HTML(使用HTML Agility Pack 之類的東西)並將 HTML 表格中每個單元格的內容放在 ClosedXML 電子表格的相應單元格中

你應該這樣做:

public void WriteDataToExcel(DataTable dt, string fileName)  
{  
  using (XLWorkbook wb = new XLWorkbook())  
  {  
      //Add DataTable in worksheet  
      wb.Worksheets.Add(dt);  
      using (Stream stream = new FileStream(fileName, FileMode.Create))  
      {  
          wb.SaveAs(stream);  
      }  
  }  
}  

此外,您可以像這個示例項目一樣使用Open XML來導出 XLS:

使用 Open XML 創建基本 Excel 工作簿

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM