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文件中写数据,包括:1、数据类型的控制;2、单元格及数据的格式化。

要快速上手,我们还是通过阅读代码来学习,这样可以帮助大家建立一个更直观的概念和认识。

 

1、写入Excel及数据类型控制

     程序描述:通过Java程序新建一个名为test.xls的文件,并在Excel的第一行第一列写一个字符串,在第一行第二列写一个数字,在第一行第三列写一个日期。

[java]  view plain copy
  1. package jxl.zhanhj;  
  2. import java.io.File;  
  3. import java.util.Date;  
  4. import jxl.Workbook;  
  5. import jxl.write.Label;  
  6. import jxl.write.WritableSheet;  
  7. import jxl.write.WritableWorkbook;  
  8. import jxl.write.Number;  
  9. import jxl.write.DateTime;  
  10. public class CreateExcel {  
  11.     public static void main(String args[]) {  
  12.         try {  
  13.             // 打开文件  
  14.             WritableWorkbook book = Workbook.createWorkbook(new File(  
  15.                     "test.xls"));  
  16.             // 生成名为“sheet1”的工作表,参数0表示这是第一页  
  17.             WritableSheet sheet = book.createSheet("sheet1"0);  
  18.             // 在Label对象的构造子中指名单元格位置是第一列第一行(0,0),单元格内容为string  
  19.             Label label = new Label(00"string");  
  20.             // 将定义好的单元格添加到工作表中  
  21.             sheet.addCell(label);  
  22.             // 生成一个保存数字的单元格,单元格位置是第二列,第一行,单元格的内容为1234.5  
  23.             Number number = new Number(101234.5);  
  24.             sheet.addCell(number);  
  25.             // 生成一个保存日期的单元格,单元格位置是第三列,第一行,单元格的内容为当前日期  
  26.             DateTime dtime = new DateTime(20new Date());  
  27.             sheet.addCell(dtime);  
  28.             // 写入数据并关闭文件  
  29.             book.write();  
  30.             book.close();  
  31.         } catch (Exception e) {  
  32.             System.out.println(e);  
  33.         }  
  34.     }  
  35. }  
 

几个重要对象解析:

      1、WritableWorkbook:用于创建打开Excel文件

      2、WritableSheet:用于创建Excel中的页签

      3、Label:将单元格指定为文本型,并写入字符串

      4、Number:将单元格指定为数字型,并可写入数字

      5、DateTime:将单元格指定为日期型,并可写入日期

掌握这几个类及其方法后,我们便可以方便的向Excel进行写入操作了,更多对象请参见jxl api。

 

2、写入时单元格及数据的格式化

     程序描述:在数据写入到单元格后,对数据进行格式化,包括字体大小、颜色等

[java]  view plain copy
  1. package jxl.zhanhj;  
  2. import java.io.File;  
  3. import java.util.Date;  
  4. import jxl.CellType;  
  5. import jxl.Workbook;  
  6. import jxl.format.Border;  
  7. import jxl.format.BorderLineStyle;  
  8. import jxl.format.Colour;  
  9. import jxl.format.VerticalAlignment;  
  10. import jxl.format.Alignment;  
  11. import jxl.write.DateFormat;  
  12. import jxl.write.Label;  
  13. import jxl.write.NumberFormat;  
  14. import jxl.write.WritableCellFormat;  
  15. import jxl.write.WritableFont;  
  16. import jxl.write.WritableSheet;  
  17. import jxl.write.WritableWorkbook;  
  18. import jxl.write.Number;  
  19. import jxl.write.DateTime;  
  20. import jxl.write.WriteException;  
  21. public class CreateExcel {  
  22.     public static void main(String args[]) {  
  23.         try {  
  24.             // 打开文件  
  25.             WritableWorkbook book = Workbook  
  26.                     .createWorkbook(new File("test.xls"));  
  27.             // 生成名为“sheet1”的工作表,参数0表示这是第一页  
  28.             WritableSheet sheet = book.createSheet("sheet1"0);  
  29.             // 在Label对象的构造子中指名单元格位置是第一列第一行(0,0),单元格内容为string  
  30.             Label label = new Label(00"string",  
  31.                     getDataCellFormat(CellType.LABEL));  
  32.             // 将定义好的单元格添加到工作表中  
  33.             sheet.addCell(label);  
  34.             // 生成一个保存数字的单元格,单元格位置是第二列,第一行,单元格的内容为1234.5  
  35.             Number number = new Number(101234.5,  
  36.                     getDataCellFormat(CellType.NUMBER));  
  37.             sheet.addCell(number);  
  38.             // 生成一个保存日期的单元格,单元格位置是第三列,第一行,单元格的内容为当前日期  
  39.             DateTime dtime = new DateTime(20new Date(),  
  40.                     getDataCellFormat(CellType.DATE));  
  41.             sheet.addCell(dtime);  
  42.             // 写入数据并关闭文件  
  43.             book.write();  
  44.             book.close();  
  45.         } catch (Exception e) {  
  46.             System.out.println(e);  
  47.         }  
  48.     }  
  49.     public static WritableCellFormat getDataCellFormat(CellType type) {  
  50.         WritableCellFormat wcf = null;  
  51.         try {  
  52.             // 字体样式  
  53.             if (type == CellType.NUMBER || type == CellType.NUMBER_FORMULA) {// 数字  
  54.                 NumberFormat nf = new NumberFormat("#.00");  
  55.                 wcf = new WritableCellFormat(nf);  
  56.             } else if (type == CellType.DATE) {// 日期  
  57.                 DateFormat df = new DateFormat("yyyy-MM-dd hh:mm:ss");  
  58.                 wcf = new WritableCellFormat(df);  
  59.             } else {  
  60.                 WritableFont wf = new WritableFont(WritableFont.TIMES, 10,  
  61.                         WritableFont.NO_BOLD, false);  
  62.                 // 字体颜色  
  63.                 wf.setColour(Colour.RED);  
  64.                 wcf = new WritableCellFormat(wf);  
  65.             }  
  66.             // 对齐方式  
  67.             wcf.setAlignment(Alignment.CENTRE);  
  68.             wcf.setVerticalAlignment(VerticalAlignment.CENTRE);  
  69.             // 设置上边框  
  70.             wcf.setBorder(Border.TOP, BorderLineStyle.THIN);  
  71.             // 设置下边框  
  72.             wcf.setBorder(Border.BOTTOM, BorderLineStyle.THIN);  
  73.             // 设置左边框  
  74.             wcf.setBorder(Border.LEFT, BorderLineStyle.THIN);  
  75.             // 设置右边框  
  76.             wcf.setBorder(Border.RIGHT, BorderLineStyle.THIN);  
  77.             // 设置背景色  
  78.             wcf.setBackground(Colour.YELLOW);  
  79.             // 自动换行  
  80.             wcf.setWrap(true);  
  81.         } catch (WriteException e) {  
  82.             e.printStackTrace();  
  83.         }  
  84.         return wcf;  
  85.     }  
  86. }  
 

效果:

几个重要对象解析:

      1、WritableCellFormat:用于格式化单元格

      2、WritableFont:用于格式化字体

更多请参加jxl api。

到这里本节的讲解就结束了,下面我们可以总结出Excel的写入流程:

      1、用WritableWorkbook创建Excel文件

      2、用WritableSheet创建页签

      3、用Label、Number、DateTime等创建单元格内容

      4、在创建单元格内容时,我们可以给写一个格式化方法,对单元格内容进行格式化

      5、格式化主要包括2类:单元格格式化(WritableCellFormat)、值的格式化(WritableFont)


继前两节的Java读取、写入Excel后,本期将推出Java修改Excel中数据以及格式的方法和技巧,如果大家学习了前面的读、写Excel,相信学习本节内容将是不费吹灰之力啊,不过要灵活的运用还需多加努力呀。

      好了,为了展示Java修改Excel的魅力,我们先来设计一个业务场景,这个场景是根据最近做过的一件事设计出来的:

      在一张Excel中,有一批学生信息数据如下图:

 

 图1   Excel中的示例数据

      在创建Excel时,将Excel中的所在省,所在市做成了下拉菜单以供选择,设置如下:

                            

                   图2    所在省一览                               图3     所在市一览

      从图1我们会发现一个问题,王五的填写所在省为:四川省,而所在市为:石家庄,大家都石家庄是河北的省会,所以王五的这种情况属于Excel中的错误数据,那么下面我们来做一件事:将Excel中所有出现省市关系弄错了的,在Excel中进行标注出来!!

代码如下:

[java]  view plain copy
  1. package jxl.zhanhj;  
  2.   
  3. import java.io.*;  
  4. import java.util.HashMap;  
  5.   
  6. import jxl.*;  
  7. import jxl.format.Alignment;  
  8. import jxl.format.Border;  
  9. import jxl.format.BorderLineStyle;  
  10. import jxl.format.Colour;  
  11. import jxl.format.VerticalAlignment;  
  12. import jxl.write.Label;  
  13. import jxl.write.WritableCellFormat;  
  14. import jxl.write.WritableFont;  
  15. import jxl.write.WritableSheet;  
  16. import jxl.write.WritableWorkbook;  
  17. import jxl.write.WriteException;  
  18.   
  19. public class UpdateExcel {  
  20.     public static void main(String args[]) {  
  21.         WritableWorkbook book = null;  
  22.         HashMap<String, String> map = new HashMap<String, String>();  
  23.         map = getPCKV();  
  24.         try {  
  25.             // Excel获得文件  
  26.             Workbook wb = Workbook.getWorkbook(new File("update_test.xls"));  
  27.             // 打开一个文件的副本,并且指定数据写回到原文件  
  28.             book = Workbook.createWorkbook(new File("update_test.xls"), wb);  
  29.             Sheet sheet = book.getSheet(0);  
  30.             WritableSheet wsheet = book.getSheet(0);  
  31.             int colunms = sheet.getColumns();  
  32.             // 不读表头  
  33.             for (int i = 1; i < sheet.getRows(); i++) {  
  34.                 StringBuffer pcin = new StringBuffer();  
  35.                 // 将省市组合起来与HashMap进行匹配  
  36.                 String province = sheet.getCell(4, i).getContents().trim();  
  37.                 String city = sheet.getCell(5, i).getContents().trim();  
  38.                 pcin = pcin.append(province).append("-").append(city);  
  39.                 // 如果不匹配,则在该行的最后加入标注信息  
  40.                 if (!map.containsValue(pcin.toString())) {  
  41.                     Label label = new Label(colunms, i, "省市选择出错",  
  42.                             getDataCellFormat());  
  43.                     wsheet.addCell(label);  
  44.                 }  
  45.             }  
  46.             book.write();  
  47.         } catch (Exception e) {  
  48.             System.out.println(e);  
  49.         } finally {  
  50.             try {  
  51.                 book.close();  
  52.             } catch (IOException e) {  
  53.                 e.printStackTrace();  
  54.             }  
  55.         }  
  56.     }  
  57.   
  58.     // 设置标注的格式为黄底红字  
  59.     public static WritableCellFormat getDataCellFormat() {  
  60.         WritableCellFormat wcf = null;  
  61.         try {  
  62.             WritableFont wf = new WritableFont(WritableFont.TIMES, 10,  
  63.                     WritableFont.BOLD, false);  
  64.             // 字体颜色  
  65.             wf.setColour(Colour.RED);  
  66.             wcf = new WritableCellFormat(wf);  
  67.             // 对齐方式  
  68.             wcf.setAlignment(Alignment.CENTRE);  
  69.             wcf.setVerticalAlignment(VerticalAlignment.CENTRE);  
  70.             // 设置上边框  
  71.             wcf.setBorder(Border.TOP, BorderLineStyle.THIN);  
  72.             // 设置下边框  
  73.             wcf.setBorder(Border.BOTTOM, BorderLineStyle.THIN);  
  74.             // 设置左边框  
  75.             wcf.setBorder(Border.LEFT, BorderLineStyle.THIN);  
  76.             // 设置右边框  
  77.             wcf.setBorder(Border.RIGHT, BorderLineStyle.THIN);  
  78.             // 设置背景色  
  79.             wcf.setBackground(Colour.YELLOW);  
  80.             // 自动换行  
  81.             wcf.setWrap(true);  
  82.         } catch (WriteException e) {  
  83.             e.printStackTrace();  
  84.         }  
  85.         return wcf;  
  86.     }  
  87.   
  88.     // 省市对应关系Map  
  89.     public static HashMap<String, String> getPCKV() {  
  90.         HashMap<String, String> map = new HashMap<String, String>();  
  91.         map.put("01""河北省-石家庄");  
  92.         map.put("02""河北省-秦皇岛");  
  93.         map.put("03""河北省-唐山");  
  94.         map.put("04""四川省-成都");  
  95.         map.put("05""四川省-绵阳");  
  96.         map.put("06""四川省-达州");  
  97.         map.put("07""广西省-桂林");  
  98.         map.put("08""广西省-南宁");  
  99.         map.put("09""广西省-柳州");  
  100.         return map;  
  101.     }  
  102. }  

 

代码执行结果如图所示:

图4      执行结果

     

      到这里,Java修改Excel单元格的数据及格式便告一段落了,本节给出了一个较为简单的场景进行了讲述,目的在于引导大家学习Java修改Excel的常用流程和方法,若读者能将Java操作Excel学得更深,往往可以发挥更大的作用。比如程序中利用HashMap来存储对应关系,如果要将全国的省市纳入进来,利用HashMap不是很好的做好,我们可以改成通过利用数据库来达到同样的效果,这里的改进留给读者。

     

      读到这里,可能有部分读者会产生疑问,这种操作,直接在Excel中,我们不是也可以操作吗?为什么通过Java来修改,是不是多此一举了?其实不然,如果读者将Java读写文件结合起来,以及在将此程序稍微扩展一下,对每个Excel的所有页签进行遍历,那么Java程序处理的数据里和复杂度,远远不是单纯的Excel能企及的。举个简单的场景(仅仅将上述场景进行扩展):

      如果一个学院要统计该学院所有学生的信息【格式和图1一样】,每个级发一个Excel,每个级不同专业的学生放在不同的页签中(sheet),如Excel样式下图所示:

图5      09级学生信息统计表

 

图6      10级学生信息统计表

 

      最终,学院要根据收集上来的学生信息导入到数据库中,如果你是那个负责导入数据的人,你便通过Java读写Excel功能将所有的数据转化成SQL语句,同时可以判断出哪些同学信息填写错误,是不是这种应用变得更有意义了?


  • 55
    点赞
  • 247
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
众所周知,人工智能是当前最热门的话题之一, 计算机技术与互联网技术的快速发展更是将对人工智能的研究推向一个新的高潮。 人工智能是研究模拟和扩展人类智能的理论与方法及其应用的一门新兴技术科学。 作为人工智能核心研究领域之一的机器学习, 其研究动机是为了使计算机系统具有人的学习能力以实现人工智能。 那么, 什么是机器学习呢? 机器学习 (Machine Learning) 是对研究问题进行模型假设,利用计算机从训练数据学习得到模型参数,并最终对数据进行预测和分析的一门学科。 机器学习的用途 机器学习是一种通用的数据处理技术,其包含了大量的学习算法。不同的学习算法在不同的行业及应用能够表现出不同的性能和优势。目前,机器学习已成功地应用于下列领域: 互联网领域----语音识别、搜索引擎、语言翻译、垃圾邮件过滤、自然语言处理等 生物领域----基因序列分析、DNA 序列预测、蛋白质结构预测等 自动化领域----人脸识别、无人驾驶技术、图像处理、信号处理等 金融领域----证券市场分析、信用卡欺诈检测等 医学领域----疾病鉴别/诊断、流行病爆发预测等 刑侦领域----潜在犯罪识别与预测、模拟人工智能侦探等 新闻领域----新闻推荐系统等 游戏领域----游戏战略规划等 从上述所列举的应用可知,机器学习正在成为各行各业都会经常使用到的分析工具,尤其是在各领域数据量爆炸的今天,各行业都希望通过数据处理与分析手段,得到数据有价值的信息,以便明确客户的需求和指引企业的发展。
众所周知,人工智能是当前最热门的话题之一, 计算机技术与互联网技术的快速发展更是将对人工智能的研究推向一个新的高潮。 人工智能是研究模拟和扩展人类智能的理论与方法及其应用的一门新兴技术科学。 作为人工智能核心研究领域之一的机器学习, 其研究动机是为了使计算机系统具有人的学习能力以实现人工智能。 那么, 什么是机器学习呢? 机器学习 (Machine Learning) 是对研究问题进行模型假设,利用计算机从训练数据学习得到模型参数,并最终对数据进行预测和分析的一门学科。 机器学习的用途 机器学习是一种通用的数据处理技术,其包含了大量的学习算法。不同的学习算法在不同的行业及应用能够表现出不同的性能和优势。目前,机器学习已成功地应用于下列领域: 互联网领域----语音识别、搜索引擎、语言翻译、垃圾邮件过滤、自然语言处理等 生物领域----基因序列分析、DNA 序列预测、蛋白质结构预测等 自动化领域----人脸识别、无人驾驶技术、图像处理、信号处理等 金融领域----证券市场分析、信用卡欺诈检测等 医学领域----疾病鉴别/诊断、流行病爆发预测等 刑侦领域----潜在犯罪识别与预测、模拟人工智能侦探等 新闻领域----新闻推荐系统等 游戏领域----游戏战略规划等 从上述所列举的应用可知,机器学习正在成为各行各业都会经常使用到的分析工具,尤其是在各领域数据量爆炸的今天,各行业都希望通过数据处理与分析手段,得到数据有价值的信息,以便明确客户的需求和指引企业的发展。
JXL是Java Excel API的缩写,可以处理Excel文件读取写入。以下是使用JXL进行Excel文件读取写入的示例代码: 1. 读取Excel文件: ```java import java.io.File; import java.util.ArrayList; import java.util.List; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; public class ExcelReader { public static void main(String[] args) { try { File file = new File("test.xls"); Workbook workbook = Workbook.getWorkbook(file); Sheet sheet = workbook.getSheet(0); int rowCount = sheet.getRows(); List<String[]> list = new ArrayList<String[]>(); for (int i = 0; i < rowCount; i++) { Cell[] cells = sheet.getRow(i); String[] row = new String[cells.length]; for (int j = 0; j < cells.length; j++) { row[j] = cells[j].getContents(); } list.add(row); } for (String[] row : list) { for (String cell : row) { System.out.print(cell + "\t"); } System.out.println(); } workbook.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 2. 写入Excel文件: ```java import java.io.File; import java.util.ArrayList; import java.util.List; import jxl.Workbook; import jxl.write.Label; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; public class ExcelWriter { public static void main(String[] args) { try { File file = new File("test.xls"); WritableWorkbook workbook = Workbook.createWorkbook(file); WritableSheet sheet = workbook.createSheet("Sheet1", 0); List<String[]> list = new ArrayList<String[]>(); list.add(new String[] {"Name", "Age", "Gender"}); list.add(new String[] {"Tom", "20", "Male"}); list.add(new String[] {"Lucy", "18", "Female"}); for (int i = 0; i < list.size(); i++) { String[] row = list.get(i); for (int j = 0; j < row.length; j++) { Label label = new Label(j, i, row[j]); sheet.addCell(label); } } workbook.write(); workbook.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 以上代码演示了如何使用JXL处理Excel文件读取写入,通过这些示例代码,你可以根据自己的需要进行调整和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值