org.apache.poi.openxml4j.opc.OPCPackage Java Examples
The following examples show how to use
org.apache.poi.openxml4j.opc.OPCPackage.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: Excel2007Reader.java From o2oa with GNU Affero General Public License v3.0 | 7 votes |
/** * 遍历工作簿中所有的电子表格 * @param filename * @param fileKey * @throws Exception */ public void process( String filename ) throws Exception { OPCPackage pkg = OPCPackage.open( filename ); XSSFReader r = new XSSFReader(pkg); SharedStringsTable sst = r.getSharedStringsTable(); XMLReader parser = fetchSheetParser(sst); Iterator<InputStream> sheets = r.getSheetsData(); while (sheets.hasNext()) { curRow = 0; sheetIndex++; InputStream sheet = sheets.next(); InputSource sheetSource = new InputSource(sheet); parser.parse( sheetSource ); sheet.close(); } //数据读取完成 }
Example #2
Source File: Excel2007Reader.java From o2oa with GNU Affero General Public License v3.0 | 7 votes |
/**只遍历一个电子表格,其中sheetId为要遍历的sheet索引,从1开始,1-3 * @param filename * @param sheetId * @throws Exception */ public void processOneSheet(String filename,int sheetId) throws Exception { OPCPackage pkg = OPCPackage.open(filename); XSSFReader r = new XSSFReader(pkg); SharedStringsTable sst = r.getSharedStringsTable(); XMLReader parser = fetchSheetParser(sst); // 根据 rId# 或 rSheet# 查找sheet InputStream sheet2 = r.getSheet( "rId"+sheetId); sheetIndex++; InputSource sheetSource = new InputSource(sheet2); parser.parse(sheetSource); sheet2.close(); }
Example #3
Source File: Excel2007Reader.java From o2oa with GNU Affero General Public License v3.0 | 6 votes |
/** * 遍历工作簿中所有的电子表格 * @param filename * @param fileKey * @throws Exception */ public void process( InputStream is ) throws Exception { OPCPackage pkg = OPCPackage.open( is ); XSSFReader r = new XSSFReader(pkg); SharedStringsTable sst = r.getSharedStringsTable(); XMLReader parser = fetchSheetParser(sst); Iterator<InputStream> sheets = r.getSheetsData(); while (sheets.hasNext()) { curRow = 0; sheetIndex++; InputStream sheet = sheets.next(); InputSource sheetSource = new InputSource(sheet); parser.parse( sheetSource ); sheet.close(); } }
Example #4
Source File: Excel2007Reader.java From o2oa with GNU Affero General Public License v3.0 | 6 votes |
/** * 遍历工作簿中所有的电子表格 * @param filename * @param fileKey * @throws Exception */ public void process( String filename ) throws Exception { OPCPackage pkg = OPCPackage.open( filename ); XSSFReader r = new XSSFReader(pkg); SharedStringsTable sst = r.getSharedStringsTable(); XMLReader parser = fetchSheetParser(sst); Iterator<InputStream> sheets = r.getSheetsData(); while (sheets.hasNext()) { curRow = 0; sheetIndex++; InputStream sheet = sheets.next(); InputSource sheetSource = new InputSource(sheet); parser.parse( sheetSource ); sheet.close(); } //数据读取完成 }
Example #5
Source File: OOXMLBleach.java From DocBleach with MIT License | 6 votes |
void sanitize(BleachSession session, OPCPackage pkg, PackagePart part) { LOGGER.trace("Part name: {}", part.getPartName()); String contentType = part.getContentType(); LOGGER.debug("Content type: {} for part {}", contentType, part.getPartName()); // Sample content types: // vnd.ms-word.vbaData+xml, vnd.ms-office.vbaProject // cf https://msdn.microsoft.com/fr-fr/library/aa338205(v=office.12).aspx ContentType type = part.getContentTypeDetails(); if (isForbiddenType(type) || isStrangeContentType(type)) { LOGGER.debug(SUSPICIOUS_OOXML_FORMAT, contentType, part.getPartName(), part.getSize()); deletePart(pkg, part.getPartName()); Threat threat = Threat.builder() .type(ThreatType.ACTIVE_CONTENT) .severity(ThreatSeverity.HIGH) .action(ThreatAction.REMOVE) .location(part.getPartName().getName()) .details("Forbidden content type: " + type) .build(); session.recordThreat(threat); } }
Example #6
Source File: XSSFUtil.java From javautils with Apache License 2.0 | 6 votes |
public void processAllSheets(String filename) throws Exception { OPCPackage pkg = OPCPackage.open(filename); XSSFReader r = new XSSFReader( pkg ); SharedStringsTable sst = r.getSharedStringsTable(); XMLReader parser = fetchSheetParser(sst); Iterator<InputStream> sheets = r.getSheetsData(); while(sheets.hasNext()) { System.out.println("Processing new sheet:\n"); InputStream sheet = sheets.next(); InputSource sheetSource = new InputSource(sheet); parser.parse(sheetSource); sheet.close(); System.out.println(""); } }
Example #7
Source File: Excel2007Reader.java From o2oa with GNU Affero General Public License v3.0 | 6 votes |
/** * 遍历工作簿中所有的电子表格 * @param filename * @param fileKey * @throws Exception */ public void process( String filename ) throws Exception { OPCPackage pkg = OPCPackage.open(filename); XSSFReader r = new XSSFReader(pkg); SharedStringsTable sst = r.getSharedStringsTable(); XMLReader parser = fetchSheetParser(sst); Iterator<InputStream> sheets = r.getSheetsData(); while (sheets.hasNext()) { curRow = 0; sheetIndex++; InputStream sheet = sheets.next(); InputSource sheetSource = new InputSource(sheet); parser.parse( sheetSource ); sheet.close(); } //数据读取完成 }
Example #8
Source File: Poi3Test.java From easyexcel with Apache License 2.0 | 6 votes |
@Test public void Encryption() throws Exception { String file = TestFileUtil.getPath() + "large" + File.separator + "large07.xlsx"; POIFSFileSystem fs = new POIFSFileSystem(); EncryptionInfo info = new EncryptionInfo(EncryptionMode.agile); Encryptor enc = info.getEncryptor(); enc.confirmPassword("foobaa"); OPCPackage opc = OPCPackage.open(new File(file), PackageAccess.READ_WRITE); OutputStream os = enc.getDataStream(fs); opc.save(os); opc.close(); // Write out the encrypted version FileOutputStream fos = new FileOutputStream("D:\\test\\99999999999.xlsx"); fs.writeFilesystem(fos); fos.close(); fs.close(); }
Example #9
Source File: Excel2007Reader.java From o2oa with GNU Affero General Public License v3.0 | 6 votes |
/** * 遍历工作簿中所有的电子表格 * @param is * @param fileKey * @throws Exception */ public void process( InputStream is ) throws Exception { OPCPackage pkg = OPCPackage.open( is ); XSSFReader r = new XSSFReader(pkg); SharedStringsTable sst = r.getSharedStringsTable(); XMLReader parser = fetchSheetParser(sst); Iterator<InputStream> sheets = r.getSheetsData(); while (sheets.hasNext()) { curRow = 0; sheetIndex++; InputStream sheet = sheets.next(); InputSource sheetSource = new InputSource(sheet); parser.parse( sheetSource ); sheet.close(); } //数据读取完成 }
Example #10
Source File: M2DocTestUtils.java From M2Doc with Eclipse Public License 1.0 | 6 votes |
/** * Gets the textual element of the .docx at the given {@link URI}. * * @param uriConverter * the {@link URIConverter} * @param uri * the .docx {@link URI} * @return the textual element of the .docx at the given {@link URI} */ public static String getTextContent(URIConverter uriConverter, URI uri) { String result = ""; try (InputStream is = uriConverter.createInputStream(uri); OPCPackage oPackage = OPCPackage.open(is); XWPFDocument document = new XWPFDocument(oPackage); XWPFWordExtractor ex = new XWPFWordExtractor(document);) { result += "===== Document Text ====\n"; result += ex.getText(); // CHECKSTYLE:OFF } catch (Throwable e) { // CHECKSTYLE:ON /* * if for some reason we can't use POI to get the text content then move along, we'll still get the XML and hashs */ } return result; }
Example #11
Source File: Xlsx2TmxHelper.java From translationstudio8 with GNU General Public License v2.0 | 6 votes |
public void parseXlsxFileAndWriteTmxBody(String fileName, AbstractWriter tmxWriter, IProgressMonitor monitor) throws ParserConfigurationException, SAXException, IOException, OpenXML4JException { this.tmxWriter = tmxWriter; this.monitor = monitor; File file = new File(fileName); long length = file.length(); monitor.beginTask("", countTotal(length)); OPCPackage p = OPCPackage.open(fileName, PackageAccess.READ); ReadOnlySharedStringsTable strings = new ReadOnlySharedStringsTable(p); XSSFReader xssfReader = new XSSFReader(p); XSSFReader.SheetIterator iter = (XSSFReader.SheetIterator) xssfReader.getSheetsData(); try { while (iter.hasNext()) { InputStream stream = iter.next(); parse(stream, strings, tmxWriter); stream.close(); // 目前只处理第一个sheet break; } } finally { p.close(); } monitor.done(); }
Example #12
Source File: WriteContextImpl.java From easyexcel with Apache License 2.0 | 6 votes |
private POIFSFileSystem openFileSystemAndEncrypt(File file) throws Exception { POIFSFileSystem fileSystem = new POIFSFileSystem(); Encryptor encryptor = new EncryptionInfo(EncryptionMode.standard).getEncryptor(); encryptor.confirmPassword(writeWorkbookHolder.getPassword()); OPCPackage opcPackage = null; try { opcPackage = OPCPackage.open(file, PackageAccess.READ_WRITE); OutputStream outputStream = encryptor.getDataStream(fileSystem); opcPackage.save(outputStream); } finally { if (opcPackage != null) { opcPackage.close(); } } return fileSystem; }
Example #13
Source File: RunProviderTests.java From M2Doc with Eclipse Public License 1.0 | 6 votes |
@Test public void testNonEmptyDoc() throws InvalidFormatException, IOException { try (FileInputStream is = new FileInputStream("resources/document/notEmpty/notEmpty-template.docx"); OPCPackage oPackage = OPCPackage.open(is); XWPFDocument document = new XWPFDocument(oPackage);) { TokenProvider iterator = new TokenProvider(document); XWPFRun run = iterator.next().getRun(); assertEquals("P1Run1 ", run.getText(run.getTextPosition())); run = iterator.next().getRun(); assertEquals("P1Run2", run.getText(run.getTextPosition())); run = iterator.next().getRun(); assertEquals(" P1Run3", run.getText(run.getTextPosition())); run = iterator.next().getRun(); assertEquals("P2Run1 ", run.getText(run.getTextPosition())); run = iterator.next().getRun(); assertEquals("P2Run2", run.getText(run.getTextPosition())); run = iterator.next().getRun(); assertEquals(" ", run.getText(run.getTextPosition())); run = iterator.next().getRun(); assertEquals("P2Run3", run.getText(run.getTextPosition())); run = iterator.next().getRun(); assertEquals("", run.getText(run.getTextPosition())); assertTrue(!iterator.hasNext()); } }
Example #14
Source File: RunProviderTests.java From M2Doc with Eclipse Public License 1.0 | 6 votes |
@Test(expected = NoSuchElementException.class) public void testAccessEmptyIterator() throws InvalidFormatException, IOException { try (FileInputStream is = new FileInputStream("resources/document/notEmpty/notEmpty-template.docx"); OPCPackage oPackage = OPCPackage.open(is); XWPFDocument document = new XWPFDocument(oPackage);) { TokenProvider iterator = new TokenProvider(document); iterator.next().getRun(); iterator.next().getRun(); iterator.next().getRun(); iterator.next().getRun(); iterator.next().getRun(); iterator.next().getRun(); iterator.next().getRun(); iterator.next().getRun(); iterator.next().getRun(); } }
Example #15
Source File: Excel2007Reader.java From o2oa with GNU Affero General Public License v3.0 | 6 votes |
/** * 遍历工作簿中所有的电子表格 * @param is * @param fileKey * @throws Exception */ public void process( InputStream is ) throws Exception { OPCPackage pkg = OPCPackage.open( is ); XSSFReader r = new XSSFReader(pkg); SharedStringsTable sst = r.getSharedStringsTable(); XMLReader parser = fetchSheetParser(sst); Iterator<InputStream> sheets = r.getSheetsData(); while (sheets.hasNext()) { curRow = 0; sheetIndex++; InputStream sheet = sheets.next(); InputSource sheetSource = new InputSource(sheet); parser.parse( sheetSource ); sheet.close(); } //数据读取完成 }
Example #16
Source File: Excel2007Reader.java From o2oa with GNU Affero General Public License v3.0 | 6 votes |
/** * 遍历工作簿中所有的电子表格 * @param filename * @param fileKey * @throws Exception */ public void process( String filename ) throws Exception { OPCPackage pkg = OPCPackage.open(filename); XSSFReader r = new XSSFReader(pkg); SharedStringsTable sst = r.getSharedStringsTable(); XMLReader parser = fetchSheetParser(sst); Iterator<InputStream> sheets = r.getSheetsData(); while (sheets.hasNext()) { curRow = 0; sheetIndex++; InputStream sheet = sheets.next(); InputSource sheetSource = new InputSource(sheet); parser.parse( sheetSource ); sheet.close(); } //数据读取完成 }
Example #17
Source File: Excel2007Reader.java From o2oa with GNU Affero General Public License v3.0 | 6 votes |
/** * 遍历工作簿中所有的电子表格 * @param filename * @param fileKey * @throws Exception */ public void process( String filename ) throws Exception { OPCPackage pkg = OPCPackage.open( filename ); XSSFReader r = new XSSFReader(pkg); SharedStringsTable sst = r.getSharedStringsTable(); XMLReader parser = fetchSheetParser(sst); Iterator<InputStream> sheets = r.getSheetsData(); while (sheets.hasNext()) { curRow = 0; sheetIndex++; InputStream sheet = sheets.next(); InputSource sheetSource = new InputSource(sheet); parser.parse( sheetSource ); sheet.close(); } //数据读取完成 }
Example #18
Source File: RunProviderTests.java From M2Doc with Eclipse Public License 1.0 | 6 votes |
@Test public void testNextWitLookAhead() throws InvalidFormatException, IOException { try (FileInputStream is = new FileInputStream("resources/document/notEmpty/notEmpty-template.docx"); OPCPackage oPackage = OPCPackage.open(is); XWPFDocument document = new XWPFDocument(oPackage);) { TokenProvider iterator = new TokenProvider(document); // CHECKSTYLE:OFF assertTrue(iterator.hasElements(7)); // CHECKSTYLE:ON XWPFRun run; run = iterator.lookAhead(1).getRun(); assertEquals("P1Run1 ", run.getText(run.getTextPosition())); run = iterator.next().getRun(); assertEquals("P1Run1 ", run.getText(run.getTextPosition())); run = iterator.lookAhead(1).getRun(); assertEquals("P1Run2", run.getText(run.getTextPosition())); run = iterator.lookAhead(2).getRun(); assertEquals(" P1Run3", run.getText(run.getTextPosition())); run = iterator.next().getRun(); assertEquals("P1Run2", run.getText(run.getTextPosition())); run = iterator.next().getRun(); assertEquals(" P1Run3", run.getText(run.getTextPosition())); assertTrue(iterator.hasElements(4)); } }
Example #19
Source File: RunIteratorTests.java From M2Doc with Eclipse Public License 1.0 | 6 votes |
@Test public void testNonEmptyDoc() throws InvalidFormatException, IOException { try (FileInputStream is = new FileInputStream("resources/document/notEmpty/notEmpty-template.docx"); OPCPackage oPackage = OPCPackage.open(is); XWPFDocument document = new XWPFDocument(oPackage);) { TokenIterator iterator = new TokenIterator(document); XWPFRun run = iterator.next().getRun(); assertEquals("P1Run1 ", run.getText(run.getTextPosition())); run = iterator.next().getRun(); assertEquals("P1Run2", run.getText(run.getTextPosition())); run = iterator.next().getRun(); assertEquals(" P1Run3", run.getText(run.getTextPosition())); run = iterator.next().getRun(); assertEquals("P2Run1 ", run.getText(run.getTextPosition())); run = iterator.next().getRun(); assertEquals("P2Run2", run.getText(run.getTextPosition())); run = iterator.next().getRun(); assertEquals(" ", run.getText(run.getTextPosition())); run = iterator.next().getRun(); assertEquals("P2Run3", run.getText(run.getTextPosition())); run = iterator.next().getRun(); assertEquals("", run.getText(run.getTextPosition())); assertTrue(!iterator.hasNext()); } }
Example #20
Source File: ExcelSource.java From morpheus-core with Apache License 2.0 | 5 votes |
/** * Opens the excel resource * @param resource the resource to open * @return an OPCPackage representing the excel resource * @throws IOException if an io problem occurs * @throws InvalidFormatException if the file has an incorrect format */ private OPCPackage open(Resource resource) throws IOException, InvalidFormatException { switch (resource.getType()) { case FILE: return OPCPackage.open(resource.asFile()); case URL: return OPCPackage.open(resource.asURL().getPath()); case INPUT_STREAM: return OPCPackage.open(resource.asInputStream()); default: throw new DataFrameException("Unsupported resource specified in ExcelRequest: " + resource); } }
Example #21
Source File: ExcelUtils.java From onetwo with Apache License 2.0 | 5 votes |
public static OPCPackage readPackage(String path){ try { OPCPackage pack = POIXMLDocument.openPackage(path); return pack; } catch (IOException e) { throw new RuntimeException("read word file["+path+"] error:"+e.getMessage()); } }
Example #22
Source File: TemplateValidationGeneratorTests.java From M2Doc with Eclipse Public License 1.0 | 5 votes |
/** * Ensure that the validation generation produces a document with an warning. * * @throws InvalidFormatException * @throws IOException * @throws DocumentParserException * @throws DocumentGenerationException */ @Test public void testWarningGeneration() throws InvalidFormatException, IOException, DocumentParserException, DocumentGenerationException { IQueryEnvironment queryEnvironment = org.eclipse.acceleo.query.runtime.Query .newEnvironmentWithDefaultServices(null); final File tempFile = File.createTempFile("testParsingErrorSimpleTag", ".docx"); try (DocumentTemplate documentTemplate = M2DocUtils.parse(URIConverter.INSTANCE, URI.createFileURI("resources/document/notEmpty/notEmpty-template.docx"), queryEnvironment, new ClassProvider(this.getClass().getClassLoader()), new BasicMonitor())) { final XWPFRun location = ((XWPFParagraph) documentTemplate.getDocument().getBodyElements().get(0)).getRuns() .get(0); documentTemplate.getBody().getValidationMessages().add(new TemplateValidationMessage( ValidationMessageLevel.WARNING, "XXXXXXXXXXXXXXXXXXXXXXXX", location)); M2DocUtils.serializeValidatedDocumentTemplate(URIConverter.INSTANCE, documentTemplate, URI.createFileURI(tempFile.getAbsolutePath())); } assertTrue(new File(tempFile.getAbsolutePath()).exists()); try (FileInputStream resIs = new FileInputStream(tempFile.getAbsolutePath()); OPCPackage resOPackage = OPCPackage.open(resIs); XWPFDocument resDocument = new XWPFDocument(resOPackage);) { final XWPFRun messageRun = M2DocTestUtils.getRunContaining(resDocument, "XXXXXXXXXXXXXXXXXXXXXXXX"); assertNotNull(messageRun); assertEquals("XXXXXXXXXXXXXXXXXXXXXXXX", messageRun.text()); assertEquals("FFA500", messageRun.getColor()); } tempFile.delete(); }
Example #23
Source File: TemplateValidationGeneratorTests.java From M2Doc with Eclipse Public License 1.0 | 5 votes |
/** * Ensure that the validation generation produces a document with an error. * * @throws InvalidFormatException * @throws IOException * @throws DocumentParserException * @throws DocumentGenerationException */ @Test public void testErrorGeneration() throws InvalidFormatException, IOException, DocumentParserException, DocumentGenerationException { IQueryEnvironment queryEnvironment = org.eclipse.acceleo.query.runtime.Query .newEnvironmentWithDefaultServices(null); final File tempFile = File.createTempFile("testParsingErrorSimpleTag", ".docx"); try (DocumentTemplate documentTemplate = M2DocUtils.parse(URIConverter.INSTANCE, URI.createFileURI("resources/document/notEmpty/notEmpty-template.docx"), queryEnvironment, new ClassProvider(this.getClass().getClassLoader()), new BasicMonitor())) { final XWPFRun location = ((XWPFParagraph) documentTemplate.getDocument().getBodyElements().get(0)).getRuns() .get(0); documentTemplate.getBody().getValidationMessages().add( new TemplateValidationMessage(ValidationMessageLevel.ERROR, "XXXXXXXXXXXXXXXXXXXXXXXX", location)); M2DocUtils.serializeValidatedDocumentTemplate(URIConverter.INSTANCE, documentTemplate, URI.createFileURI(tempFile.getAbsolutePath())); } assertTrue(new File(tempFile.getAbsolutePath()).exists()); try (FileInputStream resIs = new FileInputStream(tempFile.getAbsolutePath()); OPCPackage resOPackage = OPCPackage.open(resIs); XWPFDocument resDocument = new XWPFDocument(resOPackage);) { final XWPFRun messageRun = M2DocTestUtils.getRunContaining(resDocument, "XXXXXXXXXXXXXXXXXXXXXXXX"); assertNotNull(messageRun); assertEquals("XXXXXXXXXXXXXXXXXXXXXXXX", messageRun.text()); assertEquals("FF0000", messageRun.getColor()); } tempFile.delete(); }
Example #24
Source File: RunProviderTests.java From M2Doc with Eclipse Public License 1.0 | 5 votes |
@Test public void testLookAhead() throws InvalidFormatException, IOException { try (FileInputStream is = new FileInputStream("resources/document/notEmpty/notEmpty-template.docx"); OPCPackage oPackage = OPCPackage.open(is); XWPFDocument document = new XWPFDocument(oPackage);) { TokenProvider iterator = new TokenProvider(document); // CHECKSTYLE:OFF assertTrue(iterator.hasElements(7)); XWPFRun run; run = iterator.lookAhead(1).getRun(); assertEquals("P1Run1 ", run.getText(run.getTextPosition())); run = iterator.lookAhead(2).getRun(); assertEquals("P1Run2", run.getText(run.getTextPosition())); run = iterator.lookAhead(3).getRun(); assertEquals(" P1Run3", run.getText(run.getTextPosition())); run = iterator.lookAhead(4).getRun(); assertEquals("P2Run1 ", run.getText(run.getTextPosition())); run = iterator.lookAhead(5).getRun(); assertEquals("P2Run2", run.getText(run.getTextPosition())); run = iterator.lookAhead(6).getRun(); assertEquals(" ", run.getText(run.getTextPosition())); run = iterator.lookAhead(7).getRun(); assertEquals("P2Run3", run.getText(run.getTextPosition())); assertTrue(iterator.hasElements(7)); // CHECKSTYLE:ON } }
Example #25
Source File: ReadOnlySharedStringsTable.java From myexcel with Apache License 2.0 | 5 votes |
/** * @param pkg The {@link OPCPackage} to use as basis for the shared-strings table. * @param stringsCache stringsCache * @throws IOException If reading the data from the package fails. * @throws SAXException if parsing the XML data fails. * @since POI 3.14-Beta3 */ public ReadOnlySharedStringsTable(OPCPackage pkg, StringsCache stringsCache) throws IOException, SAXException { this.stringsCache = stringsCache; ArrayList<PackagePart> parts = pkg.getPartsByContentType(XSSFRelation.SHARED_STRINGS.getContentType()); // Some workbooks have no shared strings table. if (parts.size() > 0) { PackagePart sstPart = parts.get(0); readFrom(sstPart.getInputStream()); } }
Example #26
Source File: StreamingSheetTest.java From data-prep with Apache License 2.0 | 5 votes |
@Before public void setUp() throws Exception { OPCPackage pkg = OPCPackage.open(StreamingSheetTest.class.getResourceAsStream("../dates.xlsx")); XSSFReader reader = new XSSFReader(pkg); ReadOnlySharedStringsTable sst = new ReadOnlySharedStringsTable(pkg); StylesTable styles = reader.getStylesTable(); Iterator<InputStream> iter = reader.getSheetsData(); XMLEventReader parser = XMLInputFactory.newInstance().createXMLEventReader(iter.next()); final StreamingSheetReader streamingSheetReader = new StreamingSheetReader(sst, styles, parser, 10); streamingSheet = new StreamingSheet("name", streamingSheetReader); }
Example #27
Source File: OOXMLBleach.java From DocBleach with MIT License | 5 votes |
/** * The dummy file tries to prevent Microsoft Office from crashing because they forgot a lot of "!= * null" while checking if a resource is valid. * * @param pkg Document to put the file in */ private void pushDummyFile(OPCPackage pkg) throws InvalidFormatException { try (ByteArrayOutputStream bos = new ByteArrayOutputStream()) { bos.write(DUMMY_FILE_CONTENT.getBytes()); pkg.createPart( PackagingURIHelper.createPartName(DUMMY_FILE_PART_NAME), ContentTypes.TEXT_PLAIN, bos); } catch (IOException ex) { LOGGER.error( "Error occured while pushing the file in the document. But, it's not that critical so I'm gonna continue.", ex); } }
Example #28
Source File: OOXMLBleach.java From DocBleach with MIT License | 5 votes |
public void sanitize(OPCPackage pkg, BleachSession session) throws BleachException, InvalidFormatException { LOGGER.trace("File opened"); Iterator<PackagePart> it = getPartsIterator(pkg); pkg.ensureRelationships(); sanitize(session, pkg, pkg.getRelationships()); PackagePart part; while (it.hasNext()) { part = it.next(); sanitize(session, pkg, part); OOXMLTagHelper.removeExternalDataTagAndDDE(session, part); if (!part.isRelationshipPart()) { sanitize(session, part, part.getRelationships()); } if (part.isDeleted()) { continue; } remapContentType(session, part); } // If threats have been removed, then add the dummy file so the relationship // still refers to an existing dummy object. if (session.threatCount() > 0) { pushDummyFile(pkg); } }
Example #29
Source File: POIServices.java From M2Doc with Eclipse Public License 1.0 | 5 votes |
/** * Get OPCPackage from template file. * * @param uriConverter * the {@link URIConverter uri converter} to use. * @param templateURI * the template {@link URI} * @return OPCPackage * @throws IOException * IOException */ private OPCPackage getOPCPackage(URIConverter uriConverter, URI templateURI) throws IOException { OPCPackage oPackage; try (InputStream is = uriConverter.createInputStream(templateURI)) { try { oPackage = OPCPackage.open(is); } catch (InvalidFormatException e) { throw new IllegalArgumentException("Couldn't open template file", e); } } return oPackage; }
Example #30
Source File: Excel2007Reader.java From o2oa with GNU Affero General Public License v3.0 | 5 votes |
/**只遍历一个电子表格,其中sheetId为要遍历的sheet索引,从1开始,1-3 * @param filename * @param sheetId * @throws Exception */ public void processOneSheet(String filename,int sheetId) throws Exception { OPCPackage pkg = OPCPackage.open(filename); XSSFReader r = new XSSFReader(pkg); SharedStringsTable sst = r.getSharedStringsTable(); XMLReader parser = fetchSheetParser(sst); // 根据 rId# 或 rSheet# 查找sheet InputStream sheet2 = r.getSheet("rId"+sheetId); sheetIndex++; InputSource sheetSource = new InputSource(sheet2); parser.parse(sheetSource); sheet2.close(); }