testproblems.java
来自「EXCEL read and write」· Java 代码 · 共 169 行
JAVA
169 行
/** Licensed to the Apache Software Foundation (ASF) under one or more* contributor license agreements. See the NOTICE file distributed with* this work for additional information regarding copyright ownership.* The ASF licenses this file to You under the Apache License, Version 2.0* (the "License"); you may not use this file except in compliance with* the License. You may obtain a copy of the License at** http://www.apache.org/licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an "AS IS" BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.*/package org.apache.poi.hwpf.usermodel;import java.io.File;import java.io.FileInputStream;import junit.framework.TestCase;import org.apache.poi.EncryptedDocumentException;import org.apache.poi.hwpf.HWPFDocument;import org.apache.poi.hwpf.model.StyleSheet;/** * Test various problem documents * * @author Nick Burch (nick at torchbox dot com) */public class TestProblems extends TestCase { private String dirname = System.getProperty("HWPF.testdata.path"); protected void setUp() throws Exception { } /** * ListEntry passed no ListTable */ public void testListEntryNoListTable() throws Exception { HWPFDocument doc = new HWPFDocument(new FileInputStream( new File(dirname, "ListEntryNoListTable.doc"))); Range r = doc.getRange(); StyleSheet styleSheet = doc.getStyleSheet(); for (int x = 0; x < r.numSections(); x++) { Section s = r.getSection(x); for (int y = 0; y < s.numParagraphs(); y++) { Paragraph paragraph = s.getParagraph(y); //System.out.println(paragraph.getCharacterRun(0).text()); } } } /** * AIOOB for TableSprmUncompressor.unCompressTAPOperation */ public void testSprmAIOOB() throws Exception { HWPFDocument doc = new HWPFDocument(new FileInputStream( new File(dirname, "AIOOB-Tap.doc"))); Range r = doc.getRange(); StyleSheet styleSheet = doc.getStyleSheet(); for (int x = 0; x < r.numSections(); x++) { Section s = r.getSection(x); for (int y = 0; y < s.numParagraphs(); y++) { Paragraph paragraph = s.getParagraph(y); //System.out.println(paragraph.getCharacterRun(0).text()); } } } /** * Test for TableCell not skipping the last paragraph. * Bugs #45062 and #44292 */ public void testTableCellLastParagraph() throws Exception { HWPFDocument doc = new HWPFDocument(new FileInputStream( new File(dirname, "Bug44292.doc"))); Range r = doc.getRange(); assertEquals(6, r.numParagraphs()); assertEquals(0, r.getStartOffset()); assertEquals(87, r.getEndOffset()); // Paragraph with table Paragraph p = r.getParagraph(0); assertEquals(0, p.getStartOffset()); assertEquals(20, p.getEndOffset()); // Get the table Table t = r.getTable(p); //get the only row assertEquals(1, t.numRows()); TableRow row = t.getRow(0); //get the first cell TableCell cell = row.getCell(0); // First cell should have one paragraph assertEquals(1, cell.numParagraphs()); assertEquals("One paragraph is ok\7", cell.getParagraph(0).text()); //get the second cell = row.getCell(1); // Second cell should be detected as having two paragraphs assertEquals(2, cell.numParagraphs()); assertEquals("First para is ok\r", cell.getParagraph(0).text()); assertEquals("Second paragraph is skipped\7", cell.getParagraph(1).text()); //get the last cell cell = row.getCell(2); // Last cell should have one paragraph assertEquals(1, cell.numParagraphs()); assertEquals("One paragraph is ok\7", cell.getParagraph(0).text()); } public void testRangeDelete() throws Exception { HWPFDocument doc = new HWPFDocument(new FileInputStream( new File(dirname, "Bug28627.doc"))); Range range = doc.getRange(); int numParagraphs = range.numParagraphs(); int totalLength = 0, deletedLength = 0; for (int i = 0; i < numParagraphs; i++) { Paragraph para = range.getParagraph(i); String text = para.text(); totalLength += text.length(); if (text.indexOf("{delete me}") > -1) { para.delete(); deletedLength = text.length(); } } // check the text length after deletion int newLength = 0; range = doc.getRange(); numParagraphs = range.numParagraphs(); for (int i = 0; i < numParagraphs; i++) { Paragraph para = range.getParagraph(i); String text = para.text(); newLength += text.length(); } assertEquals(newLength, totalLength - deletedLength); } /** * With an encrypted file, we should give a suitable * exception, and not OOM */ public void testEncryptedFile() throws Exception { try { new HWPFDocument(new FileInputStream( new File(dirname, "PasswordProtected.doc"))); fail(); } catch(EncryptedDocumentException e) { // Good } }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?