我使用的Apache POI提取段落文本顏色,是它可以讀取文本的背景色和前景色從MS Word段落如何從MS Word中使用Apache POI
1
A
回答
5
我得到了解決
HWPFDocument doc = new HWPFDocument(fs);
WordExtractor we = new WordExtractor(doc);
Range range = doc.getRange();
String[] paragraphs = we.getParagraphText();
for (int i = 0; i < paragraphs.length; i++) {
org.apache.poi.hwpf.usermodel.Paragraph pr = range.getParagraph(i);
System.out.println(pr.getEndOffset());
int j=0;
while (true) {
CharacterRun run = pr.getCharacterRun(j++);
System.out.println("-------------------------------");
System.out.println("Color---"+ run.getColor());
System.out.println("getFontName---"+ run.getFontName());
System.out.println("getFontSize---"+ run.getFontSize());
if(run.getEndOffset()==pr.getEndOffset()){
break;
}
}
}
2
我發現它在:
CharacterRun run = para.getCharacterRun(i)
i
應該是整數,應該增加這樣的代碼將是如下:
int c=0;
while (true) {
CharacterRun run = para.getCharacterRun(c++);
int x = run.getPicOffset();
System.out.println("pic offset" + x);
if (run.getEndOffset() == para.getEndOffset()) {
break;
}
}
0
if (paragraph != null)
{
int numberOfRuns = paragraph.NumCharacterRuns;
for (int runIndex = 0; runIndex < numberOfRuns; runIndex++)
{
CharacterRun run = paragraph.GetCharacterRun(runIndex);
string color = getColor24(run.GetIco24());
}
}
GetColor24函數進行轉換顏色的十六進制格式的C#
public static String getColor24(int argbValue)
{
if (argbValue == -1)
return "";
int bgrValue = argbValue & 0x00FFFFFF;
int rgbValue = (bgrValue & 0x0000FF) << 16 | (bgrValue & 0x00FF00)
| (bgrValue & 0xFF0000) >> 16;
StringBuilder result = new StringBuilder("#");
String hex = rgbValue.ToString("X");
for (int i = hex.Length; i < 6; i++)
{
result.Append('0');
}
result.Append(hex);
return result.ToString();
}
0
如果您正在使用的docx(OOXML),你可能想看看這個:
import java.io.*
import org.apache.poi.xwpf.usermodel.XWPFDocument
fun test(){
try {
val file = File("file.docx")
val fis = FileInputStream(file.absolutePath)
val document = XWPFDocument(fis)
val paragraphs = document.paragraphs
for (para in paragraphs) {
println("-- ("+para.alignment+") " + para.text)
para.runs.forEach { it ->
println(
"text:" + it.text() + " "
+ "(color:" + it.color
+ ",fontFamily:" + it.fontFamily
+ ")"
)
}
}
fis.close()
} catch (e: Exception) {
e.printStackTrace()
}
}
相關問題
- 1. MS Word中的Apache POI頁腳問題
- 2. Java:使用apache POI如何將ms word文件轉換爲pdf?
- 3. 如何使用Apache POI從MS Word文檔的文本框中獲取文本?
- 4. Apache POI Word教程。
- 5. 使用Apache POI在MS Word文檔中添加文本
- 6. 如何使用Apache Word POI在word文件中創建Combobox?
- 7. 如何在MS Word文檔中使用apache POI在rowspan和colspan中創建表?
- 8. 無法使用apache poi更改ms-word文件(XWPF)的方向
- 9. 閱讀MS Excel中使用Apache POI
- 10. 使用Java,Apache POI寫入word tablecell?
- 11. 使用poi轉換ms word 2007
- 12. 使用Apache POI將Word轉換爲HTML
- 13. 使用Apache POI編輯Word文檔
- 14. 無法在使用Apache POI的MS Word中應用表格樣式
- 15. 使用Apache POI從Word文檔中讀取部分
- 16. 如何使用POI語言添加表格MS Word
- 17. 如何使用Apache POI
- 18. 如何使用addMergedRegion apache poi?
- 19. 如何使用Apache POI
- 20. 如何使用Apache POI
- 21. 如何使用Apache POI
- 22. 如何使用Apache POI
- 23. 如何使用apache poi爲word文檔設置頁邊距?
- 24. 使用Apache POI將任何形狀插入到word文檔中
- 25. 如何使用Apache POI讀取MS Excel文件?
- 26. 在JAVA中使用Apache POI和iText創建Word(DOC)中的PDF
- 27. 使用Apache POI
- 28. 使用Apache POI
- 29. 是否可以使用Apache POI解析MS Word並將其轉換爲XML?
- 30. 使用Apache POI的CTPageSZ類中的錯誤Java NetBeans Word文檔
要將代碼格式化爲代碼 - 在行首添加4個空格。 – Artemix 2012-11-20 10:45:55