簡體   English   中英

在Apache POI中移動單元格

[英]Move cell in Apache POI

我正在嘗試用Apache POI實現insertColumn功能。 據我可以告訴實現這一目標的唯一方法是iterate在所有rows中的Sheet ,然后轉移每個Cell中的每個Row由1層以上Cell ,然后建立新的Cell所需要的列索引處的排。

但是,我注意到只有HSSFRow具有moveCell()方法,而XSSFRow沒有-是否有僅針對HSSF實現moveCell的原因? 有沒有理由不能將它添加到Sheet interface並不能為兩種Sheet類型實現(因為我們的代碼正在與接口一起使用以支持.xls和.xslx文件類型)?

編輯:

在逐個單元,逐個單元地實現之后,很明顯,由於引用未更新,因此這不適用於公式。 我終於找到了一個開源LGPL庫,它比POI更好地處理了這個問題-openxls。 在使用該庫數周之后,我建議您使用此庫。 與開發應用程序代碼相比,我們接連擊錯,花了更多時間修復並推送錯誤到公共git存儲庫。

在查看兩種工作表時看到這種不同行為的原因是因為.xls和.xlsx文件的結構方式完全不同。 因此,簡單地說“是否不可能將其添加到圖紙界面”,是的,這是可能的,但是添加此附加功能也可能是非常不平凡的。 請參閱此處 ,以獲取有關為什么切換到.xlsx的詳細說明。 如果您真的想變得有趣,請將您的whatMyFileis.xlsx文件的名稱更改為whatMyFileis.zip>然后解壓縮,就可以看到它們如何破壞文件內所有內容的真實程度。 而如果您對.xls執行此操作,則不會執行任何操作。

關於問題的第一部分,您在哪里詢問了如何實現insertColumn功能。 這給您帶來麻煩的原因是,因為Excel工作表本質上是基於行的,而Apache-POI並沒有為列提供太多的本機支持。 您幾乎要做的所有涉及基於列的邏輯的事情,幾乎都必須由您完全實現。 因此,我同意回答關於您可能會看到的唯一方法的問題,我並不認為會發現一種創建列的更好方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM