.net mvc 使用 aspose.cells导出数据
public class AsposeCellsHelper
{
public Workbook workBook;
public Worksheet worksheet;
Style style; /// <summary>
/// 构造函数,不设置工作表名称
/// </summary>
public AsposeCellsHelper()
{
workBook = new Workbook();
worksheet = workBook.Worksheets[0];
} /// <summary>
/// 构造函数,设置工作表名称
/// </summary>
public AsposeCellsHelper(string name)
{
workBook = new Workbook(); if (string.IsNullOrEmpty(name))
{
name = DateTime.Now.ToString("yyyyMMddHHmmssffff");
} if (workBook.Worksheets.Count > 0)
{
worksheet = workBook.Worksheets[0];
worksheet.Name = name;
}
else
{
worksheet = workBook.Worksheets.Add(name);
}
} /// <summary>
/// 创建工作表,并将对象切换为当前创建的工作表
/// </summary>
/// <param name="name"></param>
public void CreateSheet(string name)
{
if (string.IsNullOrEmpty(name))
{
name = DateTime.Now.ToString("yyyyMMddHHmmssffff");
} worksheet = workBook.Worksheets.Add(name);
} //设置单元格样式
public void SetCellStyle(int fontSize, bool IsBold)
{
if (style == null)
{
style = workBook.DefaultStyle;
} //style.BackgroundColor = backgroundColor;
style.Font.Name = "宋体";//文字字体
style.Font.Size = fontSize;//文字大小
//前景色
style.ForegroundColor = Color.White;
style.Font.IsBold = IsBold;//粗体
style.HorizontalAlignment = TextAlignmentType.Center;//文字居中
//线条样式
style.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Thin;
//线条颜色
style.Borders[BorderType.TopBorder].Color = Color.Black;
style.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Thin;
style.Borders[BorderType.BottomBorder].Color = Color.Black;
style.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin;
style.Borders[BorderType.LeftBorder].Color = Color.Black;
style.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin;
style.Borders[BorderType.RightBorder].Color = Color.Black;
} //设置值
public void SetValue(int x, int y, string value,int rowHeight = 20)
{
//设置值
worksheet.Cells[x, y].PutValue(value, false);
//设置样式
worksheet.Cells[x,y].SetStyle(style);
//设置行高
worksheet.Cells.SetRowHeight(x, rowHeight);
} /// <summary>
/// 填充数据到excel,数据填充可自行添加或继承后扩展方法
/// </summary>
/// <param name="dt"></param>
public void SetDataByTable(DataTable dt,string title)
{
DataColumnCollection columns = dt.Columns; int addIndex = 0; //表格标题
if (!string.IsNullOrEmpty(title))
{
addIndex = 1;
SetCellStyle(16, true);
worksheet.Cells.Merge(0, 0, 1, columns.Count);
SetValue(0, 0, title, 30);
} //表头
if (columns.Count > 0)
{
int columnIndex = 0; foreach (DataColumn dc in columns)
{
SetCellStyle(14, true);
SetValue(0 + addIndex, columnIndex, dc.ColumnName, 25);
columnIndex += 1;
}
} //数据
if (dt.Rows.Count > 0)
{
int rowIndex = 1 + addIndex; foreach (DataRow dr in dt.Rows)
{
for (int i = 0; i < columns.Count; i++)
{
SetCellStyle(12, false);
SetValue(rowIndex, i, dr[i].ToString());
} rowIndex += 1;
}
} worksheet.AutoFitColumns();
} /// <summary>
/// 导出excel
/// </summary>
/// <param name="name"></param>
public void ExportExcel(string name)
{
try
{
HttpResponse Response = System.Web.HttpContext.Current.Response; if (Response != null)
{
if (string.IsNullOrEmpty(name))
{
name = DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".xlsx";
} // Save in Xlsx format
workBook.Save(Response, name, ContentDisposition.Attachment, new OoxmlSaveOptions());
Response.End();
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
//可以不写dispose
worksheet.Dispose();
workBook.Dispose();
}
}
}
调用代码
public void Export()
{
AsposeCellsHelper aspose = new AsposeCellsHelper("测试导出"); DataTable dt = new DataTable("cart");
DataColumn dc3 = new DataColumn("number", Type.GetType("System.Int16"));
DataColumn dc1 = new DataColumn("prizename", Type.GetType("System.String"));
DataColumn dc2 = new DataColumn("point", Type.GetType("System.Int16"));
DataColumn dc4 = new DataColumn("totalpoint", Type.GetType("System.Int64"));
DataColumn dc5 = new DataColumn("prizeid", Type.GetType("System.String"));
dt.Columns.Add(dc3);
dt.Columns.Add(dc1);
dt.Columns.Add(dc2);
dt.Columns.Add(dc4);
dt.Columns.Add(dc5);
//以上代码完成了DataTable的构架,但是里面是没有任何数据的
for (int i = 0; i < 10; i++)
{
DataRow dr = dt.NewRow();
dr["prizename"] = "娃娃";
dr["point"] = 10;
dr["number"] = i;
dr["totalpoint"] = 10;
dr["prizeid"] = "001";
dt.Rows.Add(dr);
} //aspose.SetDataByTable(dt,string.Empty);
aspose.SetDataByTable(dt, "测试标题");//标题可以传空,可以修改为重载,或者修改SetDataByTable方法的最后一个参数,将其加上默认值,重载的一个变种
aspose.ExportExcel("测试.xlsx");//名称可以传空
}
.net mvc 使用 aspose.cells导出数据的更多相关文章
- asp.net mvc用aspose.cells 导出xlsx格式的excel。无残留
public void Export() { HttpResponse Response = System.Web.HttpContext.Current.Response; // Load your ...
- Aspose.Cells导出Excel(1)
利用Aspose.Cells导出excel 注意的问题 1.DataTable的处理 2.进行编码,便于中文名文件下载 3.别忘了Aspose.Cells.dll(可以自己在网上搜索) public ...
- 基于C#语言MVC框架Aspose.Cells控件导出Excel表数据
控件bin文件下载地址:https://download.csdn.net/download/u012949335/10610726 @{ ViewBag.Title = "xx" ...
- 利用Aspose.Cells导出Datatable数据
面对一些的格式各样的到处数据的要求,自学了一点 Aspose.Cells中操作Excel知识,如下代码: /// <summary> /// DataTable导出Excel /// &l ...
- C# 基于Aspose.Cells的数据导出到Excel
using Aspose.Cells; void WriteToExcel(string filePath, List<object[]> datas, string sheetName ...
- C#使用Aspose.Cells导出Excel简单实现
首先,需要添加引用Aspose.Cells.dll,官网下载地址:http://downloads.aspose.com/cells/net 将DataTable导出Xlsx格式的文件下载(网页输出) ...
- C#+Aspose.Cells 导出Excel及设置样式 (Webform/Winform)
在项目中用到,特此记录下来,Aspose.Cells 不依赖机器装没有装EXCEL都可以导出,很方便.具体可以参考其他 http://www.aspose.com/docs/display/cells ...
- aspose.cells导出Demo
/// <summary> /// 导出excel /// </summary> /// <param name="list"></par ...
- C# 使用Aspose.Cells 导出Excel
今天在工作中碰到同事用了一种新型的方式导入excel,在此做个学习记录. 插件:Aspose.Cells 第一步:准备好导出的模板,例子: C#代码: #region 验证数据 if (model = ...
随机推荐
- num10---适配器模式
1.类适配器 Adapter类,通过继承 被适配的类,实现目标类的接口,完成适配. 分析: java 单继承,所以适配器类 需要继承 被适配类,这就要求目标类必须是接口,有一定局限性. 被适配类的方法 ...
- 【Bullet引擎】复杂碰撞体 —— btCompoundShape
说明 API文档:http://bulletphysics.org/Bullet/BulletFull/classbtCompoundShape.html btCompoundShape可用于创建不规 ...
- python学习(4)循环语句
循环语句主要有两个,一个是 while :一个是for in range() 以案例来说明: 写一个猜数字的游戏,正确的数字等于38.如果数字等于38,则提示正确,然后结束:如果数字大于38则提示大了 ...
- 《Head first设计模式》之装饰者模式
装饰者模式动态地将责任附加到对象上.若要扩展功能,装饰者提供了比继承更有弹性的替代方案. 星巴兹是以扩张速度最快而闻名的咖啡连锁店.由于扩张速度太快,他们准备更新订单系统,以合乎他们的饮料供应要求. ...
- GNU C相关
GNU __attribute__ 用于在函数声明时,定义函数参数的一些特殊属性,比如,如果函数的某个参数可能用不到,那么,将该参数增加unused属性即可,如下(一般用两个括号包括属性unused) ...
- k8s系列---service
来源 : http://blog.itpub.net/28916011/viewspace-2214745/ service是要通过coreDNS来管理pod的. kube-proxy始终监视着api ...
- Windows+Python+Selenium基础篇之1-环境搭建
1.所需工具包1.1Selenium for python1.2 Python 1.3 Notepad++或python IDE 2. 环境搭建2.1 下载和安装Pythonpython2. ...
- 曹工说Spring Boot源码(20)-- 码网灰灰,疏而不漏,如何记录Spring RedisTemplate每次操作日志
写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean ...
- C++中的public、protected和private
访问权限控制 一个类的public的成员变量.成员函数,可以通过类的实例变量进行访问. 一个类的protected的成员变量.成员函数,无法通过类的实例变量进行访问,但是可以通过类的友元函数.友元类进 ...
- SRAM结构框图解
SRAM 即静态RAM.它也由晶体管组成,SRAM的高速和静态特性使它们通常被用来作为Cache存储器.计算机的主板上都有Cache插座. 下图所示的是一个SRAM的结构框图. 由上图看出SRAM一般 ...