190322 Apache POI Continued

昨天試了
org.apache.poi.xssf.usermodel.helpers.XSSFColumnShifter
https://poi.apache.org/apidocs/dev/org/apache/poi/xssf/usermodel/helpers/XSSFColumnShifter.html

先呼叫 shiftColumns,再呼叫 shiftMergedRegions。

以 Excel 開啟程式改過的 .xlsx 檔,會出現以下訊息。
 ———————————————————————————
已移除的記錄: /xl/worksheets/sheet4.xml 部分的 公式
已移除的記錄: /xl/worksheets/sheet4.xml 部分的 共用公式
已移除的記錄: /xl/calcChain.xml 部分的 公式 (計算內容)
———————————————————————————
1. 原先多行中有用到公式 SUM,公式都不見了,只有值被留下來。
2. 如果呼叫 shiftMergedRegions 時,我的需求為插入一行,含有 firstShiftColumnIndex 的 Merged Regions會無法成功新增一行。


用 /xl/calcChain.xml 為關鍵字找到以下文章
Excel Error 2010 /xl/calcChain.xml
http://sogeeky.blogspot.com/2015/10/excel-error-2010-xlcalcchainxml.html

如依上面的文章,把 /xl/calcChain.xml 刪除,再用 Excel 開啟,就會變成檔案已毁損。

這樣看起來 XSSFColumnShifter 所引起的 Side Effects 比較嚴重。

所以回到最早的方式。
1. 將隱藏行設為顯示;並記錄其行號。
2. 移除 sheet 中所有的合併儲存格;並保留合併儲存格資訊。此處需注意 index 的問題。
3. 插入一行。

留言

這個網誌中的熱門文章

泰文子音與字形之間的變化

AUTOMAXX UP-5HX 使用心得