首先下载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的应用的更多相关文章

  1. org.in2bits.MyXls.XlsDocument 生成excel文件 ; 如果想读取模板再另外生成的话,试试 NPOI

    优点:不依赖Microsoft组件,在内存中操作excel,读写速度快.   缺点:无法读取模板,只能生成新的excel (我亲自测试是在读取完模板后,不能保存,也不能另存,并且其他人说这个读取还会有 ...

  2. 根据路径获得文件名以及Aspose.Cells.dll操作excel 以及使用iTextSharp.text.pdf.PdfReader.dll对PDF的操作

    string result = Regex.Match(str,@"[^\\]+$").Value;//正则表达式 this.listBox1.Items.Add(Path.Get ...

  3. ASP.NET Core使用EPPlus操作Excel

    1.前言 本篇文章通过ASP.NET Core的EPPlus包去操作Excel(导入导出),其使用原理与NPOI类似,导出Excel的时候不需要电脑上安装office,非常好用 2.使用 新建一个AS ...

  4. winfrom 操作Excel

    利用Aspose.Cells.dll 操作Excel,内容如下: 1.界面设计: 2.逻辑: using System; using System.Collections.Generic; using ...

  5. asp.net 操作Excel大全

    asp.net 操作Excel大全 转:http://www.cnblogs.com/zhangchenliang/archive/2011/07/21/2112430.html 我们在做excel资 ...

  6. Asp.net操作Excel(终极方法NPOI)(转)

    原文:Asp.net操作Excel(终极方法NPOI) 先去官网:http://npoi.codeplex.com/下载需要引入dll(可以选择.net2.0或者.net4.0的dll),然后在网站中 ...

  7. 2014-08-01 ASP.NET中对SQLite数据库的操作——ADO.NET

    今天是在吾索实习的第18天.我主要学习了如何在ASP.NET中对SQLite数据库的操作,其基本操作如下: 添加引用System.Data.SQLite.dll(PS:在网页里面任意找到适合的.NET ...

  8. ASP.NET操作Excel(终极方法NPOI)

    ASP.NET操作Excel已经是老生长谈的事情了,可下面我说的这个NPOI操作Excel,应该是最好的方案了,没有之一,能够帮助开发者在没有安装微软Office的情况下读写Office 97-200 ...

  9. 一个由正则表达式引发的血案 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. 一些特殊字符,如“&”,“- ...

随机推荐

  1. SWIG和PInvoke学习(1)

    1. 简介 SWIG是个帮助使用C或者C++编写的软件能与其它各种高级编程语言进行嵌入联接的开发工具. SWIG能应用于各种不同类型的语言包括常用脚本编译语言例如Perl, PHP, Python, ...

  2. 在jQuery中解决事件冒泡问题

    <pre name="code" class="html">事件会按照DOM层次结构像水泡一样不断向上直至顶端 解决方法:在事件处理函数中返回fal ...

  3. 7.2 Models -- Defining Models

    一.概述 1. 模型是一个类,它定义了你呈现给用户的数据的属性和行为.用户希望如果他们离开你的应用程序,并返回后(或如果他们刷新页面)看到的任何东西应该被一个model代表. 2. 确保在ember. ...

  4. C++类型前置声明

    前言 本文总结了c++中前置声明的写法及注意事项,列举了哪些情况可以用前置声明来降低编译依赖. 前置声明的概念 前置声明:(forward declaration), 跟普通的声明一样,就是个声明, ...

  5. KVM入门

    KVM KVM(Kernel-based Virtual Machine)是众多虚拟化技术之一,它是Linux内核中的一个模块,该模块依赖于CPU,如果CPU支持虚拟化,那么该模块才可以被加载.KVM ...

  6. 《Java入门第二季》第五章 阶段练习

    /** * ┏┓ ┏┓ * ┏┛┻━━━┛┻┓ * ┃ ┃ * ┃ ━ ┃ * ┃ > < ┃ * ┃ ┃ * ┃... ⌒ ... ┃ * ┃ ┃ * ┗━┓ ┏━┛ * ┃ ┃ Cod ...

  7. pyDay12

    内容来自廖雪峰的官方网站. 1.可迭代对象(Iterable):可以直接作用于for循环的对象. 2.集合数据类型:如list.tuple.dict.set.str等. 3.generator:包括生 ...

  8. bzoj1618 / P2918 [USACO08NOV]买干草Buying Hay(完全背包)

    P2918 [USACO08NOV]买干草Buying Hay 显然的完全背包 设$f[i]$为买$i$磅干草的最小代价 搞搞完全背包即可 注意到最后可能买的干草超出范围,但是价格可能更低. 于是我们 ...

  9. FromBottomToTop第十三周项目博客

    FromBottomToTop第十三周项目博客 本周项目计划 完成游戏核心算法以及界面相关类和怪物类 项目进展 用户可选择游戏模式,共有20张不同的地图. 炮台的建立和升级. 小怪的路径算法. 参考资 ...

  10. github上fork别人的代码之后,如何保持和原作者同步的更新

    1.从自己fork之后的版本库clone $  git clone -o chucklu https://github.com/chucklu/Hearthstone-Deck-Tracker.git ...