首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Apache poi中按名称获取单元格样式

如何在Apache poi中按名称获取单元格样式
EN

Stack Overflow用户
提问于 2017-12-07 10:21:14
回答 1查看 4.1K关注 0票数 1

Am使用3.16

我在一个方法中创建了一些单元格样式。并将工作簿传递给另一种设置单元格值的方法。

在这种情况下,我必须将所有单元格样式作为对角传递给其他方法。是否有一种方法只传递工作簿并从该工作簿本身获取样式。

我发现

代码语言:javascript
运行
复制
workbook.getCellStyleAt(idx).

但是为此,我必须对我创建的所有样式进行索引跟踪。并硬编码它的价值。如果在这段时间内为新样式编写代码,则可能会导致工作表格式混乱,因为索引号将发生变化。

样本代码

代码语言:javascript
运行
复制
SXSSFWorkbook workbook = new SXSSFWorkbook(1000);
SXSSFSheet sheet = workbook.createSheet("SheetName");

CellStyle styleBOM = workbook.createCellStyle();
Font fontBOM = workbook.createFont();
fontBOM.setFontHeightInPoints((short) 16);
fontBOM.setFontName("Arial");
fontBOM.setBold(false);
styleBOM.setFont(fontBOM);

CellStyle headKey = workbook.createCellStyle();
Font fontKey = workbook.createFont();
fontKey.setFontHeightInPoints((short) 11);
fontKey.setFontName("Arial");
fontKey.setBold(true);
headKey.setFont(fontKey);

CellStyle headValue = workbook.createCellStyle();
Font fontValue = workbook.createFont();
fontValue.setFontHeightInPoints((short) 11);
fontValue.setFontName("Arial");
fontValue.setBold(false);
headValue.setFont(fontValue);

valueList=someLogicToFetchValues(someInput);

downloadExcel(valueList, workbook,styleBOM, headKey,headValue)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-07 10:32:28

您可以创建一个包含所有已创建样式的静态表,每个样式都由其名称(或您选择的任何名称)标识。

每次创建样式时,都要将其添加到该表中,当需要时,可以从同一表中读取它。

就像这样:

代码语言:javascript
运行
复制
class CellStyleMap
{
  public static synchronized void addStyle(String    identifier,
                                           CellStyle style)
  {
    styles.put(identifier, style);
  }

  public static synchronized CellStyle getStyle(String identifier)
  {
    return (styles.get(identifier));
  }

  private static Hashtable<String, CellStyle> styles = new Hashtable<String, CellStyle>();

} // class CellStyleMap

在您的代码中:

代码语言:javascript
运行
复制
CellStyle styleBOM = workbook.createCellStyle();
...
CellStyleMap.addStyle("BOM", styleBOM);

当你需要的时候:

代码语言:javascript
运行
复制
CellStyle styleBOM;
styleBOM = CellStyleMap.getStyle("BOM");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47692753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档