第一步:需要引用org.in2bits.MyXls程序集到使用页面

第二步:前台代码

<asp:Button ID="LeadingOut" runat="server" Text="导出"  onclick="LeadingOut_Click" />

第三步:在aspx文件的后台写按钮的点击事件

protected void LeadingOut_Click(object sender, EventArgs e)
{

DataSet ds = consumableBll.GetList(" IsDel='false'");//要导出的表数据

if (null == ds.Tables[0])
return;

//生成Excel
ExcelFile excel = new ExcelFile();//ExcelFile 是公共类要解析
//设置列属性
excel.SetColumnInfo(true, 90 * 60, 0, 15);
excel.SetColumnInfo(true, 90 * 60, 4, 4);
excel.SetColumnInfo(true, 90 * 60, 8, 8);

//设置单元格格式
XF cellXF = excel.SetXF(true, false, HorizontalAlignments.Centered, VerticalAlignments.Centered);
XF cellXF1 = excel.SetXF(false, true, HorizontalAlignments.Centered, VerticalAlignments.Centered);
cellXF1.Pattern = 1;
cellXF1.PatternBackgroundColor = Colors.Red;

//红色Default0A;绿Default0B,浅绿Default0F,灰色Default16,紫色Default18,墨绿:Default26,淡蓝色:Default28,浅蓝Default29
cellXF1.PatternColor = Colors.Default28;
//设置表头信息
List<string> headInfo = new List<string>();

headInfo.Add("名称");//要导出的字段
headInfo.Add("数量");
headInfo.Add("有效期");

excel.SetHeader(1, 1, cellXF1, headInfo);
int icount = 1;
int hcount = 1;
foreach (DataRow row in ds.Tables[0].Rows)
{
excel.SetDataValue(++icount, ref hcount, cellXF,

row["Name"].ToString(),//要导出的数据字段对应
row["Number"].ToString(),
row["AddTime"].ToString()

);
hcount = 1;
}
string fileName = DateTime.Now.ToString("yyyyMMddhhmmss");
Response.Clear();
Response.ClearHeaders();
Response.Buffer = true;
Response.Charset = "UTF-8";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
Response.ContentType = "application/octet-stream";
Response.AppendHeader("Content-Disposition",
"attachment;filename=" + fileName + ".xls");
Response.BinaryWrite(excel.Download());
HttpContext.Current.Response.End();
}

第四步:生成公共类ExcelFile

using System.Collections.Generic;
using System.Reflection;
using org.in2bits.MyXls;

namespace WebUI.Common
{
/// <summary>
/// Excel文件帮助类
/// </summary>
public class ExcelFile
{
protected XlsDocument _document;
protected Worksheet _sheet;
public ExcelFile()
{
_document = new XlsDocument();
_sheet = _document.Workbook.Worksheets.Add("Sheet1");
}

/// <summary>
/// 设置列属性
/// </summary>
/// <param name="collapsed">设置列的属性</param>
/// <param name="width">宽度</param>
/// <param name="columnIndexStart">开始列</param>
/// <param name="columnIndexEnd">结束列</param>
public void SetColumnInfo(bool collapsed, ushort width, ushort columnIndexStart, ushort columnIndexEnd)
{
ColumnInfo cInfo = new ColumnInfo(_document, _sheet);
cInfo.Collapsed = collapsed;
cInfo.Width = width;
cInfo.ColumnIndexStart = columnIndexStart;
cInfo.ColumnIndexEnd = columnIndexEnd;
_sheet.AddColumnInfo(cInfo);
}

/// <summary>
/// 设置单元格属性(可扩展可重构)
/// </summary>
/// <param name="bold">是否加粗</param>
/// <param name="horizontalAlignments">水平对齐方式</param>
/// <param name="verticalAlignments">垂直对齐方式</param>
public XF SetXF(bool textWrapRight = false, bool bold = false, HorizontalAlignments horizontalAlignments = HorizontalAlignments.Default, VerticalAlignments verticalAlignments = VerticalAlignments.Default)
{
//设置文档列属性
XF cellXF = _document.NewXF();//自动换行
cellXF.TextWrapRight = textWrapRight;

if (bold) cellXF.Font.Bold = bold;
cellXF.HorizontalAlignment = horizontalAlignments;
cellXF.VerticalAlignment = verticalAlignments;
return cellXF;
}

/// <summary>
/// 设置单元格值
/// </summary>
/// <param name="i">行</param>
/// <param name="j">列</param>
/// <param name="value">值</param>
/// <param name="bold">是否粗体</param>
private void SetCells(int i,int j,string value,XF cellXF)
{
if(_document.Workbook.Worksheets.Count == 0)
{
_sheet= _document.Workbook.Worksheets.Add("Sheet1");
}
Cells cells = _document.Workbook.Worksheets[0].Cells;
cells.Add(i, j, value, cellXF);
}

/// <summary>
/// 设置单元格值
/// </summary>
/// <param name="i">行</param>
/// <param name="j">列</param>
/// <param name="value">值</param>
/// <param name="bold">是否粗体</param>
private void SetCells(int i, int j, string value)
{
if (_document.Workbook.Worksheets.Count == 0)
{
_sheet = _document.Workbook.Worksheets.Add("Sheet1");
}
Cells cells = _document.Workbook.Worksheets[0].Cells;

cells.Add(i, j, value);
}

/// <summary>
/// 设置表头
/// </summary>
/// <param name="row">开始行</param>
/// <param name="column">开始列</param>
/// <param name="headers">表头内容</param>
public void SetHeader(int startRow,int startColumn,XF cellXF,params string[] headers)
{
if(headers!= null)
{
for (int i = 0; i < headers.Length; i++)
{
SetCells(startColumn, startColumn + i, headers[i], cellXF);
}
}
}

/// <summary>
/// 设置表头
/// </summary>
/// <param name="row">开始行</param>
/// <param name="column">开始列</param>
/// <param name="headers">表头内容</param>
public void SetHeader(int startRow,int startColumn,XF cellXF,List<string> headers)
{
if(headers!= null)
{
for (int i = 0; i < headers.Count; i++)
{
SetCells(startRow, startColumn + i, headers[i], cellXF);
}
}
}

/// <summary>
/// 设置表头
/// </summary>
/// <param name="row">开始行</param>
/// <param name="column">开始列</param>
/// <param name="headers">表头内容</param>
public void SetHeader(int startRow, int startColumn, List<string> headers)
{
if (headers != null)
{
for (int i = 0; i < headers.Count; i++)
{
SetCells(startRow, startColumn + i, headers[i]);
}
}
}

/// <summary>
/// 设置数据
/// </summary>
/// <typeparam name="T">数据类型</typeparam>
/// <param name="row">开始行</param>
/// <param name="column">开始列</param>
/// <param name="model">数据对象</param>
/// <param name="properties">数据对象填充属性</param>
public void SetDataProperties<T>(int row, int column, XF cellXF, T model, params string[] properties) where T : class
{
if(model==null || properties == null)
return;

for (int i = 0; i < properties.Length; i++)
{
PropertyInfo property = typeof (T).GetProperty(properties[i], BindingFlags.Public);
if(property!=null)
{
SetCells(row, column + i, property.GetValue(model, null).ToString(),cellXF);
}
}
}

/// <summary>
/// 设置单元格内容
/// </summary>
/// <param name="row">开始行</param>
/// <param name="column">开始列</param>
/// <param name="cellXF">单元格属性</param>
/// <param name="values">值</param>
public void SetDataValue(int row, ref int column, XF cellXF, params string[] values)
{
if (values == null)
return;

for (int i = 0; i < values.Length; i++)
{
SetCells(row, column + i, values[i],cellXF);
}
column += values.Length;
}

/// <summary>
/// 设置单元格内容
/// </summary>
/// <param name="row">开始行</param>
/// <param name="column">开始列</param>
/// <param name="cellXF">单元格属性</param>
/// <param name="values">值</param>
public void SetDataValue(int row, ref int column, params string[] values)
{
if (values == null)
return;

for (int i = 0; i < values.Length; i++)
{
SetCells(row, column + i, values[i]);
}
column += values.Length;
}

/// <summary>
/// 设置数据
/// </summary>
/// <typeparam name="T">数据类型</typeparam>
/// <param name="row">开始行</param>
/// <param name="column">开始列</param>
/// <param name="models">数据对象列表</param>
/// <param name="properties">数据对象填充属性</param>
public void SetData<T>(int row, int column,XF cellXF, List<T> models, params string[] properties) where T : class
{
if (models == null || models.Count== 0 || properties == null)
return;

for (int i = 0; i < properties.Length; i++)
{
PropertyInfo property = typeof(T).GetProperty(properties[i], BindingFlags.Public);
if (property != null)
{
for (int j = 0; j < models.Count; j++)
{
SetCells(row + j, column + i, property.GetValue(models[i], null).ToString(),cellXF);
}
}
}
}

/// <summary>
/// 返回Excel文件字节符
/// </summary>
/// <returns></returns>
public byte[] Download()
{
return _document.Bytes.ByteArray;
}
}
}

在asp.net中导出表格Excel数据的更多相关文章

  1. asp.net中导出Excel的方法

    一.asp.net中导出Excel的方法: 本文转载 在asp.net中导出Excel有两种方法,一种是将导出的文件存放在服务器某个文件夹下面,然后将文件地址输出在浏览器上:一种是将文件直接将文件输出 ...

  2. ASP.net中导出Excel的简单方法介绍

    下面介绍一种ASP.net中导出Excel的简单方法 先上代码:前台代码如下(这是自己项目里面写的一点代码先贴出来吧) <div id="export" runat=&quo ...

  3. C# asp.net中导出Excel表时总出现"只能在执行 Render() 的过程中调用 RegisterForEventValidation

    C# asp.net中导出Excel表时总出现"只能在执行 Render() 的过程中调用 RegisterForEventValidation 后台添加以下方法:/// <summa ...

  4. asp.net中导出Execl的方法

    一.asp.net中导出Execl的方法: 在 asp.net中导出Execl有两种方法,一种是将导出的文件存放在服务器某个文件夹下面,然后将文件地址 输出在浏览器上:一种是将文件直接将文件输出流写给 ...

  5. 设置导出的excel数据

    /** * 设置导出的excel数据 * @param type $objPHPExcel * @param type $colModel * @param type $grid */public f ...

  6. ASP.NET中重复表格列合并的实现方法(转自脚本之家)

    这几天做一个项目有用到表格显示数据的地方,客户要求重复的数据列需要合并,就总结了一下.NET控件GridView 和 Repeater 关于重复数据合并的方法. 这是合并之前的效果: 合并之后的效果图 ...

  7. asp.net中导出excel数据的方法汇总

    1.由dataset生成 代码如下 复制代码 public void CreateExcel(DataSet ds,string typeid,string FileName)    {    Htt ...

  8. vue中把table导出表格excel

    1.首先下载2个js,我的百度网盘有 2.安装依赖 npm install -S file-saver xlsx(这里其实安装了2个依赖) npm install -D script-loader 3 ...

  9. asp.net core导出导入excel

    使用NPOI导入导出excel,已经封装好Action可以直接调用 导出 效果图 使用方法 定义导出实体 class Student { public int Id { get; set; } pub ...

随机推荐

  1. EClipse开发NDK流程

    EClipse开发NDK流程(现在studio也在2.2之后支持了非常简单,只要创建项目的时候勾选c++支持就可以了)   什么情况下使用ndk,1.保护代码,java很容易反编译,c/c++反汇编比 ...

  2. C# 如何获取错误所在行数

    两种方法,一种是利用error.StackTrace,另外一种是try-catch找到错误行数,具体如下: 一.error.StackTrace代码 int i = ex.StackTrace.Ind ...

  3. ajax请求或者页面需要缓存,代码如下

    缓存页面代码 1 private void setClientCache(HttpServletResponse response, int maxAgeSec) 2 { 3 long maxAgeM ...

  4. sql 删除两条完全相同的记录

    delete a from ( select *,ps=row_number()over(PARTITION by cCaption  order by getdate()) from AA_Colu ...

  5. EasyShortcut Easyshortcut easyShortcut 简介

    关于EasyShortcut Easyshortcut easyShortcut 简介: 参考: http://chunsheng.me/EasyShortcut/

  6. javaweb分页思想

    web上的分页分析   在web编写中的经常会遇到,数据需要分页的情况.当数据量不是很大的时候.   可以直接使用js来分页.可以很好的提高性能.简化代码.数据量大的时候.还是需要使用java的分页类 ...

  7. 【劳动节江南白衣Calvin 】我的后端开发书架2015

    自从技术书的书架设定为”床底下“之后,又多了很多买书的空间.中国什么都贵,就是书便宜. 不定期更新,在碎片化的阅读下难免错评. 书架主要针对Java后端开发,书单更偏爱那些能用简短流畅的话,把少壮不努 ...

  8. dedecms友情链接flink的调用方法

    标记名称:flink[标签简介][功能说明]:用于获取友情链接,其对应后台文件为"includetaglibflink.lib.php".[适用范围]:全局标记,适用V55,V56 ...

  9. NAS4Free 安装配置(三)基本配置

    基本配置 在浏览器中输入地址,进入管理界面(我的是http://192.168.0.10) 登录界面 初始用户名:admin,初始密码:nas4free 首页 进入基本配置 这里可以选择语言,有中文, ...

  10. keil c51中C程序的启动过程

    汇编是从org 0000h开始启动,那么keil c51是如何启动main()函数的?keil c51有一个启动程序startup.a51,它总是和c程序一起编译和链接.下面看看它和main()函数是 ...