java读取excel表格中的数据
java中easyexsl的用法
java中easyexsl的用法Java中EasyExcel的用法在Java开发中,处理Excel文件是一项常见的任务。
而EasyExcel 作为一款优秀的Java Excel解决方案,提供了便捷的API,简化了Excel文件的读写操作。
本文将介绍Java中EasyExcel的用法,包括Excel文件的读取和写入操作。
一、Excel文件读取在使用EasyExcel读取Excel文件时,首先需要定义对应的Java实体类,用于映射Excel文件中的数据。
接着通过EasyExcel提供的监听器,实现对Excel文件的读取操作。
下面是一个简单的读取Excel文件的示例代码:```java// 定义Excel实体类@Datapublic class UserData {@ExcelProperty("姓名")private String name;@ExcelProperty("年龄")private Integer age;@ExcelProperty("性别")private String gender;}// 使用EasyExcel读取Excel文件String fileName = "test.xlsx";String sheetName = "Sheet1";EasyExcel.read(fileName, UserData.class, new AnalysisEventListener<UserData>() {@Overridepublic void invoke(UserData data, AnalysisContext context) {// 处理每一行数据}@Overridepublic void doAfterAllAnalysed(AnalysisContext context) {// 读取完成后的操作}}).sheet(sheetName).doRead();```在`invoke`方法中处理每一行数据。
Java读取Excel文件的几种方法
Java读取Excel文件的几种方法最近单位有个项目需要读取excel文件的内容,特别对java读取excel文件的方法做了一点学习,也为了其他人以后能更简单地开发,少走弯路,特写此文,以下程序经过了我的测试,可以保证程序可用,如果你照搬都不行,可能是你的环境有问题。
读取excel文件的常用开源免费方法有以下几种:JDBC-ODBC Excel Driverjxl.jarjcom.jarpoi.jar下面分别对这几种方法分别进行探讨1、JDBC-ODBC Excel Driver这种方法是将excel看成是数据库进行操作,使用SQL Select语句即可查询excel表格。
优点是:不需要第三方的jar包。
如下表样首先在控制面板进行数据源ODBC登记具体方法如下:下面就是代码了。
package xuzhe;import java.io.*;import java.sql.*;//java xuzhe.ExcelJDBCpublic class ExcelJDBC {public static void main(String[] args) throws SQLException{Connection con = null;try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");con = DriverManager.getConnection( "jdbc:odbc:ExcelJDBC" );Statement st = con.createStatement();ResultSet rs = st.executeQuery( "Select * from [Sheet1$]" );ResultSetMetaData rsmd = rs.getMetaData();int numberOfColumns = rsmd.getColumnCount();System.out.println ("表格列数"+numberOfColumns );System.out.println( rsmd.getColumnName(1)+ "," +rsmd.getColumnName(2) + "," + rsmd.getColumnName(3));while (rs.next()) {for (int i = 1; i <= numberOfColumns; i++) {if (i > 1) System.out.print(", ");String columnValue = rs.getString(i);System.out.print(columnValue);}System.out.println("");}rs.close();st.close();}catch(Exception ex) {System.err.print("Exception: ");System.err.println(ex.getMessage());}finally {con.close();}}}执行结果如下:2、jxl.jarjxl.jar为开源代码,任何运行java虚拟机的操作系统都能使用这个jar包操作excel表格。
JAVA如何读取Excel数据
JAVA如何读取Excel数据1.创建Maven项⽬在pom⽂件中添加依赖<dependencies><!-- 旧的 .xls --><!--<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.17</version></dependency>--><!-- 新的 .xlsx --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.17</version></dependency></dependencies>2.编写代码import ermodel.*;import ermodel.XSSFWorkbook;import java.io.FileInputStream;import java.io.IOException;public class PoiTest {public static void main(String[] args) throws IOException {FileInputStream is = new FileInputStream("src/main/resources/test.xlsx");XSSFWorkbook workbook = new XSSFWorkbook(is);//读取SheetSheet sheet = workbook.getSheetAt(0);Row row = sheet.getRow(0);//获取最⼤⾏数int rownum = sheet.getPhysicalNumberOfRows();//获取最⼤列数int colnum = row.getPhysicalNumberOfCells();for (int i = 0; i < rownum; i++) {//获取第i⾏数据row = sheet.getRow(i);for (int j = 0; j < colnum; j++) {Cell cell = row.getCell(j);cell.setCellType(CellType.STRING);String cellText = cell.getStringCellValue();System.out.print(cellText + "\t");}System.out.println();}}}3.报错3.1 异常解决Cannot get a STRING value from a NUMERIC cell poipoi导⼊excel表格数据时报ng.IllegalStateException: Cannot get a STRING value from a NUMERIC cell异常是因为在读取cell单元格字符串时,有number类型的数据,因此需要把它转化为纯String类型,这样就不会报错了。
java读取excel科学计数法处理
java读取excel科学计数法处理摘要:1.问题背景2.解决方案3.具体实现4.总结正文:1.问题背景在Java 编程中,读取Excel 文件中的数据时,可能会遇到科学计数法表示的问题。
这是因为Excel 文件中的某些单元格的值可能非常大或非常小,超出了常规数字的范围,因此以科学计数法表示。
但是,在Java 中,以科学计数法表示的数字不能直接用于编程运算,需要将其转换为常规数字格式。
2.解决方案解决Java 读取Excel 科学计数法表示的问题,可以使用以下方法:方法一:使用Apache POI 库Apache POI 是一个流行的Java 库,用于处理Microsoft Office 文档,包括Excel 文件。
使用Apache POI 库读取Excel 文件时,可以指定单元格的格式,从而避免科学计数法的出现。
具体实现:```javaimport ermodel.*;import ermodel.XSSFWorkbook;public class ReadExcel {public static void main(String[] args) {String filePath = "example.xlsx";Workbook workbook = new XSSFWorkbook(new FileInputStream(filePath));Sheet sheet = workbook.getSheetAt(0);Row row = sheet.getRow(0);Cell cell = row.getCell(0);// 指定单元格的格式cell.setCellType(CellType.STRING);// 读取单元格的值String value = cell.getStringCellValue();System.out.println(value);workbook.close();}}```方法二:使用Java 内置库Java 内置的库中也提供了一些处理Excel 文件的方法,例如,可以使用`java.io.FileInputStream`和`ermodel.Workbook`类来读取Excel 文件。
java读取excel科学计数法处理
java读取excel科学计数法处理摘要:一、前言- 介绍Java 读取Excel 文件时可能出现科学计数法的问题二、问题原因- 分析Java 读取Excel 文件时出现科学计数法的原因三、解决方法- 提出解决Java 读取Excel 文件时出现科学计数法的方法四、总结- 总结解决Java 读取Excel 文件时出现科学计数法的方法及其实际应用正文:一、前言在Java 编程中,读取Excel 文件是常见的操作。
但是,有时候读取出来的数据可能会是科学计数法表示,这对于后续的数据处理和分析带来了一定的麻烦。
因此,本文将探讨如何解决Java 读取Excel 文件时出现科学计数法的问题。
二、问题原因Java 读取Excel 文件时,如果单元格的类型是数值型,且该数值超出了Java 所能表示的范围(如:2^31 - 1),那么该数值将会以科学计数法的形式表示。
这是因为Java 在表示大数值时,会使用科学计数法。
而Excel 文件中的数值可能因为单元格设置、数据录入等原因,导致出现这种情况。
三、解决方法要解决Java 读取Excel 文件时出现科学计数法的问题,可以采用以下方法:1.使用Apache POI 库Apache POI 库是Java 读取Excel 文件的一个非常强大的库,支持xls 和xlsx 格式的文件。
使用Apache POI 库读取Excel 文件时,可以通过设置单元格的格式,来避免科学计数法的出现。
例如:```javaCell cell = row.getCell(j);if (cell != null) {cell.setCellType(CellType.STRING);cell.setCellValue(String.valueOf(cell.getNumericCellValue()));}```这段代码将单元格的类型设置为字符串类型,并将数值型的单元格值转换为字符串,从而避免了科学计数法的出现。
java使用poi(XSSFWorkbook)读取excel(.xlsx)文件
java使⽤poi(XSSFWorkbook)读取excel(.xlsx)⽂件经过⼀番搜索发现,java操纵excel⽂件常⽤的有jxl和poi两种⽅式,孰好孰坏看⾃⼰需求⽽定。
其中最主要的区别在于jxl不⽀持.xlsx,⽽poi⽀持.xlsx这⾥介绍的使⽤poi⽅式(XSSFWorkbook),实际上poi提供了HSSFWorkbook和XSSFWorkbook两个实现类。
区别在于HSSFWorkbook是针对.xls⽂件,XSSFWorkbook是针对.xslx⽂件。
⾸先明确⼀下基本概念: 先创建⼀个⼯作簿,⼀个⼯作簿可以有多个⼯作表,⼀个⼯作表可以有多个⾏,⼀个⾏可以有多个单元格 ⼯作簿 ----------->XSSFWorkbook ⼯作表 ----------->XSSFSheet ⾏ ----------->XSSFRow 单元格 ----------->XSSFCell下图为创建的student.xlsx的内容:导⼊依赖:<!--poi--><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.0</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.0</version></dependency>读取student.xlsx⽂件代码:1package com.zjk.testexcel;23import ermodel.*;4import java.io.FileInputStream;5import java.io.IOException;67/**8 * @Auther: zjk9 * @Date: 2019/8/3010 * @Description:11*/12public class TestExcel1 {13public static void main(String[] args) {14try {15//创建⼯作簿16 XSSFWorkbook xssfWorkbook = new XSSFWorkbook(new FileInputStream("D:\\test-excel\\student.xlsx"));17 System.out.println("xssfWorkbook对象:" + xssfWorkbook);18//读取第⼀个⼯作表(这⾥的下标与list⼀样的,从0开始取,之后的也是如此)19 XSSFSheet sheet = xssfWorkbook.getSheetAt(0);20 System.out.println("sheet对象:" + sheet);21//获取第⼀⾏的数据22 XSSFRow row = sheet.getRow(0);23 System.out.println("row对象:" + row);24//获取该⾏第⼀个单元格的数据25 XSSFCell cell0 = row.getCell(0);26 System.out.println("cello对象:" + cell0);27 } catch (IOException e) {28 e.printStackTrace();29 }30 }31 }控制台输出结果:可以发现具体到⾏对象时,就解析成xml⽂件了xssfWorkbook对象: Name: /xl/workbook.xml - Content Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xmlsheet对象: Name: /xl/worksheets/sheet1.xml - Content Type: application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xmlrow对象: <xml-fragment r="1" spans="1:4" xmlns:r="/officeDocument/2006/relationships" xmlns:xdr="/drawingml/2006/spreadsheetDraw <main:c r="A1" t="s"> <main:v>0</main:v> </main:c> <main:c r="B1" t="s"> <main:v>1</main:v> </main:c> <main:c r="C1" t="s"> <main:v>2</main:v> </main:c> <main:c r="D1" t="s"><main:v>3</main:v></main:c></xml-fragment>cello对象:姓名以上可以实现了读取某⾏某单元格的数据,那么接下来就该读取整个表的所有数据了:package com.zjk.testexcel;import ermodel.XSSFCell;import ermodel.XSSFRow;import ermodel.XSSFSheet;import ermodel.XSSFWorkbook;import java.io.FileInputStream;import java.io.IOException;/*** @Auther: zjk* @Date: 2019/8/30* @Description:*/public class TestExcel2 {public static void main(String[] args) {try {//创建⼯作簿XSSFWorkbook xssfWorkbook = new XSSFWorkbook(new FileInputStream("D:\\test-excel\\student.xlsx"));System.out.println("xssfWorkbook对象:" + xssfWorkbook);//读取第⼀个⼯作表XSSFSheet sheet = xssfWorkbook.getSheetAt(0);System.out.println("sheet对象:" + sheet); //获取最后⼀⾏的num,即总⾏数。
Java读取Excel文件(支持xls,xlsx,多sheet)
Java读取Excel⽂件(⽀持xls,xlsx,多sheet)1. pom.xml依赖<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.0.1</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.0.1</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>4.0.1</version></dependency>2. ⼯具类封装public class ExcelReadUtil {private static Logger logger = LoggerFactory.getLogger(ExcelReadUtil.class);public static HashMap<String, ArrayList<ArrayList<String>>> readExcel(File file, int ignoreRow) { if (file.getName().toLowerCase().endsWith(".xlsx")) {return readExcelForXlsx(file, ignoreRow);} else if (file.getName().toLowerCase().endsWith(".xls")) {return readExcelForXls(file, ignoreRow);}return null;}/*** 读取Excel xlsx后缀名⽂件数据** @param file*/private static HashMap<String, ArrayList<ArrayList<String>>> readExcelForXlsx(File file, int ignoreRow) {HashMap<String, ArrayList<ArrayList<String>>> map = new HashMap<>();if (!file.exists()) {logger.error("{}⽂件不存在", file.getName());return null;}int rowSize = 0;try (BufferedInputStream in = new BufferedInputStream(new FileInputStream(file))) {XSSFWorkbook workbook = null;try {workbook = new XSSFWorkbook(in);} catch (IOException e) {e.printStackTrace();}XSSFCell cell = null;for (int sheetIndex = 0; sheetIndex < workbook.getNumberOfSheets(); sheetIndex++) {XSSFSheet sheet = workbook.getSheetAt(sheetIndex);ArrayList<ArrayList<String>> lists = new ArrayList<>();for (int rowIndex = ignoreRow; rowIndex <= sheet.getLastRowNum(); rowIndex++) {XSSFRow row = sheet.getRow(rowIndex);if (null == row) {continue;}int tempRowSize = row.getLastCellNum() + 1;if (tempRowSize > rowSize) {rowSize = tempRowSize;}ArrayList<String> list = new ArrayList<>();int col = 0;for (int colIndex = 0; colIndex <= row.getLastCellNum(); colIndex++) {cell = row.getCell(colIndex);String value = "";if (cell != null) {CellType cellType = cell.getCellType();switch (cellType) {case NUMERIC:if (DateUtil.isCellDateFormatted(cell)) {value = String.valueOf(cell.getDateCellValue());} else {value = String.valueOf(new DecimalFormat("0").format(cell.getNumericCellValue())); }break;case STRING:value = String.valueOf(cell.getStringCellValue());break;case FORMULA:value = String.valueOf(cell.getCellFormula());break;case BLANK:value = "";break;case BOOLEAN:value = String.valueOf(cell.getBooleanCellValue());break;case ERROR:value = String.valueOf(cell.getErrorCellValue());break;default:value = "";}if (StringUtils.isNotBlank(value)) {list.add(value);} else {col++;}}}if (col == row.getRowNum()) {continue;}if (list.size() > 0) {lists.add(list);}}map.put("sheet" + sheetIndex, lists);}} catch (Exception e) {e.printStackTrace();}return map;}/*** 读取excel xls后缀名⽂件** @param file* @param ignoreRow* @return*/private static HashMap<String, ArrayList<ArrayList<String>>> readExcelForXls(File file, int ignoreRow) {HashMap<String, ArrayList<ArrayList<String>>> map = new HashMap<>();if (!file.exists()) {logger.error("{}⽂件不存在", file.getName());return null;}int rowSize = 0;try {BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(file));HSSFWorkbook workbook = new HSSFWorkbook(bufferedInputStream);HSSFCell cell = null;for (int sheetIndex = 0; sheetIndex < workbook.getNumberOfSheets(); sheetIndex++) {HSSFSheet sheet = workbook.getSheetAt(sheetIndex);ArrayList<ArrayList<String>> lists = new ArrayList<>();for (int rowIndex = ignoreRow; rowIndex < sheet.getLastRowNum(); rowIndex++) {HSSFRow row = sheet.getRow(rowIndex);if (null == row) {continue;}int tempRowSize = row.getLastCellNum() + 1;if (tempRowSize > rowSize) {rowSize = tempRowSize;}ArrayList<String> list = new ArrayList<>();int col = 0;for (int colIndex = 0; colIndex < row.getLastCellNum(); colIndex++) {cell = row.getCell(colIndex);String value = "";if (cell != null) {CellType cellType = cell.getCellType();switch (cellType) {case NUMERIC:if (DateUtil.isCellDateFormatted(cell)) {value = String.valueOf(cell.getDateCellValue());} else {value = String.valueOf(new DecimalFormat("0").format(cell.getNumericCellValue())); }break;case STRING:value = String.valueOf(cell.getStringCellValue());break;case FORMULA:value = String.valueOf(cell.getCellFormula());break;case BLANK:value = "";break;case BOOLEAN:value = String.valueOf(cell.getBooleanCellValue());break;case ERROR:value = String.valueOf(cell.getErrorCellValue());break;default:value = "";}if (StringUtils.isNotBlank(value)) {list.add(value);} else {col++;}}}if (col == row.getRowNum()) {continue;}if (list.size() > 0) {lists.add(list);}}map.put("sheet" + sheetIndex, lists);}} catch (Exception e) {e.printStackTrace();}return map;}}3. 测试类@Testpublic void testExcelRead(){HashMap<String, ArrayList<ArrayList<String>>> excelReadMap = ExcelReadUtil.readExcel(new File(excelFilePath), 1);if(excelReadMap != null){excelReadMap.entrySet().stream().forEach(entry -> {entry.getValue().stream().forEach(col -> {col.stream().forEach(System.out::println);});});}}原⽂链接:。
Java注解--实现简单读取excel
Java注解--实现简单读取excel实现⼯具类利⽤注解实现简单的excel数据读取,利⽤注解对类的属性和excel中的表头映射,使⽤Apache的poi就不⽤在业务代码中涉及row,rows这些属性了。
定义注解:@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.FIELD)public @interface Excel {String name();}由于本例中只涉及根据Excel表头部分对Excel进⾏解析,只定义了⼀个name作为和Excel表头的隐射。
⼯具类完整代码如下:public class ExcelUtil<T> {Class<T> clazz;public ExcelUtil(Class<T> clazz) {this.clazz = clazz;}public List<T> importExcel(String sheetName, InputStream input) {int maxCol = 0;List<T> list = new ArrayList<T>();try {Workbook workbook = WorkbookFactory.create(input);Sheet sheet = workbook.getSheet(sheetName);// 如果指定sheet名,则取指定sheet中的内容.if (!sheetName.trim().equals("")) {sheet = workbook.getSheet(sheetName);}// 如果传⼊的sheet名不存在则默认指向第1个sheet.if (sheet == null) {sheet = workbook.getSheetAt(0);}int rows = sheet.getPhysicalNumberOfRows();// 有数据时才处理if (rows > 0) {List<Field> allFields = getMappedFiled(clazz, null);// 定义⼀个map⽤于存放列的序号和field.Map<Integer, Field> fieldsMap = new HashMap<Integer, Field>();// 第⼀⾏为表头Row rowHead = sheet.getRow(0);Map<String, Integer> cellMap = new HashMap<>();int cellNum = rowHead.getPhysicalNumberOfCells();for (int i = 0; i < cellNum; i++){cellMap.put(rowHead.getCell(i).getStringCellValue().toLowerCase(), i);}for (Field field : allFields) {// 将有注解的field存放到map中.if (field.isAnnotationPresent(Excel.class)) {Excel attr = field.getAnnotation(Excel.class);// 根据Name来获取相应的failedint col = cellMap.get(().toLowerCase());field.setAccessible(true);fieldsMap.put(col, field);}}// 从第2⾏开始取数据for (int i = 1; i < rows; i++) {Row row = sheet.getRow(i);T entity = null;for (int j = 0; j < cellNum; j++) {Cell cell = row.getCell(j);if (cell == null) {continue;}int cellType = cell.getCellType();String c = "";if (cellType == HSSFCell.CELL_TYPE_NUMERIC) {DecimalFormat df = new DecimalFormat("0");c = df.format(cell.getNumericCellValue());c = df.format(cell.getNumericCellValue());} else if (cellType == HSSFCell.CELL_TYPE_BOOLEAN) {c = String.valueOf(cell.getBooleanCellValue());} else {c = cell.getStringCellValue();}if (c == null || c.equals("")) {continue;}entity = (entity == null ? clazz.newInstance() : entity);// 从map中得到对应列的field.Field field = fieldsMap.get(j);if (field == null) {continue;}// 取得类型,并根据对象类型设置值.Class<?> fieldType = field.getType();if (String.class == fieldType) {field.set(entity, String.valueOf(c));} else if ((Integer.TYPE == fieldType)|| (Integer.class == fieldType)) {field.set(entity, Integer.valueOf(c));} else if ((Long.TYPE == fieldType)|| (Long.class == fieldType)) {field.set(entity, Long.valueOf(c));} else if ((Float.TYPE == fieldType)|| (Float.class == fieldType)) {field.set(entity, Float.valueOf(c));} else if ((Short.TYPE == fieldType)|| (Short.class == fieldType)) {field.set(entity, Short.valueOf(c));} else if ((Double.TYPE == fieldType)|| (Double.class == fieldType)) {field.set(entity, Double.valueOf(c));} else if (Character.TYPE == fieldType) {if (c.length() > 0) {field.set(entity, c.charAt(0));}}}if (entity != null) {list.add(entity);}}}} catch (Exception e) {e.printStackTrace();}return list;}/*** 得到实体类所有通过注解映射了数据表的字段** @param clazz* @param fields* @return*/private List<Field> getMappedFiled(Class clazz, List<Field> fields) {if (fields == null) {fields = new ArrayList<Field>();}// 得到所有定义字段Field[] allFields = clazz.getDeclaredFields();// 得到所有field并存放到⼀个list中.for (Field field : allFields) {if (field.isAnnotationPresent(Excel.class)) {fields.add(field);}}if (clazz.getSuperclass() != null&& !clazz.getSuperclass().equals(Object.class)) {getMappedFiled(clazz.getSuperclass(), fields);}return fields;}}代码很简单,获取sheet,解析第⼀⾏,并和实体类标有注解的字段⼀⼀对应,⽤hashMap记录下来,然后循环取得Excel中剩下所有的数据,根据map的对应关系将值set到对应字段。
Java实现读取excel中的数据及图片
Java实现读取excel中的数据及图⽚⼀、背景需要完成excel数据的读取与落库⼆、实现Java读取excel数据:指定某⼀⾏,读取整列的数据/*如果是xls格式,使⽤HSSFWorkbook,HSSFSheet,HSSFRow来进⾏相关操作如果是xlsx格式,使⽤XSSFWorkbook,XSSFSheet,XSSFRow来进⾏相关操作,⽬前只⽀持xlsx*/public static HashMap readExcelData(String filename, Integer row, Integer column,Integer sheet) throws IOException {//⽤于存储Exce读取数据HashMap<Integer,String> hashMap=new HashMap();("开始读取excel数据");//读取excel数据File file = ResourceUtils.getFile(filename);InputStream inputStream = new FileInputStream(file);XSSFWorkbook xssfWorkbook=new XSSFWorkbook(inputStream);//获取sheet表格,及读取单元格内容XSSFSheet xssfSheet=xssfWorkbook.getSheetAt(sheet);//先将获取的单元格设置为String类型,下⾯使⽤getStringCellValue获取单元格内容Integer cellIndex = 0;while(cellIndex<=column){//第⼀列为空时直接,赋值为空if (xssfSheet.getRow(row)==null || xssfSheet.getRow(row).getCell(cellIndex)==null){hashMap.put(cellIndex,"");cellIndex++;continue;}xssfSheet.getRow(row).getCell(cellIndex).setCellType(CellType.STRING);String stringValue=xssfSheet.getRow(row).getCell(cellIndex).getStringCellValue();hashMap.put(cellIndex,stringValue);cellIndex++;}("readExcelData:{}",hashMap.toString());return hashMap;}Java读取excel图⽚:获取整个excel的图⽚,可以按照指定的⾏和列来定位读取图⽚/*** 获取Excel中的图⽚* @param xssfSheet* @return*/public static Map<String, XSSFPictureData> getPictures(XSSFSheet xssfSheet){Map<String,XSSFPictureData> map=new HashMap<>();List<XSSFShape> list=xssfSheet.getDrawingPatriarch().getShapes();for (XSSFShape shape:list){XSSFPicture picture = (XSSFPicture) shape;XSSFClientAnchor xssfClientAnchor=(XSSFClientAnchor) picture.getAnchor();XSSFPictureData pdata = picture.getPictureData();// ⾏号-列号String key = xssfClientAnchor.getRow1() + "-" + xssfClientAnchor.getCol1();("key数据:{}",key);map.put(key, pdata);}return map;}实际调⽤测试@Testpublic void test() throws IOException, UnirestException {String filename="classpath:file/org.xlsx";File file = ResourceUtils.getFile(filename);InputStream inputStream = new FileInputStream(file);XSSFWorkbook xssfWorkbook=new XSSFWorkbook(inputStream);Map<String, XSSFPictureData> map=getPictures(xssfWorkbook.getSheetAt(0)); String mapKey="3-15";//指定⾏和列XSSFPictureData xssfPictureData= map.get(mapKey);byte[] data =xssfPictureData.getData();FileOutputStream out = new FileOutputStream("/Users/test12.png");out.write(data);out.close();}}jar包版本<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.17</version></dependency>。
JAVA读取Excel中内容(HSSF和Workbook两种方法)
JAVA读取Excel中内容(HSSF和Workbook两种⽅法)内容添加,以前是⽤的HSSF,前⼏天帮同学写⼀个统计表⽤了Workbook,现在码⼀下。
---新内容(Workbook)--- 同学要统计⼀个xls表格,让表1⾥⾯的某⼀列内容对表2⾥⾯的每列进⾏匹配,匹配到第1列,在表1的另⼀列对应⾏设置1,就是⼀个简单的读取。
要导⼊⼀个jxl操作包,这个包是专门对execel进⾏操作的。
下⾯是代码。
1import java.io.File;2import jxl.Sheet;3import jxl.Workbook;4import bel;5import jxl.write.WritableSheet;6import jxl.write.WritableWorkbook;78public class New {9public static void main(String args[]) {10try {11long stime=System.currentTimeMillis();12boolean flag=false;//设置检查标记13long count=0;//设置计数1415 Workbook bookResource = Workbook.getWorkbook(new File("resource.xls"));//打开表116 Workbook bookKeyWordLib = Workbook.getWorkbook(new File("keyWordLibNew.xls"));//打开表21718 Workbook wb = Workbook.getWorkbook(new File("resourceWrite.xls"));//打开表319//// 打开⼀个⽂件的副本,并且指定数据写回到原⽂件20 WritableWorkbook book = Workbook.createWorkbook(new File("resourceWrite.xls"),21 wb);22//// 添加⼀个⼯作表23 WritableSheet sheet3 = book.getSheet(0);242526// 获得第⼀个⼯作表对象27 Sheet sheet1 = bookResource.getSheet(0);28 Sheet sheet2 = bookKeyWordLib.getSheet(0);2930// 得到第⼀列第⼀⾏的单元格31//⾏数 sheet1.getRows();32//列数 sheet1.getColumns();3334for(int i=1;i<sheet1.getRows();i++)//对表1的每⾏进⾏循环35 {3637 flag=false;//标记为false表⽰该⾏没有被检查或者检查过但是没有填值38for(int columns=0;columns<sheet2.getColumns();columns++)//取表2的列数作为限制39 {40if(flag)41 {42break;43 }//该⾏检查过并且已经有值检查下⼀⾏4445for(int rows=1;rows<sheet2.getColumn(columns).length-1;rows++)//取表2每列的⾏数作为限制条件46 {47if(sheet1.getCell(11, i).getContents().contains(48 sheet2.getCell(columns, rows).getContents()))//匹配对应单元格的内容49 {505152 sheet3.addCell(53new Label(9, i, new String(((Integer)(columns+1)).toString())));//设置对应单元格内容54 System.out.println(columns+" "+rows);55 count++;56 flag=true;//标记为true57break;58 }5960 }61 }62 }63 book.write();6465 System.out.println(count);6667 bookResource.close();68 bookKeyWordLib.close();69 book.close();70 wb.close();//关闭所有表否侧表格会损坏71long etime=System.currentTimeMillis();72 System.out.println(etime-stime);73 } catch (Exception e) {74 System.out.println(e.toString());7576 }77 }78 } 这⾥⽤的时候要注意,⽬前我⽤的时候只能对xls进⾏操作,csv和xlsx等都暂时不⾏。
java workbook 获取表格的数量的方法
一、介绍在Java编程中,经常需要使用Excel或其他表格文件进行数据处理和分析。
而对于一个Excel工作簿(workbook)中包含的表格数量,也是一个常见的需求。
本文将介绍如何使用Java编程获取一个工作簿中包含的表格数量的方法,帮助读者更好地完成数据处理和分析任务。
二、使用POI库Apache的POI库是一个用于处理Microsoft Office文件的开源Java 库,它提供了丰富的API用于读取、写入和操作Excel、Word等文件。
获取Excel工作簿中表格数量的方法就可以使用POI库来实现。
三、创建工作簿对象需要使用POI库来创建Excel工作簿对象。
代码示例如下:```javaFile file = new File("file.xlsx");InputStream inputStream = new FileInputStream(file); XSSFWorkbook workbook = new XSSFWorkbook(inputStream); ```这段代码首先创建了一个文件对象,然后创建了一个文件输入流并将文件对象传入,最后使用输入流创建了一个XSSFWorkbook对象,代表了Excel工作簿。
四、获取表格数量一旦有了工作簿对象,就可以使用POI库提供的方法来获取工作簿中包含的表格数量。
代码示例如下:```javaint numberOfSheets = workbook.getNumberOfSheets();```这段代码调用了XSSFWorkbook对象的getNumberOfSheets()方法,该方法返回了工作簿中包含的表格数量。
五、完整示例下面是一个完整的示例代码,演示了如何使用POI库来获取Excel工作簿中包含的表格数量:```javaimport java.io.File;import java.io.FileInputStream;import java.io.IOException;import ermodel.XSSFWorkbook;import ermodel.Workbook;import ermodel.Sheet;public class M本人n {public static void m本人n(String[] args) {try {File file = new File("file.xlsx");FileInputStream inputStream = new FileInputStream(file); XSSFWorkbook workbook = newXSSFWorkbook(inputStream);int numberOfSheets = workbook.getNumberOfSheets(); System.out.println("Number of sheets in the workbook: " + numberOfSheets);for (int i = 0; i < numberOfSheets; i++) {Sheet sheet = workbook.getSheetAt(i);System.out.println("Sheet " + (i+1) + " name: " + sheet.getSheetName());}workbook.close();inputStream.close();} catch (IOException e) {e.printStackTrace();}}}```在这个示例中,我们首先创建了一个File对象,然后根据文件对象创建了一个文件输入流。
javaexcel解析常见方法
一、介绍在日常工作中,我们经常会遇到需要处理Excel文件的情况。
而对于Java程序员来说,对Excel文件进行解析是一项常见的任务。
本文将介绍一些常见的JavaExcel解析方法,希望能够帮助大家更好地处理Excel文件。
二、使用POI库解析Excel1. POI库简介POI(Poor Obfuscation Implementation)是Apache软件基金会的开源项目,旨在提供Java程序操作Microsoft Office格式文件的功能。
在处理Excel文件时,可以使用POI库来完成读取、写入和修改Excel文件的操作。
2. 使用POI库解析Excel的基本步骤a. 创建一个输入流,将Excel文件加载到工作簿中。
b. 获取工作表,可以根据工作表的名称或索引来获取。
c. 遍历工作表,获取每一行的数据。
d. 遍历每一行,获取单元格的数值并进行相应的处理。
3. 代码示例```java// 读取Excel文件File file = new File("test.xlsx");FileInputStream fis = new FileInputStream(file); XSSFWorkbook workbook = new XSSFWorkbook(fis);// 获取工作表XSSFSheet sheet = workbook.getSheetAt(0);// 遍历工作表for (Row row : sheet) {// 遍历行for (Cell cell : row) {// 获取单元格的值String value = cell.getStringCellValue();// 进行相应的处理}}// 关闭流fis.close();```4. 注意事项使用POI库解析Excel时,需要注意处理空单元格、日期格式、数值类型等特殊情况,以确保解析的准确性。
三、使用EasyExcel库解析Excel1. EasyExcel库简介EasyExcel是阿里巴巴开源的一款针对大数据量Excel操作的Java库。
java通过POI技术操作Excel(2)----模板读取,录入数据
java通过POI技术操作Excel(2)----模板读取,录⼊数据 先来回顾下通常把java对Excel的操作分为以下功能:1、⽣成模板,导出模板;2、填充模板,录⼊数据;3;读取数据库数据,导出数据;在上⼀篇博⽂中,我简单记录了模板⽣成和导出,在这篇博⽂中,主要来记录--Excel⽂件导⼊,数据录⼊(仍然是以jsp+servlet为例) 既然要解决这个问题,那⾸先来分析下我们需要⾯对的有哪些需求需要实现: 1、Excel⽂件导⼊(这是最基础的,巧妇难为⽆⽶之炊,导⼊环节也是查了好久才完成的); 2、Excel⽂件中数据的格式判定,你要读取⽂件,如果⽂件中其实没有数据怎么办,程序会报错么; 3、Excel⽂件中数据的数值判定,“编号”啊,“⾝份证号”啊之类是不是需要有⼀定的规范才说明数值是正确的,否则录⼊毫⽆意义,数据库中可能还会报错; 4、Excel⽂件中数据判定完成后,判定全部正确的,全部录⼊数据库,录⼊成功显⽰录⼊成功,录⼊不成功则修改录⼊环节; 判定如果存在错误,将所有出现错误的列汇总,返回界⾯提⽰所有出错的列;⾸先,我们来完成导⼊功能,实现如下效果:相信这个上传效果,很多⼈都能实现,<input type="file">如是⽽已嘛,但是实现它后我们如何进⾏excel数据操作呢?通常我们想到的有如下两种⽅法:1、将excel⽂件传上去,然后对传上的⽂件进⾏操作,因为我们传到哪了我们知道,可以直接获取路径;2、我们可以直接获取想要上传的⽂件在电脑上的路径,然后我们通过路径直接对⽂件进⾏操作;这⾥我主要来介绍下我实现的第⼆种⽅法,(以ie浏览器为例,其它浏览器暂不讨论)1function upLoad(){2var myFile=document.getElementById("myFile");3 myFile.select();4var realPath=document.selection.createRange().text;5var len=realPath.length;6var path=realPath.substr(len-4);7if(path==".xls"){ document.getElementById("myForm").action="upLoad?path="+realPath;8 document.getElementById("myForm").submit();9 }else{10 alert("请输⼊excel格式的⽂件");11 }12 }通常情况下,在ie7之前我们可以通过document.getElementById('file_upl').value 直接获取⽂本的本地路径,但是在ie8之后,处于安全性考虑,上传时获取以上value 值则会以“C:\fakepath\”来代替了,这个时候我们就需要上⽂中出现的var myFile=document.getElementById("myFile"); myFile.select();varrealPath=document.selection.createRange().text;这三步来进⾏完成了。
java读取excel科学计数法处理
java读取excel科学计数法处理Java读取Excel科学计数法处理科学计数法是一种表示非常大或非常小的数的方法,它使用指数来表示数字的数量级。
在Excel中,科学计数法的数字通常使用"e"或"E"表示指数部分。
在JAVA中读取Excel文件并处理科学计数法的数字,可以使用Apache POI库。
Apache POI是一个用于操作Excel文件的开放源代码Java库。
它提供了一组API,可以轻松读取、写入和修改Excel文件。
首先,你需要在你的Java项目中导入Apache POI库。
如果你使用的是Maven项目,你可以在pom.xml文件中添加以下依赖:xml<dependencies><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.2</version></dependency></dependencies>接下来,你需要使用POI库的类来读取Excel文件。
首先,你需要创建一个文件对象,指定要读取的Excel文件的路径。
然后,你可以使用WorkbookFactory类的create方法来创建一个Workbook对象,该对象表示整个Excel文件。
javaFile file = new File("path/to/excelFile.xls");Workbook workbook = WorkbookFactory.create(file);一旦你有了Workbook对象,你可以使用它来访问每个单元格的内容。
java读取excel文件(.xls,xlsx,csv)
<groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.9</version> </dependency>
1,页面标签及属性
input[type="button"]{background-color: #71BCF3;color: white;}
int numday = (int) Math.round(str);
Calendar d = Calendar.getInstance(); d.set(1900, 0, 1); d.add(Calendar.DAY_OF_MONTH,numday);
int year = d.get(Calendar.YEAR); int month = d.get(Calendar.MONTH) + 1; int day = d.get(Calendar.DAY_OF_MONTH)-2;
String dateStr = year+"-"+month+"-"+day;
Date newDate = DateUtils.parse(dateStr);
System.out.println(DateUtils.format(newDate));
return newDate; } private static String getValue(HSSFCell hssfCell) {
InputStream inStream = upload.getInputStream();//文件流,可直接用 }
Java读写Excel文件中数据的简便方法(附代码)
Java读写Excel文件中数据的简便方法Java开发项目中经常会碰到处理Excel文件中数据的情况,这里通过一个例子来看一下实现方法:从Excel文件orders.xls中读取订单信息,从中找出2010年1月1日(含)之后,并且SELLERID等于18的订单。
找到的数据写入order_result.xls文件。
Excel文件orders.xls的内容如下:ORDERID CLIE NT SE LLERID AMOUNT ORDERDATE1 UJRNP 17 392 2008/11/2 15:282 SJCH 6 4802 2008/11/9 15:283 UJRNP 16 13500 2008/11/5 15:284 P WQ 9 26100 2008/11/8 15:285 P WQ 11 4410 2008/11/12 15:286 HANAR 18 6174 2008/11/7 15:287 E GU 2 17800 2008/11/6 15:288 VILJX 7 2156 2008/11/9 15:289 JAYB 14 17400 2008/11/12 15:2810 JAXE 19 19200 2008/11/12 15:2811 SJCH 7 13700 2008/11/10 15:2812 QUICK 11 21200 2008/11/13 15:2813 HL 12 21400 2008/11/21 15:2814 JAYB 1 7644 2008/11/16 15:2815 MIP 16 3234 2008/11/19 15:2816 AYW YN 4 6566 2008/11/21 15:28…Java程序的编写思路是1、从Excel文件逐行读入数据保存到List对象sourceList中。
2、遍历List对象sourceList,如果满足条件就保存到结果List对象resultList中。
java hutool的读取execl方法
java hutool的读取execl方法标题: Java hutool的读取execl方法正文:Hutool是一个基于Java的开源命令行工具包,它提供了许多方便的工具和函数,用于处理命令行输入和执行命令。
其中,读取Excel文件是一种常见的命令行操作。
在Java中,可以使用hutool提供的`hutool-excel`包来读取Excel文件。
`hutool-excel`包提供了`ReadExcel`函数,该函数可以读取指定Excel文件并返回相关数据。
以下是一个示例代码,演示如何使用`hutool-excel`包读取Excel文件并将其打印出来:```javaimport hutool.excel.ReadExcel;import hutool.excel.WriteExcel;public class ReadExcelExcel {public static void main(String[] args) {String excelFilePath = "path/to/your/excel/file.xlsx";WriteExcel writeExcel = new WriteExcel();ReadExcel readExcel = new ReadExcel();try {readExcel.read(excelFilePath, writeExcel);System.out.println("Excel data: " + readExcel.get("data"));} catch (IOException e) {e.printStackTrace();}}}```在上面的示例代码中,`excelFilePath`变量指定了要读取的Excel文件的路径。
`WriteExcel`类用于将Excel数据写入Excel文件中。
Java读写excel实战完全解析
Java读写excel实战完全解析背景时值毕业季,很多毕业⽣初⼊职场。
因此,这边也写了⼀些新⼿相关的 Android 技术点。
⽐如上⼀篇的就是列举了⼀些⼩点,避免新⼿ Android 开发者踩坑。
同时,也是恰逢暑假,因此⼤学⽣处于放假阶段。
这⼀篇主要是来⾃⼀位⼤学⽣的提问。
因此这边分享⼀下我个⼈的解题思路和⽅法,希望能够对他有所启发。
欢迎⼤家交流分享。
题⽬使⽤语⾔:JAVA需求:读取⼀个Excel表格⾥⾯的数据(例如:姓名+分数),对其进⾏重新排序(按分数⾼低),然后输出在另⼀个Excel表格。
分析⼀般对需求我们都采取拆分思维。
将⼤问题拆成⼩问题,⼩问题解决了,整个⼤问题也就解决了。
这个需求很明确,需要解决三个问题: 1. 读取 Excel 表格数据 2. 对数据排序 3. 将数据写⼊另⼀个 Excel 表格我们这⾥要求使⽤ Java 语⾔,⽽ Java 语⾔⼀个很重要的点就是⾯向对象。
因此⾸先我们要考虑⼀下,这个题⽬⾥⾯有哪些类需要我们创建。
⼤概可以想象需要下⾯这些类:读取数据类:ExcelReader写⼊数据类:ExcelWriter数据排序类:由于 Java API ⾃带,所以不需要重复造轮⼦数据模型类:StudentScore启动类:ParserStart,带有 main ⽅法⼤概的 UML 图如下:此时我们可以写出 v0.1 代码:ExcelReader.java:import java.util.List;public class ExcelReader {public List<StudentScore> read(String fileName) {//TODOreturn null;}}ExcelWriter.java:import java.util.List;public class ExcelWriter {public void write(String fileName, List<StudentScore> list) {//TODO}}StudentScore.java:public class StudentScore {private String name;private int score;public StudentScore(String name, int score) {super(); = name;this.score = score;}public String getName() {return name;}public void setName(String name) { = name;}public int getScore() {return score;}public void setScore(int score) {this.score = score;}}ParserStart.java:import java.util.List;public class ParserStart {public static void main(String[] args) {// 第⼀步:读取数据List<StudentScore> dataList = new ExcelReader().read("input.xls");// 第⼆步:排序//TODO// 第三部:写⼊数据new ExcelWriter().write("output.xls", dataList);}}好了,基本框架搭好了。
Java读取Excel指定列的数据详细教程和注意事项
Java读取Excel指定列的数据详细教程和注意事项本⽂使⽤jxl.jar⼯具类库实现读取Excel中指定列的数据。
jxl.jar是通过java操作excel表格的⼯具类库,是由java语⾔开发⽽成的。
这套API是纯Java的,并不依赖Windows系统,即使运⾏在Linux下,它同样能够正确的处理Excel⽂件。
⽀持Excel 95-2000的所有版本⽣成Excel 2000标准格式⽀持字体、数字、⽇期操作能够修饰单元格属性⽀持图像和图表jxl操作Excel包括对象Workbook(⼯作簿),Sheet(⼯作表),Cell(单元格)。
⼀个Excel就对应⼀Workbook对象,⼀个Workbook可以有多个Sheet对象,⼀个Sheet对象可以有多个Cell对象。
其主要的API说明如下:新建并获取⼯作薄:Workbook workbook = Workbook.getWorkbook(inputStream);读取⼯作表:workbook.getSheet(int index);//index从0开始,0对应Sheet1获取单元格:sheet.getCell(int columnIndex, int rowIndex);读取单元格内容:cell.getContents();代码如下:/*** 读取excel表格中特定的列** @param file* ⽂件* @param index* 第index列(0开始)* @throws Exception*/public static void readColumn(File file, int index) throws Exception {InputStream inputStream = new FileInputStream(file.getAbsoluteFile());Workbook workbook = Workbook.getWorkbook(inputStream);Sheet sheet = workbook.getSheet(0);int rows = sheet.getRows();int columns = sheet.getColumns();for (int i = 1; i < rows; i++) {Cell cell = sheet.getCell(index, i);System.out.println(cell.getContents());}}⽤桌⾯上的⼀个Excel⽂件进⾏测试:public static void main(String[] args) {File file = new File("C:\\Users\\Administrator\\Desktop\\世界名著.xlsx");try {System.out.println("正在读取书名...");readColumn(file, 0);//读取第⼀列System.out.println("读取完毕");} catch (Exception e) {e.printStackTrace();}}奇怪,竟然报错了:这是使⽤jxl时⼀个需要注意的地⽅,jxl只⽀持Excel 95-2000 ⼯作簿(*.xls),不⽀持Excel ⼯作簿(*.xlsx)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
insertSql = insertSql+cell+"',";
}
}
}
insertSql = insertSql+"sys_guid())";
import java.io.FileInputStream;
import java.math.BigDecimal;
import java.sql.CallableStatement;
import java.sql.Connection;
import jav insertSql = "";
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url="jdbc:oracle:thin:@192.168.137.46:1521:leap"; //orcl为数据库的SID
// 读取excel2003
readExcel2003(fileName2003);
} catch (Exception e) {
System.out.println(e);
}
Long endTime = System.currentTimeMillis();
System.out.println("用时:" + sdf.format(new Date(endTime - startTime)));
public class InsertExcel {
public static void readExcel2003(String fileName) {
Connection conn= null;
Statement stmt = null;
CallableStatement cs = null;
//ResultSet rs = stmt.executeQuery("select * from EXCELDATA");
//st();
//System.out.println("^^"+rs.getRow());
HSSFSheet sheet = null;
}
}
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss:SS");
TimeZone t = sdf.getTimeZone();
t.setRawOffset(0);
sdf.setTimeZone(t);
Long startTime = System.currentTimeMillis();
cs.execute();
} catch (Exception e) {
System.out.println(e);
}finally{
if(conn != null){
try {
cs.close();
stmt.close();
conn.close();
for (int i = sheet.getFirstRowNum(); i < sheet.getPhysicalNumberOfRows(); i++) {
row = sheet.getRow(i);
for (int j = row.getFirstCellNum(); j < row.getPhysicalNumberOfCells(); j++) {
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Types;
import java.text.SimpleDateFormat;
import java.util.Date;
String user="dbo";
String password="longrise";
conn= DriverManager.getConnection(url,user,password);
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
row = sheet.getRow(i);
for (int j = row.getFirstCellNum(); j < row.getPhysicalNumberOfCells(); j++) {
// 推荐通过 row.getCell(j).toString() 获取单元格内容,
}
System.out.println("");
}
} catch (Exception e) {
System.out.println(e);
}
}
public static void main(String[] args) throws Exception {
System.out.println("sql&&"+insertSql);
stmt.execute(insertSql);
}
}
String sql = "{call UPDATEexceldata()}";
cs = conn.prepareCall(sql);
import java.util.TimeZone;
import ermodel.HSSFRow;
import ermodel.HSSFSheet;
import ermodel.HSSFWorkbook;
//String fileName2007 = "F:\\sad.xls";
String fileName2003 = "F:\\df\\2.xls";//路径
// 检测代码
try {
// 读取excel2007
//readExcel2007(fileName2007);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
public static void readExcel2007(String fileName) {
try {
XSSFWorkbook xwb = new XSSFWorkbook(fileName);
// 定义 row、cell
HSSFRow row = null;
// HSSFCell cell;
String cell = null;
HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(fileName));
import ermodel.XSSFRow;
import ermodel.XSSFSheet;
import ermodel.XSSFWorkbook;
import com.longrise.LEAP.Base.Global;
// 读取第一章表格内容
XSSFSheet sheet = xwb.getSheetAt(0);
// 定义 row、cell
XSSFRow row;
String cell;
// 循环输出表格中的内容
// 读取文件中的第一张表格
int sheetNum = wb.getSelectedTab()+1;
System.out.println("num**"+sheetNum);
for(int ii=0; ii<sheetNum; ii++){
sheet = wb.getSheetAt(ii);
// 循环输出表格中的内容
for (int i = sheet.getFirstRowNum(); i < sheet.getPhysicalNumberOfRows(); i++) {
insertSql = "insert into EXCELDATA(name,md1,md2,md3,id) values ('owner','";
// 通过 row.getCell(j).toString() 获取单元格内容,
cell = row.getCell(j).toString();
System.out.print(cell + "\t");
if(row.getCell(j) != null){
cell = row.getCell(j).toString();
if(j==1 || j==2){
insertSql = insertSql+cell+"','";