- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
请注意:我看到一个非常提出的类似问题here但这个答案并不是很确定(我无法辨别实际的修复是什么)。如果有人可以向我解释该问题/答案如何解决我当前的问题,我会很乐意自己删除这个问题!只是请不要将 DV/CV 视为“骗子”,而是请帮助我理解所提供的解决方案!
<小时/>这里是 Java 8 和 POI 4.1.x。我正在尝试编写一些 Java/POI 代码来生成样式/格式化的 Excel 文件作为输出。我创建了this GitHub project这完美地重现了我所看到的问题。如果您确实想要,您可以查看它并通过 ./gradlew clean build ShadowJar && java -jar build/libs/hello-windows 运行它(它是一个 Swing 应用程序)。 jar
,但是 TLDR;其中:
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("SOME_SHEET");
Font headerFont = workbook.createFont();
headerFont.setBold(true);
CellStyle cellStyle = workbook.createCellStyle();
cellStyle.setFont(headerFont);
cellStyle.setFillBackgroundColor(IndexedColors.YELLOW.getIndex());
cellStyle.setAlignment(HorizontalAlignment.CENTER);
int rowNum = 0;
Row headerRow = sheet.createRow(rowNum);
headerRow.setRowStyle(cellStyle);
Cell partNumberHeaderCell = headerRow.createCell(0);
partNumberHeaderCell.setCellValue("Part #");
partNumberHeaderCell.setCellStyle(cellStyle);
Cell partDescriptionHeaderCell = headerRow.createCell(1);
partDescriptionHeaderCell.setCellStyle(cellStyle);
partDescriptionHeaderCell.setCellValue("Description");
Cell partPriceHeaderCell = headerRow.createCell(2);
partPriceHeaderCell.setCellStyle(cellStyle);
partPriceHeaderCell.setCellValue("Price");
Cell manufacturerHeaderCell = headerRow.createCell(3);
manufacturerHeaderCell.setCellStyle(cellStyle);
manufacturerHeaderCell.setCellValue("Make");
rowNum++;
Row nextRow = sheet.createRow(rowNum);
nextRow.createCell(0).setCellValue(uuid);
nextRow.createCell(1).setCellValue("Some Part");
nextRow.createCell(2).setCellValue(2.99);
nextRow.createCell(3).setCellValue("ACME");
FileOutputStream fos = null;
try {
fos = new FileOutputStream("acme.xlsx");
workbook.write(fos);
workbook.close();
} catch (IOException ex) {
log.error(ExceptionUtils.getStackTrace(ex));
}
当此代码运行时,它会生成一个 Excel 文件,其中正确包含我的所有数据(标题行和“数据”行),但是所有格式和单元格样式似乎都被忽略:
在上面的屏幕截图中,您可以看到标题根本没有样式,但我相信我的样式正确:
CellStyle cellStyle = workbook.createCellStyle();
cellStyle.setFont(headerFont);
cellStyle.setFillBackgroundColor(IndexedColors.YELLOW.getIndex());
cellStyle.setAlignment(HorizontalAlignment.CENTER);
如果我的代码正确,那么我应该看到一个 header :
有人能发现我哪里出了问题吗?
最佳答案
不清楚为什么粗体字体不适合你,但对我来说却适用。
但是单元格内部的问题是 Excel
单元格内部具有图案填充。填充背景色是图案后面的颜色,填充前景色是图案的颜色。实心填充单元内部必须具有实心图案,并具有所需的填充前景色集。
另请参阅Busy Developers' Guide to HSSF and XSSF Features .
...
CellStyle cellStyle = workbook.createCellStyle();
cellStyle.setFont(headerFont);
//cellStyle.setFillBackgroundColor(IndexedColors.YELLOW.getIndex());
cellStyle.setFillForegroundColor(IndexedColors.YELLOW.getIndex());
cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
cellStyle.setAlignment(HorizontalAlignment.CENTER);
...
让我们看一个完整的示例,它将您的数据存储在 Excel
工作表中:
import java.io.FileOutputStream;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
class CreateExcelCellStyle {
public static void main(String[] args) throws Exception {
try (Workbook workbook = new XSSFWorkbook();
FileOutputStream fileout = new FileOutputStream("./Excel.xlsx") ) {
Font headerFont = workbook.createFont();
headerFont.setBold(true);
CellStyle headerStyle = workbook.createCellStyle();
headerStyle.setFont(headerFont);
headerStyle.setFillForegroundColor(IndexedColors.YELLOW.getIndex());
headerStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
headerStyle.setAlignment(HorizontalAlignment.CENTER);
Object[][] data = new Object[][] {
new Object[] {"Part #", "Description", "Price", "Make"},
new Object[] {"cb82c02", "Some Part", 2.99, "ACME"}
};
Sheet sheet = workbook.createSheet();
for (int r = 0; r < data.length; r++) {
Row row = sheet.createRow(r);
for (int c = 0; c < data[0].length; c++) {
Cell cell = row.createCell(c);
if (r==0) cell.setCellStyle(headerStyle);
Object content = data[r][c];
if (content instanceof String) {
cell.setCellValue((String)content);
} else if (content instanceof Double) {
cell.setCellValue((Double)content);
}
}
}
for (int c = 0; c < data[0].length; c++) {
sheet.autoSizeColumn(c);
}
workbook.write(fileout);
}
}
}
结果:
关于java - POI CellStyle 似乎未应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59162122/
我正在使用 Java 中的 Apache POI 库构建 Excel 文件。我想要多个具有不同颜色的单元格,因此我创建了一种方法来构建我需要的样式。然后,我调用此方法来应用我需要的样式。 不幸的是,最
请注意:我看到一个非常提出的类似问题here但这个答案并不是很确定(我无法辨别实际的修复是什么)。如果有人可以向我解释该问题/答案如何解决我当前的问题,我会很乐意自己删除这个问题!只是请不要将 DV/
我不明白为什么会发生这种情况,首先我尝试在第一行的列标题中应用粗体文本,然后我想将标题单元格的边框设置为中等,但此中等边框样式应用于工作表中的所有单元格。在下面的相同代码中还有更多问题: 列标题(第一
我正在尝试对齐文本。这是我的 pom.xml: org.apache.poi poi-ooxml 3.17 在我的代码中:
我有一些代码,例如: CellStyle cs2 = wb.createCellStyle(); CellStyle cs4 = wb.createCellStyle(); cs4.setDataFo
我正在编写一个java代码,我必须比较两个Excel工作表,无论格式如何(xls或xlsx),并复制与新Excel工作表不同的行。然后我读到 WorkbookFactory 可以接受这两种格式。 下面
使用 apache POI ... 我使用了 workbook.CreateCellStyle(),如果一段时间后我需要删除创建的 CellStyle ... 如何从工作簿中删除它?我可以看到它仍然存
我有一个 Bootstrap-Table,它带有一个用于添加新数据行的按钮。我想为插入的每个新行的特定列(text2)的单元格着色。我正在使用内置方法 cellStyle(),如下所示:http://
我正在尝试获取 XLSX 文件单元格的字体颜色。 我正在使用 apache poi。 我能够获得单元格颜色,但不能获得字体颜色。 任何形式的建议将不胜感激。 谢谢 最佳答案 来自 XSSFCellSt
CellStyle stringStyle = workbook.createCellStyle(); stringStyle.setAlignment(HorizontalAlignment.CEN
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 4 年前。 Improve th
我正在尝试让自定义颜色在 Apache POI 中工作,但遇到了一个小问题。到目前为止,我一直在使用 IndexedColors,但作为调色板,它相当单调。因此,使用 RGB 格式进行颜色选择将帮助我
我想使用Apple给定的单元格样式value1对于我的细胞,我不确定这是如何正确完成的。设置单元格样式的唯一可能的方法是在Cell's initialization期间。 ,但我认为在这种情况下子类化
我的系统使用来自 Java 的 Apache POI 生成许多不同的 Excel 报告。 很多这些报告共享相同的样式。 我已经创建了一个 CellStyle 库供所有报告使用。我想知道是否有更简洁的方
例如,我有一些具有简单模型的 MVVM WPF 应用程序: public class MyObject { public string F1 { get; set; } public
正如您从标题中可以理解的那样,在第 41 行之后,即使通过调试我看到代码运行良好,我的风格也不适用。 我的功能是: private void writeTable(Table table,Row ro
环境: Primefaces 6.1 野蝇10 java 8 我遇到的问题是以下错误 Caused by: java.lang.NoSuchMethodError: org.apache.poi.ss
我想将一些记录写入 excel 但我知道 XSSFWorkbook 中的最大单元格样式是 64000。但记录超过 64000 并且考虑我想要将新的 cellstyle 应用于每个单元格,或者我将使用现
我想将 boolean 值写入 Excel 单元格,但不是将单元格样式设置为“逻辑”,而是将单元格样式设置为“数字”。 private void writeToDocument(XSSFWorkboo
我是一名优秀的程序员,十分优秀!