我無法更新現有的excel單元,這些單元被合併和邊界。我創建了一個樣式的Excel文件,並將其用作模板。在我的代碼 - >首先讀取該Excel文件並更新我希望的單元格。沒有合併單元格。但合併的單元格不能插入數據。如何使用Apache poi更新現有的合併Excel單元
可能會產生損壞Excel文件或空數據單元。我不想覆蓋現有單元格的合併和邊界。這裏我的代碼閱讀和更新..
HashMap<String, ByteArrayOutputStream> streams = new HashMap<String, ByteArrayOutputStream>();
try {
String appDir = System.getProperty("appDir");
String resouceDir = appDir + System.getProperty("resourceDir");
String templateDir = resouceDir + "/template";
if (streams.keySet().size() <= 0) {
XSSFSheet sheet = null;
FileInputStream file = new FileInputStream(new File(templateDir +"/shipping_template.xlsx"));
XSSFWorkbook workbook = new XSSFWorkbook(file);
ByteArrayOutputStream baos = null;
sheet = workbook.getSheetAt(0);
XSSFRow shippingRow = sheet.getRow(4);
Cell cell = shippingRow.createCell((short) 36);
cell.setCellValue("DOOM Bringer");
baos = new ByteArrayOutputStream();
workbook.write(baos);
streams.put(param, baos);
baos.close();
file.close();
}
}
感謝您的建議,但我不想把它保存在任何目錄作爲我的項目需求。這是創建並保存在內存中通過錨標籤下載。我意識到它不能像這樣更新。這有太多的鍋爐代碼來創建合併或跨度單元格。 – Cataclysm 2013-05-16 10:25:21
其實當我說保存臨時副本時,我的意思是打開一個臨時存儲並將其保存到內存然後更新該臨時值,然後如果用戶選擇保存它。一旦關閉流,臨時副本就消失了。它與Microsoft開放的文檔一樣。當您打開Word文檔時,Office將打開一個包含臨時文檔的流,它將位於實際文檔的相同位置,並且將具有〜$作爲該名稱的第一個字符。知道我在說什麼? – yams 2013-05-17 14:04:41
是的,你是對的。提前致謝。我會檢查我的代碼。 – Cataclysm 2013-05-18 07:48:35