svg と html への保存についてもう少し説明します。
svg は画像で、svg への保存は Excel の印刷ビューを計算するレンダリング用です。Png 画像への保存と同じです。
html への保存では、保存した html を Excel に読み込む要件を考慮する必要があります。Excel で保存した html と一致する必要があります。
そのため、svg への保存と html への保存の結果は異なる場合があります。
@jishangyang
社内の問題追跡システムで新しいチケットを開き、無料サポート ポリシー に記載されている条件に従って修正を提供します。
問題 ID:
CELLSJAVA-46202 - ファイルを HTML に保存する際のテキストの配置が正しくない
CELLSJAVA-46203 - ファイルを HTML に保存する際の余分な境界線が追加される
CELLSJAVA-46204 - ファイルを HTML に保存する際のパターンが欠落する
優先サポートが必要な場合は、有料サポート サービス もご利用になり、有料サポート管理チームに直接アクセスすることもできます。
問題が解決しましたのでお知らせいたします。修正は、2025 年 1 月前半にリリース予定の次期リリース (Aspose.Cells v25.1) に含まれます。次のバージョンがリリースされたらお知らせします。
添付ファイルは修正後の結果です。
output.zip (6.0 KB)
The issues you have found earlier (filed as CELLSJAVA-46204,CELLSJAVA-46203,CELLSJAVA-46202) have been fixed in Aspose.Cells for Java 25.1.
ExcelToHtml.zip (395.6 KB)
我用 Aspose.Cells for Java 25.1版尝试了,有些问题确认已经解决,但是还有几个问题还存在,麻烦帮忙解决一下,已经都放在压缩包中了。
@jishangyang
通过使用样例文件和代码在最新版本v25.1上进行测试,我们可以复现问题。当保存文件到html后,发现了文本和边框之间的间距消失,出现额外的横线和文本覆盖边框等问题。
我们已经在内部问题跟踪系统中打开了以下新问题单,并将根据Free Support Policies中提到的条款提供修复。
问题单号:
CELLSJAVA-46265:将文件保存为html时,文本和边框之间的间距消失
CELLSJAVA-46266:将文件保存到html时会出现额外的横线
CELLSJAVA-46267:将文件保存为html时,文本会覆盖边框
关于文本和边框间距以及额外的横线问题,如果你用MS-Excel打开然后保存为Html文件,会发现有同样的现象。Aspose.Cells遵循MS-Excel的规则。请允许我分别稍做一下解释:1,我发现在您提供的Excel里,文本和边框之间并没有与间距相关的样式设置,如果给输出的html加上间距,那么从html转成Excel就会多出额外的间距。而之所以在Excel看到有间距,应该是因为Excel本身的设计(比如用OpenOffice打开你会发现间距没那么明显)。2,关于额外的横线(位于"F9:M9"顶部),是因为位于该单元格的正上方的单元格(“F8:M8”)设置了底边框,同时自身又设置了上边框。因此为了保持与Excel样式的一致性,输出的html的相关的<td>
的会设置相应的边框样式(对应的class='x37’和class=‘x24’)。我们建议最好的处理方式是去掉(“F9:M9”)的顶部边框。
关于问题单CELLSJAVA-46267(文本覆盖边框),请确保您的系统上安装了MS ゴシック字体。
当保存为html文件时,如果系统里没有所需要的字体,会查找其他字体代替来计算文本宽度。通过下面的代码可以得到哪些字体被替换:
try {
Workbook wb = new Workbook(srcFile);
HtmlSaveOptions saveOptions = new HtmlSaveOptions();
saveOptions.setWarningCallback(new MyWarningCallback());
wb.save(destFile, saveOptions);
} catch (Exception e) {
e.printStackTrace();
}
public static class MyWarningCallback implements IWarningCallback {
@Override
public void warning(WarningInfo warningInfo) {
if (warningInfo.getType() == ExceptionType.FontSubstitution) {
// Prints warning info
}
}
}
MS ゴシック字体不支持该文本,这句没太明白是什么意思? 我理解就是我电脑上有MS ゴシック字体,用咱们插件转换也会被替换么?
使用的文本中包含了MS ゴシック字体不支持的字符或符号。虽然该字体可以显示一些中文字符,但可能不支持所有字符,特别是一些复杂的或不常用的字符。
如果你的电脑上安装了MS ゴシック字体,但文本中包含的字符超出了该字体的支持范围,Aspose.Cells也会将用其它字体替换。
能告诉我下,是什么原因造成的么,或者说是字体原因造成的excel模板和生成的html显示不一致么?
某些字体加粗后的文本宽度计算存在偏差。现在改变了计算方式,可以得到正确的结果了。
该修复包含在计划于 2023 年 3 月上半月即将发布的版本 (Aspose.Cells v25.3) 。下一个版本发布时,您将收到通知。
在保存文件时选择将字体嵌入到 Excel 文件中,这样即使其他计算机没有该字体,也能正确显示。 如果我把字体嵌入到excel中,那么我是不是用咱们工具转换的时候就不需要考虑字体问题了,aspose通过excel转svg和pdf的时候就能直接读取excel模板中存的字体了
这种不确定有没有字体出现在程序里总出问题,我不能通过把字体设置到excel文件中来解决这个问题么?咱们excel转svg和pdf的时候,会先读取excel文件中设置的字体么?
@jishangyang
你可以通过把字体设置到excel文件中来解决问题。但是当使用Aspose进行转换到svg和pdf时,需要确保字体可用。以下是 Aspose.Cells API 在幕后执行的过程。
- API试图在文件系统中找到与电子表格中使用的确切字体名称匹配的字体。
- 如果API无法找到具有相同名称的精确字体,则尝试使用工作簿的DefaultStyle.Font属性下指定的默认字体。
- 如果API无法找到工作簿的DefaultStyle.Font属性下定义的字体,则尝试使用PdfSaveOptions.DefaultFont或ImageOrPrintOptions.DefaultFont属性下指定的字体。
- 如果API无法找到PdfSaveOptions.DefaultFont或ImageOrPrintOptions.DefaultFont属性下定义的字体,则尝试使用FontConfigs.DefaultFontName属性下指定的字体。
- 如果API无法找到FontConfigs.DefaultFontName属性下定义的字体,则尝试从所有可用字体中选择最合适的字体。
- 最后,如果API在文件系统中找不到任何字体,则使用Arial呈现电子表格。