基于 Aspose.Cells for .NET 8.5.0 工具类,

Aspose.Cells for .NET 8.5.0 这个自己去CSDN下载里面有破解的,没有破解的导出excel的时候会(Aspose.Cells)这样的logo

var workbook = new Workbook(fstream, loadOptions); 
创建Workbook对象建议传入需要格式:new LoadOptions(LoadFormat.Xlsx)(可以指定自己需要的格式),
不然后面使用workbook解析Excel和导出Excel的时候会报格式化出错,官网里面建议传入需要格式的LoadOptions。 老版本的Aspose.Cells 使用的是save和load的时候传入loadOptions,这些方法在高版本中已经过期了,
高版本是在创建对象的时候传入的。
response.ContentType = "application/ms-excel"; 自己设置需要导出的格式,
另外附上ContentType 对照表:http://tool.oschina.net/commons  
/// <summary>
/// AsposeExcel 帮助类
/// </summary>
public class AsposeExcelUtil
{
private const int BufferSize = 0x1000;
/// <summary>
/// 读取Excel文件
/// </summary>
/// <param name="fullFilename">文件地址</param>
/// <returns></returns>
public static System.Data.DataTable ReadExcel(String fullFilename)
{
return ReadExcel(fullFilename, new LoadOptions(LoadFormat.Xlsx));
} /// <summary>
/// 读取Excel文件
/// </summary>
/// <param name="fullFilename">文件地址</param>
/// <param name="loadOptions">参数信息【如:读取包含密码的excel】</param>
/// <returns></returns>
public static System.Data.DataTable ReadExcel(String fullFilename, LoadOptions loadOptions)
{
var fstream = new System.IO.FileStream(fullFilename, FileMode.Open);
var workbook = new Workbook(fstream, loadOptions); Worksheet sheet = workbook.Worksheets[]; Cells cells = sheet.Cells;
return cells.ExportDataTableAsString(, , cells.MaxDataRow + , cells.MaxDataColumn + , true);
} private static void MakeHeader(Worksheet sheet, DataTable dt)
{
for (int col = ; col < dt.Columns.Count; col++)
{
Cell cell = sheet.Cells[, col];
cell.SetStyle(MakeHealStyle());
}
} /// <summary>
/// 创建默认的excel头样式
/// </summary>
/// <returns></returns>
private static Style MakeHealStyle()
{
var style = new Style();
style.Font.Name = "微软雅黑";//文字字体
style.Font.Size = ;//文字大小
style.IsLocked = false;//单元格解锁
style.Font.IsBold = true;//粗体
style.Font.IsBold = true;
style.Pattern = BackgroundType.Solid; //设置背景样式
style.IsTextWrapped = true;//单元格内容自动换行
style.SetBorder(BorderType.TopBorder, CellBorderType.Thin, Color.Black);
style.SetBorder(BorderType.BottomBorder, CellBorderType.Thin, Color.Black);
style.SetBorder(BorderType.RightBorder, CellBorderType.Thin, Color.Black);
style.HorizontalAlignment = TextAlignmentType.Center;//文字居中
style.IsTextWrapped = false;//setTextWrapped
return style;
} private static void MakeBody(Worksheet sheet, DataTable dt)
{
for (int r = ; r < dt.Rows.Count; r++)
{
for (int c = ; c < dt.Columns.Count; c++)
{
sheet.Cells[r + , c].PutValue(dt.Rows[r][c].ToString());
}
}
} /// <summary>
/// 把dt转换成excel的字节数组【不建议使用】
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static Byte[] DatatableToExcelBytes(DataTable dt)
{
try
{
return DatatableToExcelStream(dt).ToArray();
}
catch (Exception e)
{
return null;
}
} /// <summary>
/// 把dt转换成excel的流
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static MemoryStream DatatableToExcelStream(DataTable dt)
{
try
{
var workbook = new Workbook();
var sheet = workbook.Worksheets[];
sheet.Cells.ImportDataTable(dt, true, , );
MakeHeader(sheet, dt);
sheet.AutoFitColumns();
sheet.AutoFitRows();
var memory = new MemoryStream();
workbook.Save(memory, SaveFormat.Xlsx);
memory.Seek(, SeekOrigin.Begin);
return memory;
}
catch (Exception e)
{
return null;
}
} /// <summary>
/// 根据Dt生成 excel文件
/// </summary>
/// <param name="dt"></param>
/// <param name="exportFileName"></param>
/// <returns></returns>
public static Boolean DatatableToExcel(DataTable dt, string exportFileName)
{
try
{
var workbook = new Workbook();
var sheet = workbook.Worksheets[];
sheet.Cells.ImportDataTable(dt, true, , );
MakeHeader(sheet, dt);
sheet.AutoFitColumns();
sheet.AutoFitRows();
workbook.Save(exportFileName, SaveFormat.Xlsx);
return true;
}
catch (Exception e)
{
return false;
}
} /// <summary>
/// 将集合对象装换成Excel的字节数组
/// </summary>
/// <typeparam name="T">对象的类型</typeparam>
/// <param name="data">集合</param>
public static byte[] ConvertToExportByte<T>(IEnumerable<T> data)
{
return ConvertToExportStream<T>(data).ToArray();
} /// <summary>
/// 将对象转换成流
/// </summary>
/// <param name="data"></param>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public static MemoryStream ConvertToExportStream<T>(IEnumerable<T> data)
{
var workbook = new Workbook();
var sheet = workbook.Worksheets[];
PropertyInfo[] infos = typeof(T).GetProperties();
var colIndex = "A";
foreach (var p in infos)
{
Cell cell = sheet.Cells[colIndex + ];
Style style = MakeHealStyle();
cell.SetStyle(style);
cell.PutValue(p.Name);
int i = ;
foreach (var d in data)
{
sheet.Cells[colIndex + i].PutValue(p.GetValue(d, null));
i++;
}
colIndex = ((char)(colIndex[] + )).ToString(CultureInfo.InvariantCulture);
}
var memory = new MemoryStream();
workbook.Save(memory, SaveFormat.Xlsx);
memory.Seek(, SeekOrigin.Begin);
return memory;
} /// <summary>
/// 根据 datatable 导出文件
/// </summary>
/// <param name="data"></param>
/// <param name="response"></param>
/// <param name="exportFileName"></param>
public static void Export(DataTable data, HttpResponse response, String exportFileName)
{
response.Clear();
response.Buffer = true;
response.Charset = "UTF8";
response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(exportFileName, Encoding.UTF8).ToString(CultureInfo.InvariantCulture));
response.ContentEncoding = System.Text.Encoding.UTF8;
response.ContentType = "application/ms-excel";
Stream outputStream = DatatableToExcelStream(data);
var buffer = new byte[BufferSize];
int bytesRead = ;
while ((bytesRead = outputStream.Read(buffer, , BufferSize)) > )
{
response.OutputStream.Write(buffer, , bytesRead);
}
outputStream.Close();
response.Flush();
response.End();
} /// <summary>
/// 根据 datatable 导出文件
/// </summary>
/// <param name="data"></param>
/// <param name="response"></param>
/// <param name="exportFileName"></param>
public static void Export(DataTable data, HttpResponseBase response, String exportFileName)
{
response.Clear();
response.Buffer = true;
response.Charset = "UTF8";
response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(exportFileName, Encoding.UTF8).ToString(CultureInfo.InvariantCulture));
response.ContentEncoding = System.Text.Encoding.UTF8;
response.ContentType = "application/ms-excel";
Stream outputStream = DatatableToExcelStream(data);
var buffer = new byte[BufferSize];
int bytesRead = ;
while ((bytesRead = outputStream.Read(buffer, , BufferSize)) > )
{
response.OutputStream.Write(buffer, , bytesRead);
}
outputStream.Close();
response.Flush();
response.End();
} /// <summary>
/// 导出数据
/// </summary>
/// <typeparam name="T">对象类型</typeparam>
/// <param name="data">集合</param>
/// <param name="response">HttpResponse</param>
/// <param name="exportFileName">导出的文件名称</param>
public static void Export<T>(IEnumerable<T> data, HttpResponse response, String exportFileName)
{
response.Clear();
response.Buffer = true;
response.Charset = "UTF8";
response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(exportFileName, Encoding.UTF8).ToString(CultureInfo.InvariantCulture));
response.ContentEncoding = System.Text.Encoding.UTF8;
response.ContentType = "application/ms-excel";
Stream outputStream = ConvertToExportStream<T>(data);
var buffer = new byte[BufferSize];
int bytesRead = ;
while ((bytesRead = outputStream.Read(buffer, , BufferSize)) > )
{
response.OutputStream.Write(buffer, , bytesRead);
}
outputStream.Close();
response.Flush();
response.End();
} /// <summary>
/// 导出数据
/// </summary>
/// <typeparam name="T">对象类型</typeparam>
/// <param name="data">集合</param>
/// <param name="response">HttpResponse</param>
/// <param name="exportFileName">导出的文件名称</param>
public static void Export<T>(IEnumerable<T> data, HttpResponseBase response, String exportFileName)
{
response.Clear();
response.Buffer = true;
response.Charset = "UTF8";
response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(exportFileName, Encoding.UTF8).ToString(CultureInfo.InvariantCulture));
response.ContentEncoding = System.Text.Encoding.UTF8;
response.ContentType = "application/ms-excel";
Stream outputStream = ConvertToExportStream<T>(data);
var buffer = new byte[BufferSize];
int bytesRead = ;
while ((bytesRead = outputStream.Read(buffer, , BufferSize)) > )
{
response.OutputStream.Write(buffer, , bytesRead);
}
outputStream.Close();
response.Flush();
response.End();
}
}

Aspose.Cells for .NET 8.5.0 工具类的更多相关文章

  1. 基于 Aspose.Cells与XML导入excel 数据----操作类封装

    前言 导入excel数据, 在每个项目中基本上都会遇到,第三方插件或者基于微软office,用的最多的就是npoi,aspose.cells和c#基于office这三种方式,其中各有各的优缺点,在这也 ...

  2. 使用Aspose.Cells 根据模板生成excel里面的 line chart

    目的: 1.根据模板里面的excel数据信息,动态创建line chart 2.linechart 的样式改为灰色 3.以流的形式写到客户端,不管客户端是否装excel,都可以导出到到客户端 4.使用 ...

  3. 使用Aspose.Cells生成Excel的线型图表

    目的: 1.根据模板里面的excel数据信息,动态创建line chart 2.linechart 的样式改为灰色 3.以流的形式写到客户端,不管客户端是否装excel,都可以导出到到客户端 4.使用 ...

  4. C#+Aspose.Cells 导出Excel及设置样式 (Webform/Winform)

    在项目中用到,特此记录下来,Aspose.Cells 不依赖机器装没有装EXCEL都可以导出,很方便.具体可以参考其他 http://www.aspose.com/docs/display/cells ...

  5. csharp: read excel using Aspose.Cells

    /// <summary> /// /// </summary> /// <param name="strFileName"></para ...

  6. Aspose.Cells相应操作及下载

    Aspose.Cells相应操作 1,上传 1.1 Workbook Workbook workBook = new Workbook(); 属性: 名称 值类型 说明 Colors Color[] ...

  7. 《ArcGIS Runtime SDK for Android开发笔记》——(15)、要素绘制Drawtools3.0工具DEMO

    1.前言 移动GIS项目开发中点线面的要素绘制及编辑是最常用的操作,在ArcGIS Runtime SDK for iOS 自带AGSSketchLayer类可以帮助用户快速实现要素的绘制,图形编辑. ...

  8. C# WinForm 导出导入Excel/Doc 完整实例教程[使用Aspose.Cells.dll]

    [csharp] view plain copy 1.添加引用: Aspose.Cells.dll(我们就叫工具包吧,可以从网上下载.关于它的操作我在“Aspose.Cells操作说明 中文版 下载 ...

  9. 利用Aspose.Cells完成easyUI中DataGrid数据的Excel导出功能

    我准备在项目中实现该功能之前,google发现大部分代码都是利用一般处理程序HttpHandler实现的服务器端数据的Excel导出,但是这样存在的问题是ashx读取的数据一般都是数据库中视图的数据, ...

随机推荐

  1. 用css3实现闪烁效果

    1. css3 @keyframes 参考 css3 @keyframes规则. 特别注意浏览器支持: Internet Explorer 10, Firefox, 和 Opera 支持 @keyfr ...

  2. 狗狗40题~(Volume A)

    A - The Willy Memorial Program 大模拟题…… 一开始的思路不对,修修补补WA了十发.当时想直接一个并查集做连通来搞定它,结果发现不能很好地判断各管的水位.究其原因还是因为 ...

  3. IE9的BUG?jQuery的BUG?

    本文转载自http://big-student.iteye.com/blog/1898213 在IE9和IE10中,当对一个html的样式初始了一个很大的left或者top时,使用jQuery的off ...

  4. DEV XtraGrid绑定非绑定列(转)

      在Gridview创建一列 .将该列的UnboundType属性设置为bound(默认值)以外的数据类型 为该列设置一个窗体内全局唯一的FieldName,注意这个FieldName甚至不能出现在 ...

  5. 【Ecstore2.0】导出问题解决(未导出或导出文件为0字节)

    如果导出队列能成功执行(队列不执行看这里)但是并未生成文件,那么原因大部份可能是出在FTP上. ECSTORE2.0采用了PHP的FTP模块,所以先确认你的环境是否安装了FTP模块,如果没有,安装并在 ...

  6. 遍历元素绑定事件时作用域是怎么回事啊,为什么要用this关键字,而直接使用元素本身就不行?

    如下代码,将this改为rows[i]为啥不起作用了 var rows = document.getElementsByTagName("tr"); for(var i=0;i&l ...

  7. javascript使用正则表达式验证Email地址

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. IE6/IE7不识别display:inline-block属性怎么办

    ie6,ie7的haslayout属性是个让人头疼的问题.在做导航条的时候,一般会用到ul li结构,大多数时候我们是把li设置为浮动,让其并排显示在同一行.还有一种方法就是设置li为display: ...

  9. 网站(Tomcat)超线程宕机

    网站大中午的又挂了····· 拷了日志如下: 2014-4-12 13:22:30 org.apache.tomcat.util.net.JIoEndpoint createWorkerThread信 ...

  10. LINK : fatal error LNK1000: Internal error during IncrBuildImage

    一.下微软的补丁:KB948127补丁来解决,http://code.msdn.microsoft.com/KB948127.貌似安装了也不起作用二.如果下载的补丁没安装成功或下载失败,可以用下面的方 ...