Browse Source

。。。。

wangwei 6 năm trước cách đây
mục cha
commit
29e23613d0

+ 33 - 27
src/main/java/cn/com/qmth/examcloud/commons/helpers/poi/XlsxHandler.java

@@ -69,22 +69,23 @@ public abstract class XlsxHandler extends DefaultHandler {
 	 * @throws Exception
 	 */
 	public void processOneSheet(String filePath, int sheetId) throws Exception {
-		OPCPackage pkg = OPCPackage.open(filePath);
-		XSSFReader r = new XSSFReader(pkg);
-		SharedStringsTable sst = r.getSharedStringsTable();
-
-		XMLReader parser = XMLReaderFactory.createXMLReader();
-		this.sst = sst;
-		parser.setContentHandler(this);
-
+		OPCPackage pkg = null;
 		InputStream is = null;
 		try {
+			pkg = OPCPackage.open(filePath);
+			XSSFReader r = new XSSFReader(pkg);
+			SharedStringsTable sst = r.getSharedStringsTable();
+
+			XMLReader parser = XMLReaderFactory.createXMLReader();
+			this.sst = sst;
+			parser.setContentHandler(this);
 			is = r.getSheet("rId" + sheetId);
 			sheetIndex++;
 			InputSource sheetSource = new InputSource(is);
 			parser.parse(sheetSource);
 		} finally {
 			IOUtils.closeQuietly(is);
+			IOUtils.closeQuietly(pkg);
 		}
 	}
 
@@ -96,26 +97,31 @@ public abstract class XlsxHandler extends DefaultHandler {
 	 * @throws Exception
 	 */
 	public void process(String filePath) throws Exception {
-		OPCPackage pkg = OPCPackage.open(filePath);
-		XSSFReader r = new XSSFReader(pkg);
-		SharedStringsTable sst = r.getSharedStringsTable();
-
-		XMLReader parser = XMLReaderFactory.createXMLReader();
-		this.sst = sst;
-		parser.setContentHandler(this);
-
-		Iterator<InputStream> sheets = r.getSheetsData();
-		while (sheets.hasNext()) {
-			curRow = 0;
-			sheetIndex++;
-			InputStream sheet = null;
-			try {
-				sheet = sheets.next();
-				InputSource sheetSource = new InputSource(sheet);
-				parser.parse(sheetSource);
-			} finally {
-				IOUtils.closeQuietly(sheet);
+		OPCPackage pkg = null;
+		try {
+			pkg = OPCPackage.open(filePath);
+			XSSFReader r = new XSSFReader(pkg);
+			SharedStringsTable sst = r.getSharedStringsTable();
+
+			XMLReader parser = XMLReaderFactory.createXMLReader();
+			this.sst = sst;
+			parser.setContentHandler(this);
+
+			Iterator<InputStream> sheets = r.getSheetsData();
+			while (sheets.hasNext()) {
+				curRow = 0;
+				sheetIndex++;
+				InputStream sheet = null;
+				try {
+					sheet = sheets.next();
+					InputSource sheetSource = new InputSource(sheet);
+					parser.parse(sheetSource);
+				} finally {
+					IOUtils.closeQuietly(sheet);
+				}
 			}
+		} finally {
+			IOUtils.closeQuietly(pkg);
 		}
 	}