java Docx4j更新表格列表/图表列表
我正在更新一个表格列表,一个数字列表。我在网上看到了一个解决方案,你可以创建一个宏,然后插入它:
package org.docx4j.samples;
import javax.xml.bind.JAXBContext;
import org.docx4j.openpackaging.io.SaveToZipFile;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
import org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart;
public class MacroEnable {
public static JAXBContext context = org.docx4j.jaxb.Context.jc;
/**
* @param args
*/
public static void main(String[] args) throws Exception {
String inputfilepath = "/home/dev/workspace/docx4all/sample-docs/earth.docx";
String outputfilepath = "/home/dev/docm.docm";
// Open a document from the file system
// 1. Load the Package
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(new java.io.File(inputfilepath));
MainDocumentPart wordDocumentPart = wordMLPackage.getMainDocumentPart();
// Get vbaProject.bin, and attach it to wordDocumentPart
java.io.InputStream is = new java.io.FileInputStream("/home/dev/vbaProject.bin" );
org.docx4j.openpackaging.parts.WordprocessingML.VbaProjectBinaryPart vbaProject
= new org.docx4j.openpackaging.parts.WordprocessingML.VbaProjectBinaryPart();
vbaProject.setBinaryData(is);
wordDocumentPart.addTargetPart(vbaProject);
// Get /word/vbaData.xml, and attach it to vbaProject
org.docx4j.openpackaging.parts.WordprocessingML.VbaDataPart vbaData
= new org.docx4j.openpackaging.parts.WordprocessingML.VbaDataPart();
java.io.InputStream is2 = new java.io.FileInputStream("/home/dev/vbaData.xml" );
vbaData.setDocument( is2 );
vbaProject.addTargetPart( vbaData);
// Change the Word document's content type!
wordDocumentPart.setContentType( new org.docx4j.openpackaging.contenttype.ContentType(
org.docx4j.openpackaging.contenttype.ContentTypes.WORDPROCESSINGML_DOCUMENT_MACROENABLED ) );
// .. but that's a dumb setter right now :(
// it doesn't actually make the change in ContentTypeManager. So do that:
org.docx4j.openpackaging.contenttype.ContentTypeManager ctm
= wordMLPackage.getContentTypeManager();
org.docx4j.openpackaging.parts.PartName partName
= wordDocumentPart.getPartName();
ctm.removeContentType( partName );
ctm.addOverrideContentType( new java.net.URI("/word/document.xml"),
org.docx4j.openpackaging.contenttype.ContentTypes.WORDPROCESSINGML_DOCUMENT_MACROENABLED);
// Save it
SaveToZipFile saver = new SaveToZipFile(wordMLPackage);
saver.save(outputfilepath);
}
}
它可能已经过时,因为功能:
vbaData.setDocument( is2 );
根本不存在。有人知道如何解决更新表格列表/人物列表的问题,或者如何正确上传宏吗
共 (0) 个答案