利用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文件内容的方法

一、介绍在开发过程中,我们经常会遇到需要读取Excel文件内容的情况。
而Java作为一种广泛应用的编程语言,具有丰富的库和功能,使得它成为一种很好的选择。
本文将介绍如何使用Java来获取Excel文件的内容,并将分为以下几个部分来进行讲解。
二、使用POI库进行Excel文件操作POI(Poor Obfuscation Implementation)是Apache基金会的一个开源项目,它为Java程序提供了读取和写入Microsoft Office格式文件的功能。
具体来说,POI库中的HSSF模块可以用于读取和操作Excel文件。
以下是使用POI库进行Excel文件操作的步骤。
1. 引入POI库首先需要引入POI库的相关依赖。
可以通过Maven来引入POI库,添加以下依赖到项目的pom.xml文件中即可:```xml<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>```2. 读取Excel文件接下来,我们可以通过POI库的相关类来读取Excel文件。
首先需要创建一个文件输入流来读取Excel文件,然后通过HSSFWorkbook类来加载文件内容,最后可以通过遍历的方式获取Excel文件的内容。
以下是一个简单的示例:```javaFileInputStream file = new FileInputStream("example.xls"); HSSFWorkbook workbook = new HSSFWorkbook(file); HSSFSheet sheet = workbook.getSheetAt(0);for (Row row : sheet) {for (Cell cell : row) {// 处理单元格的内容}}```3. 处理Excel文件内容在读取Excel文件内容后,我们可以通过POI库提供的类来处理Excel 文件的内容,比如获取单元格的值、设置单元格的值等操作。
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格式xls、xlsx数据工具类

Java如何读取Excel格式xls、xlsx数据⼯具类⽬录Java 读取Excel格式xls、xlsx数据⼯具类需要POI的jar包⽀持调⽤⽅式使⽤poi读取xlsx格式的Excel总结今天遇到的坑我使⽤的是springmvc,⾸先是controller部分然后是读取Excel⽂件部分,也就是service部分spring-servlet.xml 配置如下最初的maven是这么配置的Java 读取Excel格式xls、xlsx数据⼯具类需要POI的jar包⽀持调⽤⽅式ReadExcelTest excelTest = new ReadExcelTest();excelTest.readExcel("D:\\data1.xlsx");package com.util;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import ermodel.HSSFWorkbook;import ermodel.Cell;import ermodel.Row;import ermodel.Sheet;import ermodel.Workbook;import ermodel.XSSFWorkbook;import org.apache.xmlbeans.impl.piccolo.io.FileFormatException;public class ReadExcelTest {private static final String EXTENSION_XLS = "xls";private static final String EXTENSION_XLSX = "xlsx";/**** <pre>* 取得Workbook对象(xls和xlsx对象不同,不过都是Workbook的实现类)* xls:HSSFWorkbook* xlsx:XSSFWorkbook* @param filePath* @return* @throws IOException* </pre>*/private Workbook getWorkbook(String filePath) throws IOException {Workbook workbook = null;InputStream is = new FileInputStream(filePath);if (filePath.endsWith(EXTENSION_XLS)) {workbook = new HSSFWorkbook(is);} else if (filePath.endsWith(EXTENSION_XLSX)) {workbook = new XSSFWorkbook(is);}return workbook;}/*** ⽂件检查* @param filePath* @throws FileNotFoundException* @throws FileFormatException*/private void preReadCheck(String filePath) throws FileNotFoundException, FileFormatException {// 常规检查File file = new File(filePath);if (!file.exists()) {throw new FileNotFoundException("传⼊的⽂件不存在:" + filePath);}if (!(filePath.endsWith(EXTENSION_XLS) || filePath.endsWith(EXTENSION_XLSX))) {throw new FileFormatException("传⼊的⽂件不是excel");}}/*** 读取excel⽂件内容* @param filePath* @throws FileNotFoundException* @throws FileFormatException*/public void readExcel(String filePath) throws FileNotFoundException, FileFormatException {// 检查this.preReadCheck(filePath);// 获取workbook对象Workbook workbook = null;try {workbook = this.getWorkbook(filePath);// 读⽂件⼀个sheet⼀个sheet地读取for (int numSheet = 0; numSheet < workbook.getNumberOfSheets(); numSheet++) {Sheet sheet = workbook.getSheetAt(numSheet);if (sheet == null) {continue;}System.out.println("=======================" + sheet.getSheetName() + "========================="); int firstRowIndex = sheet.getFirstRowNum();int lastRowIndex = sheet.getLastRowNum();// 读取⾸⾏即,表头Row firstRow = sheet.getRow(firstRowIndex);for (int i = firstRow.getFirstCellNum(); i <= firstRow.getLastCellNum(); i++) {Cell cell = firstRow.getCell(i);String cellValue = this.getCellValue(cell, true);System.out.print(" " + cellValue + "\t");}System.out.println("");// 读取数据⾏for (int rowIndex = firstRowIndex + 1; rowIndex <= lastRowIndex; rowIndex++) {Row currentRow = sheet.getRow(rowIndex);// 当前⾏int firstColumnIndex = currentRow.getFirstCellNum(); // ⾸列int lastColumnIndex = currentRow.getLastCellNum();// 最后⼀列for (int columnIndex = firstColumnIndex; columnIndex <= lastColumnIndex; columnIndex++) {Cell currentCell = currentRow.getCell(columnIndex);// 当前单元格String currentCellValue = this.getCellValue(currentCell, true);// 当前单元格的值System.out.print(currentCellValue + "\t");}System.out.println("");}System.out.println("======================================================");}} catch (Exception e) {e.printStackTrace();} finally {if (workbook != null) {try {workbook.close();} catch (IOException e) {e.printStackTrace();}}}}/*** 取单元格的值* @param cell 单元格对象* @param treatAsStr 为true时,当做⽂本来取值 (取到的是⽂本,不会把“1”取成“1.0”)* @return*/private String getCellValue(Cell cell, boolean treatAsStr) {if (cell == null) {return "";}if (treatAsStr) {// 虽然excel中设置的都是⽂本,但是数字⽂本还被读错,如“1”取成“1.0”// 加上下⾯这句,临时把它当做⽂本来读取cell.setCellType(Cell.CELL_TYPE_STRING);}if (cell.getCellType() == Cell.CELL_TYPE_BOOLEAN) {return String.valueOf(cell.getBooleanCellValue());} else if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {return String.valueOf(cell.getNumericCellValue());} else {return String.valueOf(cell.getStringCellValue());}}}使⽤poi读取xlsx格式的Excel总结今天遇到的坑公司实习⽣项⽬,其中有个功能是读取Excel数据,之前做过以为很快就能搞定,万万没想到,本地写的⼀切都正常,可就在要发布⽣产了,尼玛测试环境居然出bug了读取xlsx格式的Excel,读不了,本地完全可以,就是测试环境上不⾏,⼼⾥⼀万只曹尼玛奔过下⾯是代码部分:我使⽤的是springmvc,⾸先是controller部分@RequestMapping("ReadFromExcel")@ResponseBodypublic Response ReadFromExcel(@RequestParam(value = "file") MultipartFile file,@RequestAttribute("userNo") String userNo) {try {//校验⽂件checkFile(file);List<ArrayList<String>> list =excelService.readExcel(file);if (CollectionUtils.isEmpty(list)) {return new Response(ERROR_CODE, "导⼊的⽂件没有数据",false);}}catch (Exception e){logger.error("ReadFromExcel异常",e);}return new Response(ERROR_CODE, "导⼊失败", false);}private void checkFile(MultipartFile file) throws IOException {//判断⽂件是否存在if(null == file){logger.error("⽂件不存在!");throw new FileNotFoundException("⽂件不存在!");}//获得⽂件名String fileName = file.getOriginalFilename();("ReadFromExcel fileName",fileName);//判断⽂件是否是excel⽂件if(!fileName.endsWith(xls) && !fileName.endsWith(xlsx)){logger.error(fileName + "不是excel⽂件");throw new IOException(fileName + "不是excel⽂件");}}然后是读取Excel⽂件部分,也就是service部分这些⽹上随便⼀搜都能搜到@Overridepublic List<ArrayList<String>> readExcel(MultipartFile file) {List<ArrayList<String>> list = new ArrayList<ArrayList<String>>();try {// 检查⽂件("ExcelServiceImpl 获取⽂件名", file.getOriginalFilename());// 获得Workbook⼯作薄对象Workbook workbook = getWorkBook(file);// 创建返回对象,把每⾏中的值作为⼀个数组,所有⾏作为⼀个集合返回("获得Workbook⼯作薄对象", file.getOriginalFilename());if (workbook != null) {for (int sheetNum = 0; sheetNum < workbook.getNumberOfSheets(); sheetNum++) { // 获得当前sheet⼯作表Sheet sheet = workbook.getSheetAt(sheetNum);("获得当前sheet⼯作表", file.getOriginalFilename());if (sheet == null) {continue;}// 获得当前sheet的开始⾏int firstRowNum = sheet.getFirstRowNum();// 获得当前sheet的结束⾏int lastRowNum = sheet.getLastRowNum();// 循环除了第⼀⾏的所有⾏for (int rowNum = firstRowNum + 1; rowNum <= lastRowNum; rowNum++) {// 获得当前⾏Row row = sheet.getRow(rowNum);if (row == null) {continue;}// 获得当前⾏的开始列int firstCellNum = row.getFirstCellNum();// 获得当前⾏的列数int lastCellNum = row.getPhysicalNumberOfCells();ArrayList<String> cells = new ArrayList<>();// 循环当前⾏for (int cellNum = firstCellNum; cellNum < lastCellNum; cellNum++) {Cell cell = row.getCell(cellNum);cells.add(getCellValue(cell));}list.add(cells);}}}} catch (Exception e) {logger.error("readExcel Exception", e.getMessage());}return list;}private Workbook getWorkBook(MultipartFile file) {// 获得⽂件名String fileName = file.getOriginalFilename();// 创建Workbook⼯作薄对象,表⽰整个excelWorkbook workbook = null;try {// 获取excel⽂件的io流InputStream is = file.getInputStream();("获取excel⽂件的io流");// 根据⽂件后缀名不同(xls和xlsx)获得不同的Workbook实现类对象if (fileName.endsWith(xls)) {// 2003workbook = new HSSFWorkbook(is);} else if (fileName.endsWith(xlsx)) {// 2007workbook = new XSSFWorkbook(is);}} catch (Exception e) {(e.getMessage());}return workbook;}private String getCellValue(Cell cell) {String cellValue = "";if (cell == null) {return cellValue;}// 把数字当成String来读,避免出现1读成1.0的情况if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {cell.setCellType(Cell.CELL_TYPE_STRING);}// 判断数据的类型switch (cell.getCellType()) {case Cell.CELL_TYPE_NUMERIC: // 数字cellValue = String.valueOf(cell.getNumericCellValue());break;case Cell.CELL_TYPE_STRING: // 字符串cellValue = String.valueOf(cell.getStringCellValue());break;case Cell.CELL_TYPE_BOOLEAN: // BooleancellValue = String.valueOf(cell.getBooleanCellValue());break;case Cell.CELL_TYPE_FORMULA: // 公式cellValue = String.valueOf(cell.getCellFormula());break;case Cell.CELL_TYPE_BLANK: // 空值cellValue = "";break;case Cell.CELL_TYPE_ERROR: // 故障cellValue = "⾮法字符";break;default:cellValue = "未知类型";break;}return cellValue;}spring-servlet.xml 配置如下<bean id="multipartResolver" class="monsMultipartResolver"><property name="defaultEncoding" value="utf-8"/><property name="maxUploadSize" value="10485760000"/><property name="maxInMemorySize" value="40960"/></bean>最初的maven是这么配置的<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.9</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.9</version></dependency>好了,本地⾛起来完全没⽑病,很开⼼,终于可以发布了,可以早点回学校写论⽂了,发到测试环境,测试读取xls也是没⽑病,可尼玛,想读取个xlsx的⽂件试试看,⽹页提⽰404,这什么⿁,打⽇志查问题,还⼀直以为是前端的哥们出问题,可⼀看⽇志不对啊,请求已经进来了,可是⾛到这⼀步就没了 workbook = new XSSFWorkbook(is);这是为什么,赶紧⽹上查,⼀堆解决⽅案,⼀个个试,最后实在没办法把别⼈所有的⽅法⼀个个试,最后⼜加了如下jar包<dependency><groupId>xmlbeans</groupId><artifactId>xmlbeans</artifactId><version>2.3.0</version><type>pom</type></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>3.9</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>3.9</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-examples</artifactId><version>3.9</version></dependency>问题是解决了,可却不知其所以然,记录⼀下。
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,即总⾏数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/** * 读取 Excel 中的数据.将这些数据放入到一个三维数组中. * @author Administrator * @param filePath 文件路径. * @deprecated:读取 Excel 中的数据将它放入到 ArrayList 数组中(此为 三维数组). */ public static ArrayList readExcel(String filePath) {
import jxl.Cell; import jxl.Sheet; import jxl.Workbook;
/** * <p>Title: </p> * <pre>Description: Excel 数据导入到 oracle 数据库类. * </pre> * <p>Copyright: Copyright (c) 2004</p> * <p>Company: 易通技术有限公司</p> * @author Allen * @version 1.0 */ public class ExcelImportOracle {
/** * 将 readExcel 方法读出来的三维数组数据转换成二维数组数据. * @param al * @return 返回二维数组数据. */ public static ArrayList getDisplayData(ArrayList al) { ArrayList result = new ArrayList(); for(int i = 0;i < al.size();i ++)
/** * 用于返回三维数组的 ArrayList.
*/ private static ArrayList subdata = new ArrayList();
/** * Excel 中的表名.
*/ private static String tablename;
/** * 文件的路径
*/ private static String filePath;
for (int a = 0; a < st.length; a++) { ArrayList alList = new ArrayList(); ArrayList tablenames = new ArrayList(); ArrayList tableAndContents = new ArrayList(); tablename = st[a].getName().trim(); int b = 0;
/** * 该方法为完成读取 Excel 中的数据并将数据插入到对应的数据库表中 的操作(在调用前需要先调用 setFilePath(String)这个方法.). * @author Administrator * @param data:读取 Excel 中的数据的数组. * @deprecated:将读取 Excel 中的数据插入到对应的数据库表 中. *
for (int i = 1; i < st[a].getRows(); i++) { ArrayList al = new ArrayList();
for (int j = 0; j < st[a].getColumns(); j++) { Cell c00 = st[a].getCell(j, i); // 通用的获取 cell 值的方式,返回字符串 String strc00 = StringUtil.toISO(c00.getContents().t rim()); // 获得 cell 具体类型值的方式得到内容. al.add(j, strc00); } alList.add(b, al);
try { subdata.clear();//将静态 ArrayList 数组清空.(如果不清空原数据会 不断累加) InputStream is = new FileInputStream(filePath); Workbook rwb = Workbook.getWorkbook(is); // Sheet st = rwb.getSheet(0);//这里有两种方法获取 sheet 表, 1 为名字,而为下标,从 0 开始 // Sheet st = rwb.getSheet("Book1");// Excel 中第一页的页 名称. Sheet st[] = rwb.getSheets();// 得到所有 Excel 中页的列表.
#xuewei2007 发表于 2008-02-18 14:50:07 IP: 168.160.249.* 想问你下,就是在那个 InsertData 方法 for (int i=0; i<data.size(); i++)...{ tablename = ((ArrayList)((ArrayList)data.get(i)).get(0)).get(0).toString(); Contents = (ArrayList)((ArrayList)data.get(i)).get(1); WfdefineDateOperate.currecorde(tablename,Contents);
try { String tablename; ArrayList Contents = new ArrayList();
for (int i=0; i<data.size(); i++){ tablename = ((ArrayList)((ArrayList)data.get(i)).get(0)). get(0).toString(); Contents = (ArrayList)((ArrayList)data.get(i)).get(1); WfdefineDateOperate.currecorde(tablename,Contents); } } catch (Exception e) { e.printStackTrace(); } }
/** * 将读取的 Excel 的三维数组数据进行对应的数据库表插入操作. * @author Administrator * @param data:读取 Excel 中的数据的数组.
* @deprecated:将读取 Excel 中的数据插入到对应的数据库表中. */ private static void InsertData(ArrayList data) {
if(file.exists()) { result = file.delete();
} else
{ System.out.println("文件没有找到,无法删除!"); }
if(result) { System.out.println("删除成功!");
} else
{ System.out.println("删除失败!"); } } return subdata; }
{ ArrayList tmp = (ArrayList)((ArrayList)al.get(i)).get(1);
for(int j = 0;j < tmp.size();j ++) { result.add(tmp.get(j));
} }
return result; }
/** * @param args */ public static void main(String[] args) { }
} WfdefineDateOperate 这个是怎么用的,它有什么作用呢?等待您的解答. 2008-02-19 08:45:20 作者回复 此类的 currecorde 方法的作用就是将 Contents 数据持久化到 tablename 表中。我写的是静态方法直接调用即可! #xuewei2007 发表于 2008-02-19 13:39:59 IP: 168.160.249.* 其实我已经想到了你这个应该是起的这么个作用的, 如果方便的话,可以将你的那个 WfdefineDateOperate 类,也就是你数据 持久化的这个过程给我看看吗? 2008-02-20 09:27:49 作者回复 此类涉及数据持久化底层操作,内容较多,请见谅! #xuewei2007 发表于 2008-02-19 13:45:26 IP: 168.160.249.* 还有我还有其他的问题,就是我发现,好象在读取数据的时候,始终是从第 二行数据开始读的,不知道你碰到这个问题没?
}
发表于 @ 2006 年 07 月 21 日 10:20:00|评论(loading... )|编辑
旧一篇: 关于 Excel 中的数据如何导入到 oracle 数据库中.
评论
#xuewei2007 发表于 2008-02-18 14:43:42 IP: 168.160.249.* 您好! 新年快乐! 看了你的这篇文章后,自己也尝试着操作,可是没有成功.请问可不可以留 下联系,便于请问. MSN :xuewei2007@ 2008-02-19 08:46:15 作者回复 我现在很少上MSN,不过 blog 我经常来,我的 MSN:apicescn@
JAVA EXCEL API 简介
Java Excel 是一开放源码项目,通过它 Java 开发人员可以读取 Excel 文件的内 容、创建新的 Excel 文件、更新已经存在的 Excel 文件。使用该 API 非 Windows 操作系统也可以通过纯 Java 应用来处理 Excel 数据表。因为是使用 Java 编写的, 所以我们在 Web 应用中可以通过 JSP、Servlet 来调用 API 实现对 Excel 数据表 的访问。
b++; } tablenames.add(tablename); tableAndContents.add(0, tablenames); tableAndContents.add(1, alList); subdata.add(a, tableAndContents); } rwb.close(); // 关闭 //System.out.println(subdata);// 输出 } catch (Exception e) { e.printStackTrace(); } finally { //删除上传文件 File file = new File(filePath); boolean result = false;