天天看點

aspose.cells html excel導出,aspose.cells使用excel模闆生成excel

參考部落格:http://www.cnblogs.com/wuhuacong/archive/2011/02/23/1962147.html使用的aspose類庫: http://download.csdn.net/detail/anderson_linqf/4901496大

參考部落格:

使用的aspose類庫:

大家好,客戶很多時候會給一個excel模闆我們,然後按照所給的excel格式進行報表。

比如,使用者給了下面一個excel模闆:(上面是一個标題,下面是一個貨物的資訊)

aspose.cells html excel導出,aspose.cells使用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模闆的資料部分删掉,剩下主題,然後補充上你的資料庫裡面的查詢表面和字段名:

aspose.cells html 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還有用法值得學習,百度一下吧!