MyXls导出Excel时在Web页即时生成原生Excel文件

关于MyXls生成Excel文件,本文不赘述。本文主要介绍在Web条件下利用MyXls即时生成原生Excel的方法。

至于NPOI方法即时生成Excel方法,请参考http://www.cnblogs.com/downmoon/archive/2011/04/16/2017603.html

需要引用dll,org.in2bits.MyXls,下载地址:http://sourceforge.net/projects/myxls/files/MyXls/

并在头部添加using org.in2bits.MyXls;

假如一个DataTable已经获取,那么方法如下:

一、生成本地文件:

复制代码
  
  
/// <summary>
/// 导出Excel
/// </summary>
public static void ExportExcelForPercent( string sheetName, string xlsname, int areaid, DateTime dt)
{

DataTable table
= GetDataTableForPercent(areaid, dt);

if (table == null || table.Rows.Count == 0 ) { return ; }
XlsDocument xls
= new XlsDocument();
Worksheet sheet
= xls.Workbook.Worksheets.Add(sheetName);

// 填充表头
foreach (DataColumn col in table.Columns)
{
sheet.Cells.Add(
1 , col.Ordinal + 1 , col.ColumnName);
}

// 填充内容
for ( int i = 0 ; i < table.Rows.Count; i ++ )
{
for ( int j = 0 ; j < table.Columns.Count; j ++ )
{
sheet.Cells.Add(i
+ 2 , j + 1 , table.Rows[i][j].ToString());
}
}

// 保存
xls.FileName = xlsname;
xls.Save();
xls
= null ;
}
复制代码

二、web条件下利用MemoryStream即时生成:

复制代码
  
  
/// <summary>
/// Myxls导出Excel
/// </summary>
public static void ExportExcelForPercentForWeb( string sheetName, string xlsname, int areaid, DateTime curdate)
{

XlsDocument xls
= new XlsDocument();
Worksheet sheet
= xls.Workbook.Worksheets.Add(sheetName);
try
{
DataTable table
= GetDataTableForPercent(areaid, curdate);

if (table == null || table.Rows.Count == 0 ) { return ; }
// XlsDocument xls = new XlsDocument();
// Worksheet sheet = xls.Workbook.Worksheets.Add(sheetName);

// 填充表头
foreach (DataColumn col in table.Columns)
{
sheet.Cells.Add(
1 , col.Ordinal + 1 , col.ColumnName);
}

// 填充内容
for ( int i = 0 ; i < table.Rows.Count; i ++ )
{
for ( int j = 0 ; j < table.Columns.Count; j ++ )
{
sheet.Cells.Add(i
+ 2 , j + 1 , table.Rows[i][j].ToString());
}
}

// 保存
// xls.FileName = xlsname;
// xls.Save();

#region 客户端保存
using (MemoryStream ms = new MemoryStream())
{
xls.Save(ms);
ms.Flush();
ms.Position
= 0 ;
sheet
= null ;
xls
= null ;
HttpResponse response
= System.Web.HttpContext.Current.Response;
response.Clear();

response.Charset
= " UTF-8 " ;
response.ContentType
= " application/vnd-excel " ; // "application/vnd.ms-excel";
System.Web.HttpContext.Current.Response.AddHeader( " Content-Disposition " , string .Format( " attachment; filename= " + xlsname));
// System.Web.HttpContext.Current.Response.WriteFile(fi.FullName);
byte [] data = ms.ToArray();
System.Web.HttpContext.Current.Response.BinaryWrite(data);

}

#endregion
// xls = null;
}
catch (Exception ex)
{
}
finally
{
sheet
= null ;
xls
= null ;
}

}
复制代码

三、调用方法:

复制代码
  
  
private void SaveFile( int year, int month, int Areaid)
{

try
{
string fileName = string .Empty;
fileName
= SQLParser.RandomKey( 10001 , 99999 ) + " .xls " ;

string sheetname = string .Format( " 瞬时达网络有限公司{0}[{1}年{2}月]销售表 " , (Areaid == 1 ) ? " 北方区 " : " 南方区 " , year, month);
DateTime dt
= new DateTime(year, month, Areaid);
ExcelHelper.ExportExcelForPercentForWeb(sheetname, fileName, Areaid, dt);
// Page.Response.Write("<script>window.close();</script>");
// return;
}
catch
{
}
}
复制代码

生成效果:

邀月工作室

邀月工作室

myXls下载地址:http://sourceforge.net/projects/myxls/files/MyXls/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值