今天在用 ExcelPackage 這個套件要匯出 Excel 的時候發生了一點問題

其實這個問題之前就遇過了,但是年紀大了每次都忘記最後怎麼解決的......

每次都要重頭開始追實在很浪費時間

印象中還遇過另一個問題 (這個套件小問題也是不少,但資源很多所以都可以解決)

故此篇定義為筆記,方便以後有出現這問題可以快速排除

===============================================================

ExcelPackage 的話稍微介紹一下,是個簡單操作 Excel 的套件

官網在此 : http://excelpackage.codeplex.com/

簡單操作 Excel 的套件網路上隨便找都好多,後來決定用這個是因為操作有夠簡單

後來還又出一個 Plus 版功能好像更強,但是就沒玩過了

稍微詳細的介紹可以去看別人的文章,這邊就不廢話

http://blog.miniasp.com/post/2007/12/15/Introduce-ExcelPackage-and-WordPackage.aspx

 

 主要是要解決下面這個問題 

擷取  

執行到 xlPackage.Save();

會發生 "並未將物件參考設定為物件的執行個體" 的錯誤

但實際檢查產生的 Excel 發現資料其實已經寫進去了 @@

解決方法有兩種 

第一種 : 更改 Excel 樣板

將 Excel 的 Sheet 刪除到只剩下一個即可正常動作 (本來有 Sheet1 ~ Sheet3) 

Sheet Name 叫什麼都無所謂

如下圖 ok

 擷取  

 

第二種 : 修改官方 Source Code

解決方式的討論在此 : http://excelpackage.codeplex.com/discussions/7005

修改 ExcelWorksheet.cs  line : 562 行 (應該是line : 560 才對,可能之後有加了註解)

XmlNode pageSetup = _worksheetXml.SelectSingleNode("//d:pageSetup", NameSpaceManager);

改成

XmlNode pageSetup = WorksheetXml.SelectSingleNode("//d:pageSetup", NameSpaceManager);

即可

再把專案編譯成 dll 引用

但因為上次跟主管說了之後,他叫我不要去改人家原生的程式

所以我目前是用第一種方法解決的

 

 

創作者介紹
創作者 小雕 的頭像
小雕

小雕雕的家

小雕 發表在 痞客邦 留言(0) 人氣()