基于 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. 28 Corn表达式详解 (转自http://blog.csdn.net/claram/article/details/51785193)

    Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式: Seconds Minutes Hours DayofMonth Month ...

  2. MVC模式下xml文件的解析

    第一次写blog,组织不当和出错的地方还请大家多担当哈. java操作xml文件的方式中用的较多的有四种,DOM.SAX.JDOM.DOM4J.除第一种外其余的三种我都有试过,这后三种方案中我选择用S ...

  3. part3

    我就不刁旭概念什么的问题了哈~直接进入工作中所通用的一些有关object的方法和属性 1).for/in 属性的遍历~他遍历的对象没有特定的顺序,而且只能枚举出所有用户自定义的属性,不能枚举出某些预定 ...

  4. SQL中对日期进行模糊查询的方法

    在我们通过SQL语句对数据库中的数据进行查询时,难免会遇到针对datetime的查询,但是因为一般情况下,输入的时间条件为年月日,所以,这种情况下,我们就要进行一下模糊查询,首先,摒弃一种投机取巧的方 ...

  5. Css3做的旋转显示文字和角度的变化

    Css: .spinner{ width:245px; height:245px; position:relative;}.coly{ border-radius:130px; font-size:1 ...

  6. php生成table表格

    function getTable($arrTh, $arrTr){ $s = '<table class="tbData">'; $s .= '<tr>' ...

  7. salt-grains

    自定义grains 的方法 1: 在minion 的配置文件夹 /etc/salt/minion.d  下面包含的配置文件  grains.conf 2: 在salt的安装目录中建立grains 文件 ...

  8. 安卓4.2原生rom状态栏显示运营商

    前言:要调整状态栏布局,需反编译systemui.apk.单卡机修改status_bar.xml和signal_cluster_view.xml,双卡机修改gemini_status_bar.xml和 ...

  9. JAVA中,字符串STRING与STRINGBUILDER的效率差异

    如果可变字符串操作较多的话,用STRINGBUILDER显然优势得多. public class HelloJava { public static void main(String[] args) ...

  10. 几年前再用exjts4,如今extjs5发布了,技术更新快,每次给人惊喜

    我们非常高兴的宣布,Sencha Ext JS 5 beta版本开始进行公测了.这个beta版本可以让你.我们Sencha社区来对我们的Ext JS 5的工作进度进行评测.对于所以Ext JS开发人员 ...