Asp.Net使用org.in2bits.MyXls.dll操作excel的应用
首先下载org.in2bits.MyXls.dll(自己的在~\About ASP.Net\Asp.Net操作excel)
添加命名空间:
using org.in2bits.MyXls;
using System.IO;
思路:
添加引用 (using org.in2bits.MyXls)→
创建空xls文档(XlsDocument) →
得到数据 →
创建一个工作页(Worksheet) →
设置xls文档的指定工作页的行(RowInfo) →
设置xls文档的指定工作页的列(ColumnInfo) →
创建列样式创建列时引用(XF) →
列位置排好 →
增加数据(ws.Cells.Add)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using org.in2bits.MyXls;
using System.Web;
using System.IO; namespace LowProtetction.Bizlogic
{
public class DB_CommunityInfo
{
/// <summary>
/// 自定义导出
/// </summary>
/// <param name="Condition">查询条件</param>
public static void DaoChuExecl( string therCondtion)
{
string filename = "自定义导出";
DataView dv = null;
XlsDocument doc = new XlsDocument(); //创建空xls文档
string strSql = "select BelongCity,CommunityCode,CommunityName,CommunityAddress,Remark,AddUserName from CommunityInfo where 1=1 " + therCondtion + "";
dv = Epoint.MisBizLogic2.DB.ExecuteDataView(strSql);
ExcelExport(filename,dv.ToTable(), doc, , ); doc.FileName = HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8);
doc.Send();
}
private static void ExcelExport(string workSheetName, DataTable dt, XlsDocument xls, int startrow, int displaynum)
{ //创建一个工作页为Dome
Worksheet ws = xls.Workbook.Worksheets.Add(workSheetName); #region 设置xls文档的指定工作页的行属性
RowInfo rol1top1 = new RowInfo();
rol1top1.RowHeight = * ;
rol1top1.RowIndexStart = ;
rol1top1.RowIndexEnd = ;
ws.AddRowInfo(rol1top1); RowInfo rol1top2 = new RowInfo();
rol1top2.RowHeight = * ;
rol1top2.RowIndexStart = ;
rol1top2.RowIndexEnd = (ushort)(dt.Rows.Count + ); //到最后一行
ws.AddRowInfo(rol1top2);
#endregion #region 设置xls文档的指定工作页的列属性
//所属城市 1
ColumnInfo colInfo0 = new ColumnInfo(xls, ws);
colInfo0.ColumnIndexStart = ;
colInfo0.ColumnIndexEnd = ;
colInfo0.Width = * ;
ws.AddColumnInfo(colInfo0); //社区编号
ColumnInfo colInfo1 = new ColumnInfo(xls, ws);
colInfo1.ColumnIndexStart = ;
colInfo1.ColumnIndexEnd = ;
colInfo1.Width = * ;
ws.AddColumnInfo(colInfo1); //名称
ColumnInfo colInfo12 = new ColumnInfo(xls, ws);
colInfo12.ColumnIndexStart = ;
colInfo12.ColumnIndexEnd = ;
colInfo12.Width = * ;
ws.AddColumnInfo(colInfo12);
//社区地址
ColumnInfo colInfo2 = new ColumnInfo(xls, ws);
colInfo2.ColumnIndexStart = ;
colInfo2.ColumnIndexEnd = ;
colInfo2.Width = * ;
ws.AddColumnInfo(colInfo2); // 社区介绍
ColumnInfo colInfo3 = new ColumnInfo(xls, ws);
colInfo3.ColumnIndexStart = ;
colInfo3.ColumnIndexEnd = ;
colInfo3.Width = * ;
ws.AddColumnInfo(colInfo3); //登记人
ColumnInfo colInfo6 = new ColumnInfo(xls, ws);
colInfo6.ColumnIndexStart = ;
colInfo6.ColumnIndexEnd = ;
colInfo6.Width = * ;
ws.AddColumnInfo(colInfo6); #endregion #region 创建列样式创建列时引用
XF xfhead = xls.NewXF();
xfhead.HorizontalAlignment = HorizontalAlignments.Centered;
xfhead.VerticalAlignment = VerticalAlignments.Centered;
xfhead.Font.Bold = false;
xfhead.Font.FontName = "宋体";
xfhead.Font.Height = * ;
//自动换行
xfhead.TextWrapRight = true;
#endregion
#region Excel导出的头
//Worksheet,单元格样式,列名,开始行,开始列,结束行,结束列
MergeRegion(ref ws, xfhead, "自定义导出", , , , dt.Columns.Count);
#endregion #region 创建单元格样式
//第一种单元格样式
XF xf = xls.NewXF();
xf.HorizontalAlignment = HorizontalAlignments.Centered;
xf.VerticalAlignment = VerticalAlignments.Centered;
xf.Pattern = ;////设定单元格填充风格。如果设定为0,则是纯色填充
xf.PatternColor = Colors.White;//设定填充线条的颜色
xf.UseBorder = true;
//设置列的上下左右的样式
xf.TopLineStyle = ;
xf.TopLineColor = Colors.Black;
xf.BottomLineStyle = ;
xf.BottomLineColor = Colors.Black;
xf.LeftLineStyle = ;
xf.LeftLineColor = Colors.Black;
xf.RightLineStyle = ;
xf.RightLineColor = Colors.Black;
xf.Font.Bold = true;
xf.Font.FontName = "仿宋";
xf.Font.Height = * ;
//自动换行
xf.TextWrapRight = true; #endregion #region 列位置排好
int ViewStatestartrow = startrow;
//Worksheet,单元格样式,列名,开始行,开始列,结束行,结束列
MergeRegion(ref ws, xf, "所属城市", ViewStatestartrow, , ViewStatestartrow, );
MergeRegion(ref ws, xf, "社区编号", ViewStatestartrow, , ViewStatestartrow, );
MergeRegion(ref ws, xf, "社区名称", ViewStatestartrow, , ViewStatestartrow, );
MergeRegion(ref ws, xf, "社区地址", ViewStatestartrow, , ViewStatestartrow, );
MergeRegion(ref ws, xf, "社区介绍", ViewStatestartrow, , ViewStatestartrow, );
MergeRegion(ref ws, xf, "登记人", ViewStatestartrow, , ViewStatestartrow, ); #endregion //第二种单元格样式
XF xf1 = xls.NewXF();
xf1 = xf;
xf1.Font.Bold = false;
xf1.Font.FontName = "仿宋_GB2312";
xf1.Font.Height = * ;
int ViewStateEndrow = int.Parse(ViewStatestartrow.ToString());
int dtcolcount = dt.Columns.Count; //循环数据表 逐行添加数据
//ViewStatestartrow 为开始行
for (int i = ; i < dt.Rows.Count; i++)
{
int StatRow = i + ViewStatestartrow + ; for (int k = ; k < dt.Columns.Count; k++)
{
//行,列,列值,单元格
ws.Cells.Add(StatRow, k + , dt.Rows[i][k].ToString(), xf1);//给单元格赋值:
}
ViewStateEndrow = StatRow;
} } /// <summary>
/// 格式设置 合并
/// </summary>
/// <param name="ws">Worksheet </param>
/// <param name="xf"> </param>
/// <param name="title"> 列名</param>
/// <param name="startRow">开始行</param>
/// <param name="startCol">开始列</param>
/// <param name="endRow">结束行</param>
/// <param name="endCol">结束列</param>
public static void MergeRegion(ref Worksheet ws, XF xf, string title, int startRow, int startCol, int endRow, int endCol)
{
for (int i = startCol; i <= endCol; i++)
{
for (int j = startRow; j <= endRow; j++)
{
//行,列,列值,单元格
ws.Cells.Add(j, i, title, xf);
}
}
ws.Cells.Merge(startRow, endRow, startCol, endCol);
}
}
}
还有一个重要的一点就是,弹出下载页面的时候你电脑要刷屏,这样是消失不见,而你加了UpdatePanel的话也会刷掉
重点来了
//通过此方法,我们可以把某个位于UpdatePanel中的控件,改为不触发异步Postback,而是触发传统的Postback事件
//不然会把下载框刷新调
((ScriptManager)Master.FindControl("ScriptManager1")).RegisterPostBackControl(btnExport);
Asp.Net使用org.in2bits.MyXls.dll操作excel的应用的更多相关文章
- org.in2bits.MyXls.XlsDocument 生成excel文件 ; 如果想读取模板再另外生成的话,试试 NPOI
优点:不依赖Microsoft组件,在内存中操作excel,读写速度快. 缺点:无法读取模板,只能生成新的excel (我亲自测试是在读取完模板后,不能保存,也不能另存,并且其他人说这个读取还会有 ...
- 根据路径获得文件名以及Aspose.Cells.dll操作excel 以及使用iTextSharp.text.pdf.PdfReader.dll对PDF的操作
string result = Regex.Match(str,@"[^\\]+$").Value;//正则表达式 this.listBox1.Items.Add(Path.Get ...
- ASP.NET Core使用EPPlus操作Excel
1.前言 本篇文章通过ASP.NET Core的EPPlus包去操作Excel(导入导出),其使用原理与NPOI类似,导出Excel的时候不需要电脑上安装office,非常好用 2.使用 新建一个AS ...
- winfrom 操作Excel
利用Aspose.Cells.dll 操作Excel,内容如下: 1.界面设计: 2.逻辑: using System; using System.Collections.Generic; using ...
- asp.net 操作Excel大全
asp.net 操作Excel大全 转:http://www.cnblogs.com/zhangchenliang/archive/2011/07/21/2112430.html 我们在做excel资 ...
- Asp.net操作Excel(终极方法NPOI)(转)
原文:Asp.net操作Excel(终极方法NPOI) 先去官网:http://npoi.codeplex.com/下载需要引入dll(可以选择.net2.0或者.net4.0的dll),然后在网站中 ...
- 2014-08-01 ASP.NET中对SQLite数据库的操作——ADO.NET
今天是在吾索实习的第18天.我主要学习了如何在ASP.NET中对SQLite数据库的操作,其基本操作如下: 添加引用System.Data.SQLite.dll(PS:在网页里面任意找到适合的.NET ...
- ASP.NET操作Excel(终极方法NPOI)
ASP.NET操作Excel已经是老生长谈的事情了,可下面我说的这个NPOI操作Excel,应该是最好的方案了,没有之一,能够帮助开发者在没有安装微软Office的情况下读写Office 97-200 ...
- 一个由正则表达式引发的血案 vs2017使用rdlc实现批量打印 vs2017使用rdlc [asp.net core 源码分析] 01 - Session SignalR sql for xml path用法 MemCahe C# 操作Excel图形——绘制、读取、隐藏、删除图形 IOC,DIP,DI,IoC容器
1. 血案由来 近期我在为Lazada卖家中心做一个自助注册的项目,其中的shop name校验规则较为复杂,要求:1. 英文字母大小写2. 数字3. 越南文4. 一些特殊字符,如“&”,“- ...
随机推荐
- T-SQL练习题
转自:http://www.cnblogs.com/jenrrychen/p/5348546.html 1 - 3 题: 数据表结构: OrderID ProductID OrderDate Sal ...
- 005-ant design -结合echart
原因: ant design本省提供图标组件,是基于 BizCharts ,但是使用有些限制比如:TimelineChart带有时间轴的图表.使用 TimelineChart 组件可以实现带有时间轴的 ...
- java-mybaits-010-mybatis-spring-使用 SqlSession、注入映射器
一. SqlSession概述 在 MyBatis 中,你可以使用 SqlSessionFactory 来创建 SqlSession.一旦你获得一个 session 之后,你可以使用它来执行映射语句, ...
- JS操作符转化数字
在Node.js源代码里,随处可见使用各种符号处理字符串为数字的.可能由于不同人编写,使用的风格也各有不同. 基本上有下面几种. 将字符串转化为数字 + 将一个数字的字符串转化为数字很简单的一种做法就 ...
- 用Python实现的数据结构与算法:双端队列
一.概述 双端队列(deque,全名double-ended queue)是一种具有队列和栈性质的线性数据结构.双端队列也拥有两端:队首(front).队尾(rear),但与队列不同的是,插入操作在两 ...
- mydumper/myloader使用详解
mydumper安装:http://www.cnblogs.com/lizhi221/p/7010174.html mydumper原理:http://www.cnblogs.com/lizhi2 ...
- cocos-lua基础学习(七)Scene类学习笔记
local scene = cc.Scene:create() cc.Director:getInstance():replaceScene( scene ) cc.Director:getInsta ...
- Tcp/Ip:Telnet指令
作用: 1,客户端连接服务端,并对服务端操作: (此功能已逐渐废弃,代替他的远程桌面): 2,telnet ip地址 端口号 用来测试Ip地址下,端口号是否可以被访问
- pyDay10
内容来自廖雪峰的官方网站. 1.python的赋值语句:a, b, c = x, y, z 相当于 a = x, b = y, c = z.(事实上等式右边是一个tuple) 2.获得genarato ...
- python 判断列表字符串元素首尾字符是否相同
def match_words(words): ctr = for word in words: and word[] == word[-]: ctr += return ctr print(matc ...