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

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

Apache POI - 應(yīng)用于克隆工作表上的單元格的 CellStyles 出現(xiàn)在原始工作表上

Apache POI - 應(yīng)用于克隆工作表上的單元格的 CellStyles 出現(xiàn)在原始工作表上

互換的青春 2023-02-23 15:54:45
在我正在編寫的程序中,我準備了一個 excel 表(“master”)并多次克隆它。每次我克隆這個主表時,我都會將CellStyles 應(yīng)用于新克隆表上的特定單元格。問題是,每次我將CellStyles 應(yīng)用于我克隆的工作表上的單元格時,樣式一直出現(xiàn)在主工作表和所有其他克隆工作表上。這是顯示我如何進行克隆的片段:for (Member member : allMembers) {    memberName = member.getFirstName();    // `schedule` below is a WorkBook object    XSSFSheet individualSheet = schedule.cloneSheet(0, memberName);    highlightMemberNames(individualSheet, memberName);}正在highlightMemberNames(individualSheet, memberName)做的是突出顯示individualSheet包含memberName. 這是它的代碼:void highlightMemberNames(XSSFSheet individualSheet, String memberName) {    for (Row row : individualSheet) {        for (Cell cell : row) {            if (cell.getStringCellValue().equals(memberName)) {                cell.getCellStyle().setFillBackgroundColor(IndexedColors.LIGHT_GREEN.index);                cell.getCellStyle().setFillForegroundColor(IndexedColors.LIGHT_GREEN.index);                cell.getCellStyle().setFillPattern(FillPatternType.SOLID_FOREGROUND);                cell.getCellStyle().setAlignment(HorizontalAlignment.CENTER);            }        }    }}有沒有辦法避免這個問題?
查看完整描述

1 回答

?
DIEA

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

在Excel文件中,單元格樣式位于工作簿級別,而不是工作表級別或單元格級別。因此,您cell.getCellStyle()從工作簿級別獲取單元格樣式,該樣式也可能已經(jīng)應(yīng)用于其他工作表中的其他單元格。如果您隨后更改該樣式,這將更改應(yīng)用了該單元格樣式的所有工作表中的所有單元格。


您需要首先在工作簿級別創(chuàng)建所有需要的單元格樣式,然后將這些樣式應(yīng)用于單元格,或者您需要使用CellUtil方法。使用CellUtil方法應(yīng)該是首選方法。


CellUtil方法用于將單個單元格樣式屬性設(shè)置為單個單元格。然后,這些方法會在內(nèi)部決定是否需要在工作簿級別創(chuàng)建新的單元格樣式,或者是否已經(jīng)存在只需要應(yīng)用的此類樣式。


在您的情況下,這可能看起來像:


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

import org.apache.poi.ss.util.CellUtil;


import java.util.Map;

import java.util.HashMap;

...


 void highlightMemberNames(Sheet individualSheet, String memberName) {

  Map<String, Object> properties = new HashMap<String, Object>();

  properties.put(CellUtil.FILL_PATTERN, FillPatternType.SOLID_FOREGROUND);

  properties.put(CellUtil.FILL_FOREGROUND_COLOR, IndexedColors.LIGHT_GREEN.getIndex());

  properties.put(CellUtil.ALIGNMENT, HorizontalAlignment.CENTER);

  for (Row row : individualSheet) {

   for (Cell cell : row) {

    if (cell.getCellType() == CellType.STRING && cell.getStringCellValue().equals(memberName)) {

     CellUtil.setCellStyleProperties(cell, properties); 

    }

   }

  }

 }


查看完整回答
反對 回復 2023-02-23
  • 1 回答
  • 0 關(guān)注
  • 240 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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