您的位置:首页 > 编程语言 > ASP

aspose.cells使用excel模板生成excel

2013-10-30 21:07 609 查看
参考博客:/article/4578672.html

使用的aspose类库: http://download.csdn.net/detail/anderson_linqf/4901496

大家好,客户很多时候会给一个excel模板我们,然后按照所给的excel格式进行报表。

比如,用户给了下面一个excel模板:(上面是一个标题,下面是一个货物的信息)



我以往的做法:从数据库里面拿到所需数据之后保存在一个datatable里面,然后就傻傻的:

cell[2,0].value = ****

cell[2,1].value =*****

cell[3,0].value = ***

********一个一个往空格里面填

这样的想法的确很简单,哪个格子需要填数据,就往哪个格子里面填东西,但是缺点也很容易想到:

这个excel的格式是不能改变的,如果用户突然打了个电话来说:对不起,能不能把单价放在前面,货物名放后面啊???

这时候,苦逼的码农就要重新:

cell[2,0].value = ####

cell[2,1].value =####

cell[3,0].value = #####

重新一个格子一个格子的填,那就太郁闷了。

我的意思是:不能把excel看出一个空表,写程序就是为了填好这个空表!!!

现在从aspose.cells中学会了一招:把excel看成一个说明文档,这个说明文档指导程序怎么填写数据。

下面是一个新的解决方法:

首先把excel模板的数据部分删掉,剩下主题,然后补充上你的数据库里面的查询表面和字段名:



那么查出来的datatable如果有5行就往excel空表里面填写5行,如果仅有1行那么只往excel空表填一个。
代码如下:

//取所需的数据(自己写一个函数)
DataTable tb = GetDataTable("select goodsName , goodsPrice  from tbGoods", "tbGoods");
Aspose.Cells.WorkbookDesigner designer = new WorkbookDesigner();
//给模板对象设置数据源
designer.SetDataSource(tb);
//excel模板的地址
string excelModel = @"E:\chengXu\ExcelTest3\ExcelTest3\files\mydesigner.xls";
designer.Open(excelModel);
designer.Process();//全自动赋值
//新生成的excel的保存地址
string fileToSave = @"E:\chengXu\ExcelTest3\ExcelTest3\files\create1.xls";
if (System.IO.File.Exists(fileToSave) == true)
{
System.IO.File.Delete(fileToSave);
}
designer.Workbook.Save(fileToSave);


aspose.cells还有用法值得学习,百度一下吧!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: