C# 導出數據到Excel模板中


今天做報表的時候遇到了多表頭的問題,而且相應的報表的格式都一樣。所以就采用了報表模板的方式來進行。

第一步:在開發的當前項目中引入:Microsoft.Office.Interop.Excel;System.Reflection;命名空間。

第二步:獲取要導出的數據;

第三步:創建一個Excel 應用程序:

  //需要添加 Microsoft.Office.Interop.Excel引用 
  Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();

如果,app = null ,則代表服務器上“服務器上缺少Excel組件,需要安裝Office軟件”;

第四步:設置app屬性,及其進行如下操作:

  app.Visible = false;
  app.UserControl = true;
  Microsoft.Office.Interop.Excel.Workbooks workbooks = app.Workbooks;
  Microsoft.Office.Interop.Excel._Workbook workbook = workbooks.Add(Server.MapPath("~/Template.xlsx")); //加載模板
  Microsoft.Office.Interop.Excel.Sheets sheets = workbook.Sheets;
  Microsoft.Office.Interop.Excel._Worksheet worksheet = (Microsoft.Office.Interop.Excel._Worksheet)sheets.get_Item(1); //第一個工作薄。
  if (worksheet == null)
      return;  //工作薄中沒有工作表.

第五步:根據獲得的數據,進行數據的插入(到Excel模板中);

            //寫入數據,Excel索引從1開始。
            for (int i = 1; i <= rowCount; i++)
            {
                int row_ = 2 + i;  //Excel模板上表頭和標題行占了2行,根據實際模板需要修改;
                int dt_row = i - 1; //dataTable的行是從0開始的。 
                worksheet.Cells[row_, 1] = i.ToString();
                worksheet.Cells[row_, 2] = dt.Rows[dt_row]["姓名"].ToString();
                worksheet.Cells[row_, 3] = dt.Rows[dt_row]["學號"].ToString();
            }

第六步:設置已導入的數據的樣式:

            //調整Excel的樣式。
            Microsoft.Office.Interop.Excel.Range rg = worksheet.Cells.get_Range("A3", worksheet.Cells[rowCount + 2, 8]);
            rg.Borders.LineStyle = 1; //單元格加邊框。
            worksheet.Columns.AutoFit(); //自動調整列寬。

第七步:對已導出好的Excel報表進行保存到服務器,以便進行下載。

            //Missing 在System.Reflection命名空間下。
            string savaPath = "~/Temp/T1_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";
            workbook.SaveAs(Server.MapPath(savaPath), Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);

詳細請看源碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM