一个作业需要对excel数据进行离散化,想起好像可以用java对excel数据进行处理,因此学习使用,

在网上也有很多人对这个内容解释,但是还是觉得有些杂,就自己整理了一些别人写的内容。

/************************************************正文啦*****************************************************/

在处理excel数据时候有两种方式:
jxl:一种是首先依据excel中的数据创建一个相应的实体类,将每一条数据视为一个对象,然后将对excel中的数据处理转成对对象的处理。

(支持.xls文件,excel2003版,好像最最新的jxl.jar可以支持2007版excel)
poi:一种是将每一条数据视为一个集合或者数组,然后再将整个数据视为一个整体。(支持excel.xls和excel.xlsx,  还支持word文件)

注:由于我自己写的是用jxl,所以主要讲jxl的使用

jxl.jar是通过java操作excel表格的工具类库;

下载地址:百度网盘链接:https://pan.baidu.com/s/1ceIT6oDRDGFott7b7u0Jgw  提取码:ed57

搭建环境
将下载后的文件解包,得到JXL.JAR,放入classpath,安装就完成了。如果包不能正常的加载,可以把你下载好的JXL.JAR包放入D:/JAVA/jre/lib/ext中

如果想在Eclipse的一个项目中导入JXL.JAR,在该项目上右键,点击“属性”, 类别那里选择”库“,点击"添加外部jar”在弹出的文件选择对话框选择你的jxl.jar

/******************************************************************************************************/

jxl.jar完美体现了面向对象的思想.简单列举几个常用类和接口

Workbook--对应一个excel文件

Sheet--对应一个sheet工作簿

Cell--对应一个cell单元格

/************************************创建一个文件***************************************************/

拟生成一个名为 “测试数据.xls”的Excel文件,其中第一个工作表被命名为“第一页”,大致效果如下

  1. package test;
  2.  
  3. import java.io.*;
  4. import jxl.*;
  5. import jxl.write.*;
  6. public class ExcelOperater
  7. {
  8. public static void main(String args[]){
  9. try{
  10. //打开文件
  11. WritableWorkbook book= Workbook.createWorkbook(new File("测试.xls"));
  12. //生成名为“第一页”的工作表,参数0表示这是第一页
  13. WritableSheet sheet=book.createSheet("第一页",0);
  14. //在Label对象的构造子中指名单元格位置是第一列第一行(0,0)
  15. //以及单元格内容为test
  16. Label label=new Label(0,0,"test");
  17. //将定义好的单元格添加到工作表中
  18. sheet.addCell(label);
  19. /*生成一个保存数字的单元格
  20. 必须使用Number的完整包路径,否则有语法歧义
  21. 单元格位置是第二列,第一行,值为789.123*/
  22. jxl.write.Number number = new jxl.write.Number(1,0,789.123);
  23. sheet.addCell(number);
  24. //写入数据并关闭文件
  25. book.write();
  26. book.close();
  27. }catch(Exception e)
  28. {
  29. System.out.println(e);
  30. }
  31. }
  32. }

结果如图:

/*******************************************************读取文件*************************************************************/

  1. package test;
  2.  
  3. import java.io.*;
  4. import jxl.*;
  5. public class ReadXls{
  6. public static void main(String args[]){
  7. try{
  8. Workbook book=Workbook.getWorkbook(new File("测试.xls"));
  9. //获得第一个工作表对象
  10. Sheet sheet=book.getSheet(0);
  11. //得到第一列第一行的单元格
  12. Cell cell1=sheet.getCell(0,0);
  13. String result=cell1.getContents();
  14. System.out.println(result);
  15. book.close();
  16. }catch(Exception e)
  17. {
  18. System.out.println(e);
  19. }
  20. }
  21. }

结果如图:

/*****************************************************在已经生成的Excel文件中添加一个工作表***********************************************/

  1. package test;
  2.  
  3. import java.io.*;
  4. import jxl.*;
  5. import jxl.write.*;
  6.  
  7. public class ModifyXls{
  8. public static void main(String args[]){
  9. try{
  10. //Excel获得文件
  11. Workbook wb=Workbook.getWorkbook(new File("测试.xls"));
  12. //打开一个文件的副本,并且指定数据写回到原文件
  13. WritableWorkbook book=Workbook.createWorkbook(new File("测试.xls"),wb);
  14. //添加一个工作表
  15. WritableSheet sheet=book.createSheet("第二页",1);
  16. sheet.addCell(new Label(0,5,"第二页的测试数据"));
  17. book.write();
  18. book.close();
  19. }catch(Exception e)
  20. {
  21. System.out.println(e);
  22. }
  23. }
  24. }

结果如图:

/********************************************************************修改文件内容**********************************************/

  1. package Shopping;
  2.  
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5.  
  6. import jxl.Cell;
  7. import jxl.CellType;
  8. import jxl.NumberCell;
  9. import jxl.Sheet;
  10. import jxl.Workbook;
  11. import jxl.write.Label;
  12. import jxl.write.WritableCell;
  13. import jxl.write.WritableSheet;
  14. import jxl.write.WritableWorkbook;
  15.  
  16. public class test{
  17.  
  18. public static void main(String args[]){{
  19. try{
  20. //找到要修改的表
  21. FileInputStream is = new FileInputStream("购物篮数据.xls");
  22. Workbook wb=Workbook.getWorkbook(is);
  23.  
  24. Sheet st =wb.getSheet(0);//获取第一张sheet表
  25. int stColumns = st.getColumns();//获取sheet表中所包含的的总列数
  26. int stRows = st.getRows();//获取sheet表总所包含的总行数
  27.  
  28. //新建要写入数据的表,并指定路径
  29. // jxl.Workbook 对象是只读的,所以如果要修改Excel,需要创建一个可写的副本,副本指向原Excel文件
  30. WritableWorkbook wbook = Workbook.createWorkbook(new File("副本.xls"),wb);
  31. WritableSheet wSheet = wbook.getSheet(0);
  32. WritableCell wCell = null;
  33.  
  34. //处理birth——year
  35. for(int i=1; i<stRows; i++){
  36. wCell = wSheet.getWritableCell(8,i);
  37. int cell8 = (int)((NumberCell)wSheet.getCell(8,i)).getValue();
  38. Label replace = null;
  39.  
  40. if(cell8<1980){
  41. replace = new Label(8,i,"老人家");//输入内容【列,行,值】
  42. }
  43. else if(cell8<1985){
  44. replace = new Label(8,i,"80后");
  45. }
  46. else if(cell8<1990){
  47. replace = new Label(8,i,"85后");
  48. }
  49. else if(cell8<1995){
  50. replace = new Label(8,i,"90后");
  51. }
  52. else if(cell8<2000){
  53. replace = new Label(8,i,"95后");
  54. }
  55. else{
  56. replace = new Label(8,i,"00后");
  57.  
  58. }
  59.  
  60. wSheet.addCell(replace);
  61. wCell = wSheet.getWritableCell(8, i);
  62. }
  63.  
  64. wbook.write();
  65. wbook.close();
  66.  
  67. }catch(Exception e)
  68. {
  69. System.out.println(e);
  70. }
  71. }
  72. }
  73. }

上面的内容前三个是从别人的代码里摘过来的。初学比较容易理解,第三个就是我自己的作业了。

我的数据可以下载:链接:https://pan.baidu.com/s/1iX3Sr0Vppqn4bvhKBsbG0w 提取码:jdog

有些内容我写的不是很详细,推荐一下我当时看的内容和poi的讲解

1:https://www.aliyun.com/jiaocheng/251324.html

2:https://blog.csdn.net/hjiacheng/article/details/53573679

3:https://blog.csdn.net/qq_30401659/article/details/50974575

4:https://www.cnblogs.com/mingforyou/p/3282922.html

如果有什么错的地方,请提醒我改正,谢谢!

Java 使用jxl对Excel进行操作的更多相关文章

  1. Java:JXL解析Excel文件

    项目中,有需求要使用JXL解析Excel文件. 解析Excel文件 我们先要将文件转化为数据流inputStream. 当inputStream很大的时候 会造成Java虚拟器内存不够 抛出内存溢出 ...

  2. java利用jxl实现Excel导入功能

    本次项目实践基于Spring+SpringMvc+MyBatis框架,简单实现了Excel模板导出.和Excel批量导入的功能.实现过程如下:. 1.maven导入所需jar包 <depende ...

  3. Java 用jxl读取excel并保存到数据库(此方法存在局限,仅限本地电脑操作,放在服务器上的项目,需要把文件上传到服务器,详细信息,见我的别的博客)

    项目中涉及到读取excel中的数据,保存到数据库中,用jxl做起来比较简单. 基本的思路: 把excel放到固定盘里,然后前段页面选择文件,把文件的名字传到后台,再利用jxl进行数据读取,把读取到的数 ...

  4. Java通过jxl解析Excel文件入库,及日期格式处理方式 (附源代码)

    JAVA可以利用jxl简单快速的读取文件的内容,但是由于版本限制,只能读取97-03  xls格式的Excel. 本文是项目中用到的一个实例,先通过上传xls文件(包含日期),再通过jxl进行读取上传 ...

  5. Java中用JXL导出Excel代码详解

    jxl是一个韩国人写的java操作excel的工具, 在开源世界中,有两套比较有影响的API可供使用,一个是POI,一个是jExcelAPI.其中功能相对POI比较弱一点.但jExcelAPI对中文支 ...

  6. Java 使用 Jxl 实现 Excel 导入导出

    开发过程中经常需要用到数据的导入导出功能,之前用的是POI,这次使用JXL,JXL相对于POI来说要轻量简洁许多,在数据量不大的情况下还是非常实用的.这里做一下使用JXL的学习记录.首先需要导入相应的 ...

  7. Java通过jxl读取Excel

    package com.hd.all.test.testjava; import java.io.File; import java.io.IOException; import java.util. ...

  8. JAVA利用jxl读取Excel内容

    JAVA可以利用jxl简单快速的读取文件的内容,但是由于版本限制,只能读取97-03  xls格式的Excel. import java.io.File; import java.io.FileInp ...

  9. 记录-java(jxl) Excel导入数据库

    本内容主要包括(文件上传.excel2003数据导入数据库)excel导入数据库功能需要jxl  jar包支持 下面是文件上传的前端测试代码 <%@ page language="ja ...

随机推荐

  1. JD-GUI反编译出现ERROR

    反编译Jar包一般使用JD-GUI工具,很方便.但有时会出现异常,如下: 此时,可以辅助使用另一个工具来反编译代码:Luyten(https://github.com/deathmarine/Luyt ...

  2. 开发宏功能:excel中从sheet批量插入

    源数据如图: 宏操作: 生成数据后: 关键操作:在excel中启用开发工具,添加宏,然后添加模块即可,编辑完代码后,自定义功能按钮即可. Sub MakeDataSource() Dim isExis ...

  3. httpd 处理模型

    prefork 一个请求用一个进程响应 worker 一个请求用一个线程响应(启动多个进程,多个进程生成多个线程) event 一个进程,处理多个请求

  4. python python中那些双下划线开头的那些函数都是干啥用用的

    1.写在前面 今天遇到了__slots__,,所以我就想了解下python中那些双下划线开头的那些函数都是干啥用用的,翻到了下面这篇博客,看着很全面,我只了解其中的一部分,还不敢乱下定义. 其实如果足 ...

  5. 2018-2019-2 《网络对抗技术》Exp0 Kali安装 Week1 20165335

    一.资源下载以及工具安装 1.下载虚拟机工具VMware. 下载链接 :https://www.baidu.com/link?url=uuaBW5ETUl3GrhUKvPbbEc7QlQvGHfpD8 ...

  6. IIS + FastCGI+php(从5.2升级到5.3)

    由于PHP5.3 的改进,原有的IIS 通过isapi 方式解析PHP脚本已经不被支持,PHP从5.3.0 以后的版本开始使用微软的 fastcgi 模式,这是一个更先进的方式,运行速度更快,更稳定. ...

  7. 在linux和windows用c++编写c接口的动态库

    linux 动态的头文件api.h #ifndef _API_H #define _API_H #ifdef DLL_IMPLEMENT #define DLL_EXPORT extern " ...

  8. 【题解】Luogu P4438 [HNOI/AHOI2018]道路

    原题传送门 实际就是一道简单的树形dp 设f[u][i][j]表示从根结点到结点u经过i条未翻修公路,j条未翻修铁路的贡献最小值 边界条件:f[leaf][i][j]=(A+i)(B+j)C (题目上 ...

  9. 02:安装 Kerberos

    1.1 环境介绍   参考博客:https://www.cnblogs.com/xiaodf/p/5968178.html https://www.douban.com/note/701660289/ ...

  10. 让selenium中的Cromerderive不加载图片设置

    把配置参数(chrom_opt)设置好后将其添加到 browser = webdriver.Chrome(executable_path="chromedriver.exe的路径" ...