參考部落格:http://www.cnblogs.com/wuhuacong/archive/2011/02/23/1962147.html使用的aspose類庫: http://download.csdn.net/detail/anderson_linqf/4901496大
參考部落格:
使用的aspose類庫:
大家好,客戶很多時候會給一個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還有用法值得學習,百度一下吧!