请问有没有写过doc多个文档合并成一个文档的,poi版本是3.16的
用aspose实现可以吗
http://t.csdn.cn/GPKAI
@Slf4j
public class FileUtils {
/**
* 解析docx
*
* @param multipartFile
* @return
*/
public static String getDocxWord(MultipartFile multipartFile) {
String docWord = null;
// POIXMLTextExtractor extractor = (POIXMLTextExtractor) ExtractorFactory.createExtractor(bis);
// OPCPackage aPackage = extractor.getPackage();
try {
// XWPFWordExtractor docx = new XWPFWordExtractor(POIXMLDocument.openPackage(path));
XWPFDocument read = read(multipartFile);
if (read==null){
return null;
}
XWPFWordExtractor docx = new XWPFWordExtractor(read);
//提取.docx正文文本
docWord = docx.getText().trim();
log.info("解析doc文档成功:{}", docWord);
docx.close();
} catch (NullPointerException e) {
return null;
}catch (IOException e){
e.printStackTrace();
}
return docWord;
}
/**
* 解析doc
*
* @param multipartFile
* @return
*/
public static String getDocWord( MultipartFile multipartFile) {
String docxWord = "";
WordExtractor wordExtractor = null;
InputStream is =null;
try {
//解析doc文件
is = multipartFile.getInputStream();
try {
wordExtractor = new WordExtractor(is);
docxWord = wordExtractor.getText().trim();
log.info("解析docx文档成功:{}", docxWord);
} catch (IllegalArgumentException e) {
docxWord=getDocxWord(multipartFile);
}finally {
if (wordExtractor !=null){
wordExtractor.close();
}
if (is!=null){
is.close();
}
}
} catch (IOException e) {
log.error("解析docx文档失败", e);
}
return docxWord;
}
/**
* 读取文件内容
*
* @param multipartFile
* @return
*/
public static XWPFDocument read(MultipartFile multipartFile) {
// 判断文件是否为空
InputStream is = null;
if (!multipartFile.isEmpty()) {
try {
is = multipartFile.getInputStream();
XWPFDocument document = null;
try {
document = new XWPFDocument(is);
} catch (NotOfficeXmlFileException e) {
document=null;
}
return document;
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
public static void main(String[] args) throws Exception {
File file = new File("C:\\Users\\dcw\\Desktop\\2.doc");
MultipartFile multipartFile = fileToMultipartFile(file);
System.out.println(getDocWord(multipartFile));
}
}
在Apache POI 3.16版本中,可以使用以下步骤将多个doc文档合并成为一个文档:
XWPFDocument document = new XWPFDocument();
FileInputStream inputStream = new FileInputStream("document1.docx");
XWPFDocument doc1 = new XWPFDocument(inputStream);
inputStream.close();
inputStream = new FileInputStream("document2.docx");
XWPFDocument doc2 = new XWPFDocument(inputStream);
inputStream.close();
// 读取更多的文档
for (XWPFParagraph para : doc1.getParagraphs()) {
XWPFParagraph newPara = document.createParagraph();
newPara.createRun().setText(para.getText());
}
for (XWPFParagraph para : doc2.getParagraphs()) {
XWPFParagraph newPara = document.createParagraph();
newPara.createRun().setText(para.getText());
}
// 遍历更多的文档
FileOutputStream outputStream = new FileOutputStream("mergedDocument.docx");
document.write(outputStream);
outputStream.close();
注意,以上代码仅是示例,需要根据实际情况进行修改。另外,如果需要添加样式等更高级的操作,可以参考Apache POI官方文档。