.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)

.NET导出报表一般是采用导出Excel报表的方式输出内容。而这又分为两种方式:使用Excel模板方式和使用网页输出Excel格式两种。
首先介绍简单的一种,网页输出Excel内容,这种不需要引用Excel的程序集。
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_编程    /// <summary>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02    /// 报表导出辅助类
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_03    /// </summary>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_04    public class ExportToExcel
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_编程    {
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_编程_06        字段信息        
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        public ExportToExcel()
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09        {
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10        }
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09        /// <summary>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        /// 带参数的构造函数
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        /// </summary>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        /// <param name="fileName">导出的Excel文件名</param>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        /// <param name="sourceTable">源数据DataTable</param>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10        /// <param name="title">报表的抬头</param>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        public ExportToExcel(string fileName, DataTable sourceTable, string title)
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09        {
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            this.fileName = fileName;
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            this.sourceTable = sourceTable;
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            this.title = title;
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10        }
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        public void ExportReport()
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09        {
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            if (SourceTable == null || SourceTable.Rows.Count == 0)
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09            {
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02                return;
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10            }
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            DataGrid dataGrid = new DataGrid();
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            dataGrid.DataSource = sourceTable;
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            dataGrid.DataBind();
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            HttpResponse Response = HttpContext.Current.Response;
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            Response.Clear();
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            Response.Buffer = true;
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            Response.AddHeader(C_HTTP_HEADER_CONTENT, C_HTTP_ATTACHMENT + HttpUtility.UrlEncode(fileName + ".xls"));
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            Response.ContentType = C_HTTP_CONTENT_TYPE_EXCEL;
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            Response.ContentEncoding = Encoding.GetEncoding("gb2312");
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            Response.Charset = charSet;
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            StringWriter oStringWriter = new StringWriter();
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            HtmlTextWriter oHtmlTextWriter = new HtmlTextWriter(oStringWriter);
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            dataGrid.RenderControl(oHtmlTextWriter);
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            string str = oStringWriter.ToString();
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            int trPosition = str.IndexOf("<tr>", 0);
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            string str1 = str.Substring(0, trPosition - 1);
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            string str2 = str.Substring(trPosition, str.Length - trPosition);
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            string str3 = "\r\n\t<tr>";
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            str3 += "\r\n\t\t<td align=\"center\" colspan=\"" + sourceTable.Rows.Count +
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02                    "\" style=\"font-size:14pt;    font-weight:bolder;height:30px;\">" + title + "</td>";
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            str3 += "\r\n\t</tr>";
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            Response.Write(str1 + str3 + str2);
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            Response.End();
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10        }
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_03    }

使用时候代码如下:
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_04        private void btnExport2_Click(object sender, EventArgs e)
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_编程        {
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            DataTable table = SelectAll().Tables[0];
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            ExportToExcel export = new ExportToExcel("TestExport", table, "TestExport");
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            export.ExportReport();
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_03        }
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_04
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_04        public static DataSet SelectAll()
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_编程        {
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            string sqlCommand = " Select ID, Name, Age, Man, CONVERT(CHAR(10), Birthday ,120) as Birthday from Test";
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            DataSet ds = new DataSet();
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            string connectionString = "Server=localhost;Database=Test;uid=sa;pwd=123456";
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            SqlDataAdapter adapter = new SqlDataAdapter(sqlCommand, connectionString);
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            adapter.Fill(ds);
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            return ds;
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_03        }


另外一种就是先定义好Excel模板,然后输出指定格式的内容,这些内容通过开始单元格名称定位,然后写入内容,但是这种功能比较强大,输出的Excel内容也比较整齐。
1. 首先在Web.Config中配置下
 <system.web>
   <identity impersonate="true"></identity>   
 </system.web>
2. 创建一个Excel模板文件,如下图所示,当然这个是简单的Excel模板,你可以定义很复杂
 .NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_编程_81
3. 在网站的根目录中创建一个Temp目录,给EveryOne读写权限,当然你也可以给AuthenticatedUsers
4. 辅助类代码
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_编程    /// <summary>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02    /// 报表导出基类
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_03    /// </summary>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_04    public abstract class BaseReport
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_编程    {
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_编程_06        变量及属性
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        public BaseReport()
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09        {
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            excelHelper = new ExcelHelper(false);
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10        }
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09        /// <summary>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        /// 打开Excel文件和关闭Excel
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        /// </summary>        
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10        /// <returns>返回OK表示成功</returns>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        protected virtual bool OpenFile()
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09        {
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            return excelHelper.OpenFile(fileName);
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10        }
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09        /// <summary>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        /// 关闭工作薄和excel文件
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10        /// </summary>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        protected virtual void CloseFile()
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09        {
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            excelHelper.stopExcel();
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10        }
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09        /// <summary>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        /// 导出EXCEL文件
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10        /// </summary>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        protected virtual void ExportFile()
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09        {
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            string tempFileName = HttpContext.Current.Request.PhysicalApplicationPath + @"Temp\" + sheetName.Replace(".xls", "");
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            string SaveFileName = tempFileName + DateTime.Now.ToLongDateString() +
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02                                  DateTime.Now.ToLongTimeString().Replace(":", "-") + ".xls";
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            excelHelper.SaveAsFile(SaveFileName);
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            CloseFile();
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            HttpResponse Response = HttpContext.Current.Response;
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            Response.Clear();
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            Response.Buffer = true;
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            Response.AddHeader(C_HTTP_HEADER_CONTENT,
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02                               C_HTTP_ATTACHMENT + HttpUtility.UrlEncode(DateTime.Now.ToLongDateString() + sheetName));
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            Response.ContentType = C_HTTP_CONTENT_TYPE_EXCEL;
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            Response.ContentEncoding = Encoding.GetEncoding("gb2312");
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            Response.Charset = CharSet;
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            Response.WriteFile(SaveFileName);
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            Response.Flush();
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            Response.Clear();
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            File.Delete(SaveFileName);
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10        }
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09        /// <summary>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        /// 填充表单数据到excel中
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        /// </summary>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        /// <param name="GotoCell">定义的首个Cell名称</param>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10        /// <param name="dt">数据表Datatable</param>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        protected virtual void FillCell(string GotoCell, DataTable dt)
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09        {
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            int BeginRow = 2;
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            int RowCount = dt.Rows.Count;
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            Range rgFill = excelHelper.GotoCell(GotoCell);
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            if (RowCount > BeginRow)
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09            {
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02                excelHelper.InsertRows(rgFill.Row + 1, RowCount - BeginRow); //从定位处的下一行的上面插入新行
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10            }
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            //Fill
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            if (RowCount > 0)
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09            {
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02                excelHelper.DataTableToExcelofObj(dt, excelHelper.IntToLetter(rgFill.Column) + rgFill.Row.ToString(), false);
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10            }
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10        }
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        private void AppendTitle(string titleAppendix)
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09        {
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            if (titleAppendix != null && titleAppendix != string.Empty)
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09            {
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02                try
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09                {
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02                    excelHelper.AppendToExcel(titleAppendix, "Title");
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10                }
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02                catch (Exception ex)
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09                {
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02                    throw new Exception("您没有指定一个Title的单元格", ex);
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10                }
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10            }
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10        }
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09        /// <summary>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        /// 写入内容
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10        /// </summary>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        public virtual void ExportExcelFile()
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09        {
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            ExportExcelFile(string.Empty);
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10        }
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09        /// <summary>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        /// 写入内容并追加标题内容
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        /// </summary>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10        /// <param name="titleAppendix">追加在Title后面的内容(一般如年月份)</param>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        public virtual void ExportExcelFile(string titleAppendix)
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09        {
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            try
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09            {
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02                OpenFile();
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02                AppendTitle(titleAppendix);
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02                FillFile();
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02                ExportFile();
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10            }
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            catch //(Exception ex)
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09            {
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02                CloseFile();
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02                throw;
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10            }
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10        }
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        protected virtual void FillFile()
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09        {
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10        }
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_03    }

.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_编程    /// <summary>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02    ///通用的报表导出类
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02    /// </summary>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02    /// <example>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02    /// <code>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02    /// DataTable dt = InitTableData(); //InitTableData为自定义获取数据表的函数
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02    ///    CommonExport report = new CommonExport(dt, "架空线.xls", "Start"); //Start是Excel一个单元格名称
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02    /// report.ExportExcelFile();
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02    /// </code>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_03    /// </example>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_04    public class CommonExport : BaseReport
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_编程    {
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        private DataTable sourceTable;
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        private string startCellName;
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09        /// <summary>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        /// 构造函数
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        /// </summary>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        /// <param name="sourceTable">要导出的DataTable对象</param>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        /// <param name="excelFileName">相对于根目录的文件路径,如Model/Test.xls</param>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10        /// <param name="startCellName">开始的单元格名称</param>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        public CommonExport(DataTable sourceTable, string excelFileName, string startCellName)
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09        {
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            fileName = Path.Combine(HttpContext.Current.Request.PhysicalApplicationPath, excelFileName);
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            sheetName = Path.GetFileName(fileName);
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            this.sourceTable = sourceTable;
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            this.startCellName = startCellName;
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10        }
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09        /// <summary>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        /// 填写文件
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10        /// </summary>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        protected override void FillFile()
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09        {
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            FillCell(startCellName, sourceTable);
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10        }

.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_编程    /// <summary>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02    /// Excel帮助类
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_03    /// </summary>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_04    internal class ExcelHelper : IDisposable
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_编程    {
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_编程_06        一般的属性变量
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_编程_06        打开工作薄变量
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_编程_06        关闭工作薄变量
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09        /// <summary>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        /// 当前工作薄
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10        /// </summary>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        public Workbook CurrentExcelWorkBook
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09        {
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09            get { return excelWorkbook; }
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09            set { excelWorkbook = value; }
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10        }
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09        /// <summary>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        /// 释放对象内存,推出进程
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        /// </summary>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10        /// <param name="obj"></param>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        private void NAR(object obj)
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09        {
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            try
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09            {
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02                Marshal.ReleaseComObject(obj);
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10            }
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            catch
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09            {
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10            }
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            finally
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09            {
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02                obj = null;
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10            }
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10        }
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        public ExcelHelper()
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09        {
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            StartExcel();
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10        }
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09        /// <summary>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        /// 确定Excel打开是否可见
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        /// </summary>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10        /// <param name="visible">true为可见</param>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        public ExcelHelper(bool visible)
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09        {
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            m_app_visible = visible;
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            StartExcel();
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10        }
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09        /// <summary>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        /// 开始Excel应用程序
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10        /// </summary>
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        private void StartExcel()
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09        {
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            if (excelApp == null)
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09            {
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02                excelApp = new ApplicationClass();
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10            }
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            // Excel是否可见
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            excelApp.Visible = m_app_visible;
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10        }
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        public void Dispose()
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_09        {
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            stopExcel();
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02            GC.SuppressFinalize(this);
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_10        }
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02        
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_编程_06        打开、保存、关闭Excel文件        
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_编程_06        windows窗口,workbook工作薄,worksheet工作区操作
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_02
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_编程_06        行列操作        
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_03    }
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_04

终于写完了,收工
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_326主要研究技术:代码生成工具、会员管理系统、客户关系管理软件、病人资料管理软件、Visio二次开发、酒店管理系统、仓库管理系统等共享软件开发
专注于Winform开发框架/混合式开发框架、Web开发框架、Bootstrap开发框架、微信门户开发框架的研究及应用。
  转载请注明出处:
.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)_开发辅助_326撰写人:伍华聪