Excel字体转完不正确

数据库查询数据通过创建一个excel字节流,没有excel文件的情况下,用com.aspose.cells插件转换的时候,字体会默认excel单元格内字体都是“等线”,但是转完之后变成其他字体,是什么情况?

@jishangyang,

您能否详细说明您的查询或问题,并提供有关您的要求的更多详细信息。 另外,请向我们提供示例代码和示例文件来演示您的问题。 我们将检查您的问题并尽快为您提供帮助。

@jishangyang,
如果你想改变默认字体,你可以参考以下代码:

Workbook wb = new Workbook();
Cell a1 = wb.getWorksheets().get(0).getCells().get("A1");
a1.setValue("test data");
System.out.println(a1.getStyle().getFont().getName());

Style style = wb.getDefaultStyle();
style.getFont().setName("宋体");

//set default style
wb.setDefaultStyle(style);

System.out.println(a1.getStyle().getFont().getName());
wb.save(filePath + "out_java.xlsx");

スクリーンショット 2023-09-07 184122.png (91.3 KB)
不起作用!

@jishangyang,
通过使用您提供的截图里的代码进行测试,我们依然能够得到正确的结果。请查看附件 (33.9 KB) 。

你愿意提供你的样例文件和具体的环境信息吗?这对我们定位问题将会很有帮助。收到您的文件和环境信息后,我们很快就会检查。

Desktop.7z (7.7 MB)
麻烦您看下动态效果,里面有demo的excel文件。这个excel单元格的书式没办法正确设置

@jishangyang,
通过您的样例文件,我们能够复现设置默认样式字体后,单元格的字体没有改变的情况。通过设置默认字体的方式不能很好的解决您的问题。
您能否详细描述您的问题,并描述您期望的结果。如果能提供样例代码和文件,并且提供截图标明错误的地方,这将对我们定位并解决问题很有帮助。

现在问题是因为字体不能正确设置,g标签显示的时候有压线情况发生。

スクリーンショット 2023-09-07 184122.png (18.7 KB)

@jishangyang
你好, 你这个文件的字体会在不同区域或者国度会不一样。
请看文档

如果你想要显示中文字体等线, 请设置区域:

LoadOptions options = new LoadOptions();
options.setRegion(CountryCode.CHINA);
Workbook book = new Workbook(dir + "demo.xlsx",options);

但是我想你的客户需要的是日语字体,所以现在输出的日语字体是你的客户所需。
说实话, 我建议不要设置可变字体。

好的,我明天固定一个区域试试,可以固定为日本么setRegion 这个?

@jishangyang
如果你要输出到svg,图形和pdf, 请确保生成环境有文档中所需的字体, 不然为了正确显示文档我们需要替换字体。

@jishangyang
可以设置为日本, 但是设置为日本, 默认字体就是日语字体。

好的,谢谢,我明天试一试!

@jishangyang
不客气。如果你有任何疑问,请随时联系我们。

@jishangyang
微软这个主题字体虽然能使不同区域的人默认使用当地的字体, 但是经常使人混淆,不同地区的机器显示结果不一样。其实从程序员的角度来看,最好是不要设置主题字体, 但是我们不能限制用户的行为.

@John.He
设置文件的默认样式, 只能对没有设置样式的单元格起作用。如果单元格上已经有样式, 设置默认样式是不能改变单元的样式。这一点Aspose.Cells 和Excel是一样的。

字体转换的话,是需要服务器上有所有的excel里的字体才能转换么?如果excel里有的字体在服务器上没有,插件转换的时候生成svg是什么字体?

@jishangyang,

是的,您需要在服务器上拥有所有必需的字体。 我们建议您阅读有关 Aspose.Cells 如何选择渲染字体的主题,并查看 Aspose.Cells 字体替换机制的详细信息以供您完整参考。
https://docs.aspose.com/cells/java/configuring-fonts-for-rendering-spreadsheets/