Explorar el Código

阅卷任务数

xiatian hace 3 años
padre
commit
36db43ac1e

+ 20 - 0
examcloud-commons/src/main/java/cn/com/qmth/examcloud/commons/helpers/poi/ExcelReader.java

@@ -2,6 +2,7 @@ package cn.com.qmth.examcloud.commons.helpers.poi;
 
 import java.io.File;
 import java.io.FileInputStream;
+import java.io.InputStream;
 import java.util.List;
 
 import org.apache.commons.io.IOUtils;
@@ -161,5 +162,24 @@ public class ExcelReader {
 
 		return list;
 	}
+	
+	public static List<String[]> readSheetBySax(InputStream is, int sheetId, int columnSize) {
+		List<String[]> list = Lists.newArrayList();
+
+		XlsxHandler xlsxHandler = new XlsxHandler(columnSize) {
+			@Override
+			public void optRows(int sheetIndex, int curRow, String[] row) {
+				list.add(row);
+			}
+		};
+
+		try {
+			xlsxHandler.processOneSheet(is, sheetId);
+		} catch (Exception e) {
+			throw new RuntimeException(e);
+		}
+
+		return list;
+	}
 
 }

+ 20 - 0
examcloud-commons/src/main/java/cn/com/qmth/examcloud/commons/helpers/poi/XlsxHandler.java

@@ -88,6 +88,26 @@ public abstract class XlsxHandler extends DefaultHandler {
 			IOUtils.closeQuietly(pkg);
 		}
 	}
+	
+	public void processOneSheet(InputStream is, int sheetId) throws Exception {
+		OPCPackage pkg = null;
+		try {
+			pkg = OPCPackage.open(is);
+			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);
+		}
+	}
 
 	/**
 	 * 方法注释