zoukankan      html  css  js  c++  java
  • [转]C# 导出数据到Excel模板中

    本文转自:http://www.cnblogs.com/A2008A/archive/2012/05/26/2519272.html

    今天做报表的时候遇到了多表头的问题,而且相应的报表的格式都一样。所以就采用了报表模板的方式来进行。

    第一步:在开发的当前项目中引入: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);

    详细请看源码

  • 相关阅读:
    图片局部放大插件jquery.jQZoom.js
    FastCGI for iis6不能限制程序池的CPU
    技术普及帖:你刚才在淘宝上买了一件东西
    转载 ListView动态加载数据模板
    转载 Drawable、Bitmap、byte[]之间的转换
    转载 一个ImageView 点击时是一张图片,放开时换另一张图片
    转载 java抽象类与接口的区别
    转载 Android AsyncTask
    转载 Android实现ListView异步加载图片
    转载 Android权限大全
  • 原文地址:https://www.cnblogs.com/freeliver54/p/3115778.html
Copyright © 2011-2022 走看看