簡體   English   中英

正在設置Apache POI錯誤單元格字體

[英]Apache POI Wrong Cells Font Being Set

我在使用Apache POI時遇到問題,當我將一種字體設置為一種樣式,然后將該樣式設置為一個單元格時,它將正確地將該字體應用於所需的單元格,但還將該字體應用於其他單元格。 例如,我要從已設置的模板文件創建HSSF excel工作簿。 此模板文件中已填充的單元格將始終保持不變,並且當我填寫所需的單元格並更改其字體大小時,某些預填充的單元格字體大小也會更改。 但是,只有在我不創建新的HSSFCellStyle時,才會發生這種情況。 這樣做的問題是,如果我只是創建一個新的CellStyle,則會丟失我為要填充的單元格預先設置的格式。 使用一些示例和代碼可能更易於解釋。 所以這是我可以獲得的兩個不同的輸出。

大標簽

遺失邊界

在第一張圖片中,您可以看到“ 2400 Hr Clock”已被調整大小,即使在我的代碼中,我也從未將樣式應用於該單元格,僅(應該)應用於日期單元格和時間單元格。 這是我設置如下樣式的時候:

HSSFCellStyle dataStyle = cell.getCellStyle();
dataStyle.setFont(font);

但是當我改為這樣設置樣式時:

HSSFCellStyle dataStyle = currentWorkbook.createCellStyle();
dataStyle.setFont(font);

我得到了第二張圖片中的內容,但是丟失了以前的格式,如單元格第一部分中的邊框。 請注意,我之所以沒有丟失所有邊框,是因為這些單元是合並在一起的多個單元,但是您可以看到部分邊框丟失了,但是“ 2400 Hr Clock”的大小尚未調整。 我不確定是什么原因造成的,也不確定接下來要嘗試什么。 字體是這樣創建的:

HSSFFont font = currentWorkbook.createFont();
font.setFontName("Times");
font.setFontHeightInPoints(fontSize);

解決方案是克隆樣式,而不是像這樣獲得樣式:

HSSFCellStyle dataStyle = currentWorkbook.createCellStyle();
dataStyle.cloneStyleFrom(cell.getCellStyle());
dataStyle.setFont(font);

暫無
暫無

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

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