aspose.cells使用excel模板生成excel

参考博客:http://www.cnblogs.com/wuhuacong/archive/2011/02/23/1962147.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还有用法值得学习,百度一下吧!


评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值