我使用了最新的apache poi
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
但我无法设置加粗字体,下面的代码不起作用
font.setBold(true);
因为默认是真的
set a boolean value for the boldness to use. If omitted, the default value is true.
并且不存在setBoldWeight
方法
那么如何在最新的apache poi中设置大胆的重量?
码
XSSFWorkbook wb = new XSSFWorkbook()
XSSFSheet sheet = wb.createSheet();
XSSFCell cell = sheet.createRow(0).createCell(0);
cell.setCellValue("hello world");
XSSFCellStyle cellStyle = wb.createCellStyle();
XSSFFont font = wb.createFont();
font.setBold(true);
cellStyle.setFont(font);
cell.setCellStyle(cellStyle);
try (FileOutputStream fos = new FileOutputStream("bold_test.xls")) {
wb.write(fos);
}
效果
和大胆的效果应该是这样的
答案 0 :(得分:0)
实际上它是Mac Numbers错误
答案 1 :(得分:0)
Mac Numbers无法正确解释<b val="true"/>
。但这违反了规范。请参阅xmlschema-2 boolean:“定义为·boolean的数据类型的实例可以包含以下法律文字{true,false,1,0}。”。
但它会正确解释<b />
。这也可以将Font
标记为粗体。这也意味着“如果省略,则默认值为true。”。如果b
标记在那里但没有值,true
和false
,则默认为true
。要设置非粗体,必须删除b
标记,或者必须设置<b val="false"/>
或<b val="0"/>
。 apache poi
做得最好,最兼容。它会删除b
标记。
同样适用于i
talic和s
trikeout。
apache poi
开发人员团队的提示:考虑设置<b />
,<i />
和<s />
而不设置值true
。这将是最兼容的。
尝试:
import java.io.FileOutputStream;
import org.apache.poi.xssf.usermodel.*;
public class CreateExcelFontBold {
public static void main(String[] args) throws Exception {
XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet();
XSSFCell cell = sheet.createRow(0).createCell(0);
cell.setCellValue("hello world");
XSSFCellStyle cellStyle = wb.createCellStyle();
XSSFFont font = wb.createFont();
//font.setBold(true); // <b val="true"/> does not work using Mac Numbers
font.getCTFont().addNewB(); // maybe <b /> will work?
cellStyle.setFont(font);
cell.setCellStyle(cellStyle);
try (FileOutputStream fos = new FileOutputStream("bold_test.xlsx")) {
wb.write(fos);
}
}
}