第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

APACHE POI 4.1:從十六進制代碼設(shè)置單元格背景顏色

APACHE POI 4.1:從十六進制代碼設(shè)置單元格背景顏色

qq_笑_17 2024-01-05 14:56:23
我嘗試了堆棧溢出上發(fā)布的不同解決方案,將背景顏色應(yīng)用于 Apache POI 生成的單元格,但沒有任何效果。我正在做類似的事情:Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet(sheetName);XSSFCellStyle cellStyle = ((XSSFCellStyle) workbook.createCellStyle());if (styleObject.getBgColor() != null) {    java.awt.Color javaBdgColor = java.awt.Color.decode(voceStyle.getBgColor()); // this is #FFF000    XSSFColor bgColor = new XSSFColor(javaBdgColor, new DefaultIndexedColorMap());    cellStyle.setFillForegroundColor(bgColor.getIndex());    cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);}Row newRow = Rowsheet.createRow(0);Cell newCell = newRow.createCell(0);newCell.setCellStyle(cellStyle);// write fileString pathFileExport = buildPathExportFile("test-export");FileOutputStream fileOut = new FileOutputStream(pathFileExport);workbook.write(fileOut);fileOut.close();//close workbookworkbook.close();return Paths.get(pathFileExport);我認為我的代碼中一切正常,但每個像這樣樣式的單元格都會導(dǎo)致黑色背景。我對在沒有字段的調(diào)試結(jié)果期間的“DefaultIndexedColorMap”實例有一些疑問:此時,我不確定要做什么來解決。其他帖子中的每個人似乎都能正常工作,但我仍然得到深色背景而不是黃色。有什么建議么?提前致謝!
查看完整描述

2 回答

?
慕少森

TA貢獻2019條經(jīng)驗 獲得超9個贊

正如另一個答案所說,在自定義顏色時,需要使用setFillForegroundColor(XSSFColor color)而不是使用索引顏色。但是也可以使用org.apache.poi.ss.usermodel.IndexedColorsXSSFCellStyle中的索引顏色。如果不需要使用自定義顏色,這將是最兼容的方式。XSSF

但也應(yīng)該避免創(chuàng)建XSSFColorfrom 。java.awt.Color構(gòu)造函數(shù)XSSFColor(java.awt.Color clr, IndexedColorMap map)被標記為“僅測試”。并且java.awt.Color在某些情況下將不可用。

因此,如果需要“從十六進制代碼設(shè)置單元格背景顏色”并且十六進制代碼位于 a 中String,org.apache.commons.codec.binary.Hex則可用于byte[]從中獲取數(shù)組String。Apache commons codec已經(jīng)是 的依賴項之一apache poi。然后?可以使用構(gòu)造函數(shù)XSSFColor(byte[] rgb, IndexedColorMap colorMap) 。IndexedColorMap到目前為止還沒有使用。這樣就可以設(shè)置了null。如果IndexedColorMap以后有任何使用,那么無論如何都必須調(diào)整代碼。

例子:

import java.io.FileOutputStream;

import org.apache.poi.ss.usermodel.*;

import org.apache.poi.xssf.usermodel.*;


import org.apache.commons.codec.binary.Hex;


class CreateXSSFColor {


?public static void main(String[] args) throws Exception {


? try (Workbook workbook = new XSSFWorkbook();?

? ? ? ?FileOutputStream fileout = new FileOutputStream("Excel.xlsx") ) {


? ?String rgbS = "FFF000";

? ?byte[] rgbB = Hex.decodeHex(rgbS); // get byte array from hex string

? ?XSSFColor color = new XSSFColor(rgbB, null); //IndexedColorMap has no usage until now. So it can be set null.


? ?XSSFCellStyle cellStyle = (XSSFCellStyle) workbook.createCellStyle();

? ?cellStyle.setFillForegroundColor(color);

? ?cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);


? ?Sheet sheet = workbook.createSheet();?

? ?Row row = sheet.createRow(0);

? ?Cell cell = row.createCell(0);

? ?cell.setCellValue("yellow");

? ?cell.setCellStyle(cellStyle);


? ?workbook.write(fileout);

? }


?}

}


查看完整回答
反對 回復(fù) 2024-01-05
?
德瑪西亞99

TA貢獻1770條經(jīng)驗 獲得超3個贊

我注意到,在處理 xlsx 文件 (XSSF) 中的顏色時,使用索引顏色效果不太好。默認情況下,似乎沒有任何顏色的索引XSSFWorkbook,因此您不能使用未索引的顏色索引。

但是,您可以使用直接采用setFillForegroundColorXSSFColor.

cellStyle.setFillForegroundColor(bgColor);

當我使用此重載時,我會得到您期望的黃色作為背景。

通常,在 XSSF 中使用顏色時,您應(yīng)該使用其XSSFColor本身而不是其索引。這也適用于其他事物,例如其他圖案顏色(“背景”)、邊框顏色和字體顏色。


查看完整回答
反對 回復(fù) 2024-01-05
  • 2 回答
  • 0 關(guān)注
  • 596 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號