We're sorry Aspose doesn't work properply without JavaScript enabled.

Free Support Forum - aspose.com

Word替换文本后转html,如何使替换后的文本在html代码中在同一个<span>标签中

    public void test() throws Exception {
    String resultPath = "D:\\opt\\compare\\图表6.docx";
    String savePath = "D:\\opt\\compare\\test\\图表6.html";
    String[] key = {"21.17%", "15.00%","营业收入"};
    String tage1="12345_";
    String tage2="_12345";
    String[] value = {tage1+"21.17%"+tage2,tage1+"15.00%"+tage2,tage1+"营业收入"+tage2};
    Document document=new Document(resultPath);
    for (int i = 0; i < 3; i++) {
        //查找整篇文档中所有的数据
        FindReplaceOptions options = new FindReplaceOptions();
        document.getRange().replace(key[i], value[i], options);

    }
    HtmlFixedSaveOptions htmlFixedSaveOptions = new HtmlFixedSaveOptions();
    htmlFixedSaveOptions.setExportEmbeddedCss(true);
    htmlFixedSaveOptions.setExportEmbeddedFonts(true);
    htmlFixedSaveOptions.setExportEmbeddedImages(true);
    htmlFixedSaveOptions.setShowPageBorder(false);
    document.save(savePath,htmlFixedSaveOptions);
   }

企业微信截图_16414594816081.png (126.1 KB)

我使用document.getRange().replace()方法将原word中的一些文本进行了替换,替换之后把他们转成了html,我使用浏览器打开了这个html,通过浏览器工具查看html源代码我发现,替换后的文本,例如12345_21.17%_12345被3个标签隔开了(如附件的图片所示),但我不希望它们被隔开,请问我应该怎样设置才能使12345_21.17%_12345被一个标签包裹,而不是被三个span标签包裹?(例如12345_21.17%_12345

图表6.docx (16.5 KB)
这是word文档

@baifang 内容不能在同一个跨度中,因为跨度使用不同的样式:

<div class="awdiv" style="left:5.4pt; top:1pt;">
	<span class="awspan awtext002" style="font-size:11pt; left:0pt; top:2.04pt;">12345_</span>
	<span class="awspan awtext001" style="font-size:11pt; left:33pt; top:2.39pt;">营业收入</span>
	<span class="awspan awtext002" style="font-size:11pt; left:0pt; top:17.54pt;">_12345</span>
</div>

如您所见,第一个和最后一个跨度使用awtext002 样式,而第二个跨度使用awtext001 样式。
如果比较这些样式,您会发现它们使用不同的字体。

.awtext001 {
	font-family:'KaiTi';
	font-style:normal;
	font-weight:bold;
}
.awtext002 {
	font-family:'Times New Roman';
	font-style:normal;
	font-weight:bold;
}

在您的原始文档中,东亚字体被明确指定并用于东亚内容。 但对于不是东亚内容,像数字默认字体使用“Times New Roman”

<w:r>
	<w:rPr>
		<w:rFonts w:eastAsia="楷体_GB2312"/>
		<w:b/>
		<w:bCs/>
		<w:color w:val="000000"/>
		<w:kern w:val="0"/>
		<w:sz w:val="22"/>
	</w:rPr>
	<w:t>营业收入</w:t>
</w:r>

企业微信截图_16415234371026.png (152.4 KB)

那请问为什么12345_21.17%_12345也会被隔开呢,按道理来说,它们都是数字,难道是因为style里的left和top不同吗?
是否能有什么办法强制这些数据放在一个range里,从而使导出来的文本在html里是在同一个标签中?

@baifang Html fixed 是文档的固定页面表示,即所有元素都是绝对定位的。 在这种情况下,部分文本位于不同的行并且具有不同的顶部位置。