今天在用 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 引用
但因為上次跟主管說了之後,他叫我不要去改人家原生的程式
所以我目前是用第一種方法解決的
留言列表