ASP.NET导出Excel之二

引用一下dll

using org.in2bits.MyXls;

  1 public void DaoChuExeclWenTi(string strwhere, string workSheetName, string strSortExpression = "")
  2         {
  3             if (strSortExpression == "")
  4                 strSortExpression = "Row_ID asc";
  5             strwhere = strwhere.Replace("where", "");
  6             string sqldv = string.Format(@" select row_number() over (order by Row_ID asc)  as binahao,DanWeiName,to_char(BanJDate,‘yyyy-MM-dd‘) as BanJDate,BanJUserName
  7                                    from DJ_DanWeiRYPBQK  where {0} order by {1}", strwhere, strSortExpression);
  8             DataView dv = Epoint.MisBizLogic2.DB.ExecuteDataView(sqldv);
  9             XlsDocument doc = new XlsDocument();
 10             ExcelExport(workSheetName, dv.ToTable(), doc, 4, 6);
 11             string filename = workSheetName + DateTime.Now.ToString() + ".xls";
 12             doc.FileName = HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8);
 13             doc.Send();
 14         }
 15
 16         private void ExcelExport(string workSheetName, DataTable dt, XlsDocument xls, int startrow, int dynamicCol)
 17         {
 18             //创建一个工作页为Dome
 19             Worksheet ws = xls.Workbook.Worksheets.Add(workSheetName);
 20             #region  设置xls文档的指定工作页的行属性
 21             //设置行高
 22             RowInfo rol1 = new RowInfo();
 23             rol1.RowHeight = 32 * 20;
 24             rol1.RowIndexStart = 0;
 25             rol1.RowIndexEnd = 1;
 26             ws.AddRowInfo(rol1);
 27             //设置行高
 28             RowInfo rol2 = new RowInfo();
 29             rol2.RowHeight = 16 * 20;
 30             rol2.RowIndexStart = 1;
 31             rol2.RowIndexEnd = 2;
 32             ws.AddRowInfo(rol2);
 33             //设置行高
 34             RowInfo rol3 = new RowInfo();
 35             rol3.RowHeight = 32 * 20;
 36             rol3.RowIndexStart = 2;
 37             rol3.RowIndexEnd = (ushort)(dt.Rows.Count + 5);
 38             ws.AddRowInfo(rol3);
 39             ColumnInfo colInfo = new ColumnInfo(xls, ws);
 40             #endregion
 41
 42             #region   设置xls文档的指定工作页的列属性
 43             //序号 0
 44             colInfo.ColumnIndexStart = 0;
 45             colInfo.ColumnIndexEnd = 1;
 46             colInfo.Width = 50 * 50;
 47             ws.AddColumnInfo(colInfo);
 48             // 单位名称
 49             ColumnInfo colInfoL = new ColumnInfo(xls, ws);
 50             colInfoL.ColumnIndexStart = 1;
 51             colInfoL.ColumnIndexEnd = 2;
 52             colInfoL.Width = 50 * 200;
 53             ws.AddColumnInfo(colInfoL);
 54             // 办件时间
 55             ColumnInfo colInfo1 = new ColumnInfo(xls, ws);
 56             colInfo1.ColumnIndexStart = 2;
 57             colInfo1.ColumnIndexEnd = 3;
 58             colInfo1.Width = 20 * 200;
 59             ws.AddColumnInfo(colInfo1);
 60             //办件人姓名
 61             ColumnInfo colInfoX = new ColumnInfo(xls, ws);
 62             colInfoX.ColumnIndexStart = 3;
 63             colInfoX.ColumnIndexEnd = 4;
 64             colInfoX.Width = 20 * 200;
 65             ws.AddColumnInfo(colInfoX);
 66
 67             #endregion
 68
 69             #region 创建单元格样式
 70             XF xfhead = xls.NewXF();
 71             xfhead.HorizontalAlignment = HorizontalAlignments.Centered;
 72             xfhead.VerticalAlignment = VerticalAlignments.Centered;
 73             xfhead.Font.Bold = false;
 74             xfhead.Font.FontName = "宋体";
 75             xfhead.Font.Height = 26 * 20;
 76             //自动换行
 77             xfhead.TextWrapRight = true;
 78             XF xfsec = xfhead;
 79             xfsec.HorizontalAlignment = HorizontalAlignments.Centered;
 80
 81             XF xf = xls.NewXF();
 82             xf.HorizontalAlignment = HorizontalAlignments.Centered;
 83             xf.VerticalAlignment = VerticalAlignments.Centered;
 84             xf.Pattern = 0;
 85             xf.PatternColor = Colors.White;
 86             xf.UseBorder = false;
 87             xf.TopLineStyle = 1;
 88             xf.TopLineColor = Colors.Black;
 89             xf.BottomLineStyle = 1;
 90             xf.BottomLineColor = Colors.Black;
 91             xf.LeftLineStyle = 1;
 92             xf.LeftLineColor = Colors.Black;
 93             xf.RightLineStyle = 1;
 94             xf.RightLineColor = Colors.Black;
 95             xf.Font.Bold = false;
 96             xf.Font.FontName = "宋体";
 97             xf.Font.Height = 12 * 20;
 98             //自动换行
 99             xf.TextWrapRight = true;
100
101             #endregion
102             int ViewStatestartrow = startrow;
103             //Worksheet,单元格样式,列名,开始行,开始列,结束行,结束列
104             MergeRegion(ref ws, xfhead, workSheetName, 1, 1, 1, dt.Columns.Count);
105             MergeRegion(ref ws, xf, "编号", ViewStatestartrow - 2, 1, ViewStatestartrow - 1, 1);
106             MergeRegion(ref ws, xf, "单位名称", ViewStatestartrow - 2, 2, ViewStatestartrow - 1, 2);
107             MergeRegion(ref ws, xf, "办件时间", ViewStatestartrow - 2, 3, ViewStatestartrow - 1, 3);
108             MergeRegion(ref ws, xf, "办件人姓名", ViewStatestartrow - 2, 4, ViewStatestartrow - 1, 4);
109
110             int ViewStateEndrow = startrow + 1;
111             //插入数据是区分表头控件变量重新定义为xf1
112             XF xf1 = xls.NewXF();
113             xf1 = xf;
114             xf1.Font.Bold = false;
115             xf1.Font.Height = 12 * 20;
116             int HeBingStat = 0;
117             for (int i = 0; i < dt.Rows.Count; i++)
118             {
119                 int statRow = i + ViewStatestartrow;
120                 for (int k = 0; k < dt.Columns.Count; k++)
121                 {
122                     ws.Cells.Add(statRow, k + 1, dt.Rows[i][k].ToString(), xf1);
123                 }
124                 ViewStateEndrow = startrow;
125             }
126
127         }
128         public static void MergeRegion(ref Worksheet ws, XF xf, string title, int startRow, int startCol, int endRow, int endCol)
129         {
130             for (int i = startCol; i <= endCol; i++)
131             {
132                 for (int j = startRow; j <= endRow; j++)
133                 {
134                     //行,列,列值,单元格
135                     ws.Cells.Add(j, i, title, xf);
136                 }
137             }
138             ws.Cells.Merge(startRow, endRow, startCol, endCol);
139         }
时间: 2024-10-13 02:48:06

ASP.NET导出Excel之二的相关文章

Asp.net导出Excel乱码的解决方法

通过跟踪Asp.net服务器代码,没有乱码,然而导出Excel到浏览器后,打开时出现乱码. 解决方法是添加编码格式的前缀字节码:Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble()); ? 1 2 3 4 5 6 7 8 9 10 11 12 13 Response.Clear(); Response.AddHeader("content-disposition","attachment;filenam

Asp.net导出Excel(HTML输出方法)

主要思路: 实例化Gridview,将值绑定后输出...(用烂了的方法) 贴上核心代码: public static void ExportToExcel(DataTable dataList, string[] fields, string[] headTexts, string title, string TableName) { GridView gvw = new GridView(); int ColCount, i; //如果筛选的字段和对应的列头名称个数相对的情况下只导出指定的字段

[转] Asp.Net 导出 Excel 数据的9种方案

湛刚 de BLOG 原文地址 Asp.Net 导出 Excel 数据的9种方案 简介 Excel 的强大之处在于它不仅仅只能打开Excel格式的文档,它还能打开CSV格式.Tab格式.website table 等多钟格式的文档.它具备自动识别行号,字符,格式化数字等功能,例如:如果你在Excel 单元格中输入数字 "123456789012" 会自动转化为"1.23457E+11". 背景介绍 正因为Excel的强大和易用,大家都喜欢将数据导出为 Excel 备

ASP.NET导出EXCEL类

最新ASP.NET导出EXCEL类 说明:可以导出ASP.NET页面和DATAGRID(WebControl)数据,可以导出表单头 using System;using System.Data;using System.Text;using System.Web;using System.Web.UI;using System.Diagnostics;using System.Web.UI.WebControls;using System.Web.UI.HtmlControls;using Sy

Asp.net导出Excel续章(自定义合并单元格,非Office组件)

结合上次写的导出Excel方法,这次上头要求我将列头进行一下合并 以前的效果: 改进后的效果: 在上篇文章中写到了Excel的导出方法,这次为了避免在生产环境中使用Office组件,服务器各种权限配置的麻烦,这次就不使用Office组件来生成Excel了. 上篇文章:Asp.net导出Excel(HTML输出) 关键代码如下图: 说道这里,其实主要思路已经很明显了. 在数据绑定结束后,重新绘制表头替换掉原来的表头就行了. TableCell自定义表头的时候是table标签的,很方便. 另外发现了

asp.net 导出excel 中文乱码解决方法 (转)

用我转载的上一篇文章 Asp.net中把DataTable或DataGrid导出为Excel 导出的文档,中文有乱码现象,其实要解决中文乱码很简单,设置一下字符集.如下: // 设置编码和附件格式 curContext.Response.ContentType = "application/vnd.ms-excel"; curContext.Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312&

ASP.NET 导出Excel时,某单元格内一部分文字加粗加下划线

一.简述 在项目中的某个导出Excel的功能就需要在某个单元格中使一部分文字加粗和加下划线. 二.内容 在这个导出Excel的功能里用到了 Microsoft.Office.Interop.Excel 这个类库. 然后操作单元格: Microsoft.Office.Interop.Excel.Range cells = (Microsoft.Office.Interop.Excel.Range)xlsWorkSheet.Cells; cells["1", "A"]

ASP.NET 导出Excel时,出现CLSID {00024500-0000-0000-C000-000000000046} ,拒绝访问。

一.简述 在项目中要用到Microsoft.Office.Interop.Excel类库来导出Excel,就出现了下面的问题,拒绝访问.嗯,感觉就是权限问题. 二.内容 既然有了问题,那么就解决吧. 1.从IIS中设置 打开IIS,找到网站用的应用程序池,点击右键 => 高级设置 => 标识 设置标识 自定义账户,设置 然后填上有足够权限的用户名.密码.     确定 2.从项目中的Web.config文件设置 只要在<system.web>节点下加上 <identity i

ASP.NET导出Excel(利用NPOI和EPPlus库,无需安装Office)

网上提供了很多Asp.net中操作Excel的方法,其中大部分是调用微软的Office组件,下面提供三个无须安装Office即可从Asp.net输出Excel的方法. 1 简单方法 //下面代码输出的Excel有三列(姓名.年龄.性别)//列之间用\t隔开StringWriter sw = new StringWriter();sw.WriteLine("姓名\t年龄\t性别"); //Excel表格的列标题 sw.WriteLine("张三\t29\t男"); /