java读取word文件并设置其字体样式_Java读取word文件,字体,颜色(示例代码)

本文介绍如何使用Java的POI库解析Word文档中的字体样式,包括颜色、下划线、粗体和斜体,并将内容转换为HTML,适用于在Android的TextView或WebView中展示。示例代码提供了两种处理方式,一种是生成Span样式用于WebView,另一种是生成Font样式适用于Html.fromHtml方法。
摘要由CSDN通过智能技术生成

在Android读取Word文件时,在网上查看时可以用tm-extractors,但好像没有提到怎么读取Word文档中字体的颜色,字体,上下标等相关的属性。但由于需要,要把doc文档中的内容(字体,下划线,颜色等)读取应用到android中(不包括图片和图表)。

后面采用的是poi三方jar包(原包太大,可以从源代码里自己抽取有用的一些代码减少包的大小)。

我的想法是:把doc中的内容解析出来后,加上html对应的标签,在android中通过Html.fromHtml在TextView中进行显示,或者通过WebView.loadData进行加载显示

但测试后,发现如果加载太多内容的话,在Android中效率不行。

效果(该图的效果是在TextView中的效果,在WebView中效果会更好些):

doc图:

lazy.gif

android图:

lazy.gif

做法1:(解析为span样式的,这种做法只能用WebView方式加载,Html.fromHtml无效)

Java代码  lazy.gif

/**Span样式

* 通过字体的样式进行加载

* @param inputStream

* @return

*/

public static String readDocToSpanByRun(InputStream inputStream) {

HWPFDocument hwpfDocument = null;

if(inputStream == null)

throw new RuntimeException("inputStream is null ...");

try{

hwpfDocument = new HWPFDocument(inputStream);

}catch(Exception e) {

throw new RuntimeException("HWPFDocment Exception", e);

}

Range allRange = hwpfDocument.getRange();

int length = allRange.numCharacterRuns();

StringBuffer sb = new StringBuffer();

CharacterRun cur;

String text = "";

for (int i = 0; i 

cur = allRange.getCharacterRun(i);

sb.append(CharacterRunUtils.toSpanType(cur));

text = CharacterRunUtils.getSpicalSysbomByRun(cur.text());

if(cur.getSubSuperScriptIndex() == 1)

sb.append("").append(text).append("");

else if(cur.getSubSuperScriptIndex()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值