java如何读取Excel中的数据

合集下载

java中easyexsl的用法

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作为一种广泛应用的编程语言,具有丰富的库和功能,使得它成为一种很好的选择。

本文将介绍如何使用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文件的几种方法

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数据

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科学计数法处理

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 读取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使⽤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

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中的数据及图片

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两种方法)

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等都暂时不⾏。

javaexcel解析常见方法

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读取excel科学计数法处理

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文件中数据的简便方法(附代码)

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方法标题: 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实战完全解析

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指定列的数据详细教程和注意事项

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)。

Java如何读取Excel格式xls、xlsx数据工具类

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文件(.xls,xlsx,csv)

java读取excel文件(.xls,xlsx,csv)
</dependency> <dependency>
<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百分数保留原格式(即不转换为⼩数)的⽅法我们在⽤Java使⽤poi读取Excel时,或许会遇到百分数,然⽽poi⾃动将百分数转换为了⼩数,如果⼩数是以0开头的还可能被删除了起始的0,变成了.**,虽然数值⼤⼩没变,但是直观展⽰变了,对于不懂开发只关注结果的领导来说难免产⽣误解,这 1/**2 * 获取单元格值3 *4 * @param row 获取的⾏5 * @param column 获取单元格列号6 * @return单元格值7*/8public Object getCellValue(Row row, int column)9 {10if (row == null)11 {12return row;13 }14 Object val = "";15try16 {17 Cell cell = row.getCell(column);18if (StringUtils.isNotNull(cell))19 {20if (cell.getCellType() == CellType.NUMERIC || cell.getCellType() == CellType.FORMULA)21 {22 val = cell.getNumericCellValue();23if (DateUtil.isCellDateFormatted(cell))24 {25 val = DateUtil.getJavaDate((Double) val); // POI Excel ⽇期格式转换26 }27else28 {29if ((Double) val % 1 != 0)30 {31 val = new BigDecimal(val.toString());32 }33else34 {35 val = new DecimalFormat("0").format(val);36 }37 }38 }39else if (cell.getCellType() == CellType.STRING)40 {41 val = cell.getStringCellValue();42 }43else if (cell.getCellType() == CellType.BOOLEAN)44 {45 val = cell.getBooleanCellValue();46 }47//解决导⼊Java 读取Excel百分数保留原格式(即不转换为⼩数)的⽅法48else if(cell.getCellType() == CellType.FORMULA)49 {50if(cell.getCellStyle().getDataFormatString().indexOf("%") != -1){51 val = cell.getNumericCellValue()*100+"%";52 }53 }5455else if (cell.getCellType() == CellType.ERROR)56 {57 val = cell.getErrorCellValue();58 }5960 }61 }62catch (Exception e)63 {64return val;65 }66return val;67 }。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
下面是例子: import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; /** * 读取 excel 公共方法 * * */ public class ExcelReader { /** * * @param excelFile 读取文件对象 * @param rowNum 从第几行开始读,如果有一行表头则从第二行开 始读 * @return * @throws BiffException * @throws IOException */ public static List<String[]> readExcel(File excelFile,int rowNum) throws BiffException, IOException { // 创建一个 list 用来存储读取的内容 List<String[]> list = new ArrayList<String[]>(); Workbook rwb = null; Cell cell = null; // 创建输入流 InputStream stream = new FileInputStream(excelFile); // 获取 Excel 文件对象 rwb = Workbook.getWorkbook(stream); // 获取文件的指定工作表 默认的第一个 Sheet sheet = rwb.getSheet(0); // 行数(表头的目录不需要,从 1 开始) for (int i = rowNum-1; i < sheet.getRows(); i++) {
// 创建一个数组 用来存储每一列的值 String[] str = new String[sheet.getColumns()]; // 列数 for (int j = 0; j < sheet.getColumns(); j++) { // 获取第 i 行,第 j 列的值 cell = sheet.getCell(j, i); str[j] = cell.getContents(); } // 把刚获取的列存入 list list.add(str); } // 返回值集合 return list; } public static void main(String[] args) { String excelFileName = "abc.xls"; try { List<String[]> list = ExcelReader.readExcel(new File(excelFileName),1); for (int i = 0; i < list.size(); i++) { String[] str = (String[])list.get(i); for (int j = 0; j < str.length; j++) { System.out.println(str[j]); } } } catch (BiffException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
以上 list
相关文档
最新文档