gpt4 book ai didi

java - 如何使用 Apache POI 制作垂直文本单元格样式?

转载 作者:行者123 更新时间:2023-11-30 02:39:59 24 4
gpt4 key购买 nike

最近遇到一个问题:我需要用java导出一个excel(xlsx),其中必须包含这种单元格样式:

enter image description here

我用这个竖排文本制作了一个 Excel 文件,并导出为 xml 文件。然后我发现该样式有一个名为“VerticalText”的属性:

enter image description here

根据经验,我选择了 Apache POI。但我找不到任何方法用 POI 生成单元格样式。我只能找到rotate方法,无法满足要求。

所以我阅读了更多POI的代码,发现单元格样式是从一些xsb文件构建的,该文件也不包含垂直文本。

非常感谢任何帮助。

最佳答案

图片中的 XML 是 Excel 2003 SpreadsheetML。但是*.xlsx文件是包含 Office Open XML 文件的 ZIP 存档。在该 ZIP 存档中 styles.xml包含:

...
<cellXfs count="2">
...
<xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0">
<alignment textRotation="255"/>
</xf>
</cellXfs>
...

<alignment textRotation="255"/>用于垂直文本。

这可以使用 apache poi 设置像这样:

import java.io.FileOutputStream;

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


public class CreateXSSFVerticalText {

public static void main(String[] args) throws Exception {
Workbook workbook = new XSSFWorkbook();

CellStyle cellStyle = workbook.createCellStyle();
cellStyle.setRotation((short)255);

Sheet sheet = workbook.createSheet();
Row row = sheet.createRow(0);
Cell cell = row.createCell(0);
cell.setCellValue("test");
cell.setCellStyle(cellStyle);


FileOutputStream fileOut = new FileOutputStream("CreateXSSFVerticalText.xlsx");
workbook.write(fileOut);
fileOut.close();
workbook.close();
}
}

由于 Office Open XML 格式(如 *.xlsx )是包含 XML 文件的 ZIP 存档,因此很容易确定必要的 XML 属性。只需创建一个简单的 *.xlsx使用 Excel 具有所需格式的文件图形用户界面。然后解压*.xlsx文件并查看 xl/styles.xml .

关于java - 如何使用 Apache POI 制作垂直文本单元格样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42053926/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com