Java读取Excel文件中的数据

本文介绍使用Java读取Excel文件的基本方法,包括依赖jxl库、读取单元格数据及将数据导出到TXT文件等实用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自aking21alinjuju:《Java开发有一说一》——Java读取Excel文件中的数据

在日常工作中,我们常常会进行文件读写操作,除去我们最常用的纯文本文件读写,更多时候我们需要对Excel中的数据进行读取操作,本文将介绍Excel读写的常用方法,希望对大家学习Java读写Excel会有帮助。 

      在开始进行Java读写Excel前,我们需要先下一个jxl的jar包,这个jar包中提供了相关读写Excel的方法,在百度里所搜一下jxl.jar下载就会出现很多下载地址了,这里不再累述。随后我们将jxl.jar放到classpath下或者在工程的buildpath中添加jxl.jar后,便可以开始Java读写Excel的神秘之旅了。

1、Java读取Excel数据

首先,创建一个xls文件(如:jxltest.xls),然后在文件中添加一些数据,Excel文件创建完成后,我们便可以开始写代码读取了:

代码如下:

 

[java]  view plain copy
  1. package jxl.zhanhj;  
  2. import java.io.File;  
  3. import java.io.FileInputStream;  
  4. import java.io.FileNotFoundException;  
  5. import java.io.IOException;  
  6. import java.io.InputStream;  
  7. import jxl.Sheet;  
  8. import jxl.Workbook;  
  9. import jxl.read.biff.BiffException;  
  10. public class GetExcelInfo {  
  11.     public static void main(String[] args) {  
  12.         GetExcelInfo obj = new GetExcelInfo();  
  13.         // 此处为我创建Excel路径:E:/zhanhj/studysrc/jxl下  
  14.         File file = new File("E:/zhanhj/studysrc/jxl/getExcleinfo.xls");  
  15.         obj.readExcel(file);  
  16.     }  
  17.     // 去读Excel的方法readExcel,该方法的入口参数为一个File对象  
  18.     public void readExcel(File file) {  
  19.         try {  
  20.             // 创建输入流,读取Excel  
  21.             InputStream is = new FileInputStream(file.getAbsolutePath());  
  22.             // jxl提供的Workbook类  
  23.             Workbook wb = Workbook.getWorkbook(is);  
  24.             // Excel的页签数量  
  25.             int sheet_size = wb.getNumberOfSheets();  
  26.             for (int index = 0; index < sheet_size; index++) {  
  27.                 // 每个页签创建一个Sheet对象  
  28.                 Sheet sheet = wb.getSheet(index);  
  29.                 // sheet.getRows()返回该页的总行数  
  30.                 for (int i = 0; i < sheet.getRows(); i++) {  
  31.                     // sheet.getColumns()返回该页的总列数  
  32.                     for (int j = 0; j < sheet.getColumns(); j++) {  
  33.                         String cellinfo = sheet.getCell(j, i).getContents();  
  34.                         System.out.println(cellinfo);  
  35.                     }  
  36.                 }  
  37.             }  
  38.         } catch (FileNotFoundException e) {  
  39.             e.printStackTrace();  
  40.         } catch (BiffException e) {  
  41.             e.printStackTrace();  
  42.         } catch (IOException e) {  
  43.             e.printStackTrace();  
  44.         }  
  45.     }  
  46. }  

 上面这个例子是一个很简单读取Excel并将各单元格的数据打印到控制台上,更多Excel操作方法,请参加jxl API。

 

下面我们再对上面的例子进行一个小小的扩展:

1、读取一个目录下的所有Excel文件

2、读取的每个Excel文件的数据写入到不同的txt中

代码如下:

[java]  view plain copy
  1. package jxl.zhanhj;  
  2. import java.io.File;  
  3. import java.io.FileInputStream;  
  4. import java.io.FileNotFoundException;  
  5. import java.io.FileWriter;  
  6. import java.io.IOException;  
  7. import java.io.InputStream;  
  8. import java.io.PrintWriter;  
  9. import jxl.Sheet;  
  10. import jxl.Workbook;  
  11. import jxl.read.biff.BiffException;  
  12. public class GetExcelInfo {  
  13.     public static void main(String[] args) {  
  14.         GetExcelInfo obj = new GetExcelInfo();  
  15.         // 此处路径指定到目录而不是单个文件  
  16.         File file = new File("E:/zhanhj/studysrc/jxl");  
  17.         if (file.isDirectory()) {  
  18.             File[] files = file.listFiles();  
  19.             for (File f : files)  
  20.                 // 如果还存在子目录则继续读取子目录下的Excel文件  
  21.                 if (f.isDirectory()) {  
  22.                     File[] subfiles = f.listFiles();  
  23.                     for (File fi : subfiles) {  
  24.                         // 对文件进行过滤,只读取Excel文件,非Excel文件不读取,否则会出错  
  25.                         if (fi.getName().indexOf(".xls") > 0) {  
  26.                             obj.readExcelWrite2TXT(fi);  
  27.                         }  
  28.                     }  
  29.                 } else {  
  30.                     // 对文件进行过滤,只读取Excel文件,非Excel文件不读取,否则会出错  
  31.                     if (f.getName().indexOf(".xls") > 0) {  
  32.                         obj.readExcelWrite2TXT(f);  
  33.                     }  
  34.                 }  
  35.         }  
  36.     }  
  37.     // 去读Excel的方法readExcel,该方法的入口参数为一个File对象  
  38.     public void readExcelWrite2TXT(File file) {  
  39.         // 创建文件输出流  
  40.         FileWriter fw = null;  
  41.         PrintWriter out = null;  
  42.         try {  
  43.             // 指定生成txt的文件路径  
  44.             String fileName = file.getName().replace(".xls""");  
  45.             fw = new FileWriter(file.getParent() + "/" + fileName + ".txt");  
  46.             out = new PrintWriter(fw);  
  47.             // 创建输入流,读取Excel  
  48.             InputStream is = new FileInputStream(file.getAbsolutePath());  
  49.             // jxl提供的Workbook类  
  50.             Workbook wb = Workbook.getWorkbook(is);  
  51.             // Excel的页签数量  
  52.             int sheet_size = wb.getNumberOfSheets();  
  53.             for (int index = 0; index < sheet_size; index++) {  
  54.                 // 每个页签创建一个Sheet对象  
  55.                 Sheet sheet = wb.getSheet(index);  
  56.                 // sheet.getRows()返回该页的总行数  
  57.                 for (int i = 0; i < sheet.getRows(); i++) {  
  58.                     // sheet.getColumns()返回该页的总列数  
  59.                     for (int j = 0; j < sheet.getColumns(); j++) {  
  60.                         String cellinfo = sheet.getCell(j, i).getContents();  
  61.                         // 将从Excel中读取的数据写入到txt中  
  62.                         out.println(cellinfo);  
  63.                     }  
  64.                 }  
  65.             }  
  66.         } catch (FileNotFoundException e) {  
  67.             e.printStackTrace();  
  68.         } catch (BiffException e) {  
  69.             e.printStackTrace();  
  70.         } catch (IOException e) {  
  71.             e.printStackTrace();  
  72.         } finally {  
  73.             try {  
  74.                 // 记得关闭流  
  75.                 out.close();  
  76.                 fw.close();  
  77.                 // 由于此处用到了缓冲流,如果数据量过大,不进行flush操作,某些数据将依旧  
  78.                 // 存在于内从中而不会写入文件,此问题一定要注意  
  79.                 out.flush();  
  80.             } catch (IOException e) {  
  81.                 e.printStackTrace();  
  82.             }  
  83.         }  
  84.     }  
  85. }  

 

下面我们来一起对Java读取Excel流程做一个总结:

      1、打开工作文件Workbook,在此之前先用java的io流创建或者读取文件

      2、打开工作表Sheet
      3、读行,然后读列(行和列是从0开始的)
      4、进行数据进行操作

      本次Java读取Excel文件数据暂时介绍到这,下期将会继续讲解通过Java程序将数据写入Excel,以及如何读取及处理Excel中的合并单元格等相关问题,咱们下期再见!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值