用Java实现对Excel的读写操作

ps

用Java处理Excel,是Java很重要的一个应用,关于它网上也有很多大神发布了自己封装的ExcelUtil,阿里也有强大的EasyExcel。但是想要用好,还是要从最基础的poi学起。这篇博客只涉及了Excel的读写操作,没有高级操作,是一个入门。

准备工作

导入jar包

用Java处理Excel文件(.xls,.xlsx)现在主流使用的解决方法是使用poi。使用poi需要下载与之相关的jar包,这里我下载了当时最新的版本4.1.2,官方下载:poi-bin-4.1.2-20200217.tar.gz。下载之后解压缩能得到poi的所有jar包,但并不是所有都是需要的,只需要导入下几个:

  • commons-collections4-4.4.jar
  • commons-compress-1.19.jar
  • commons-math3-3.6.1.jar
  • poi-ooxml-4.1.2.jar
  • poi-ooxml-schemas-4.1.2.jar
  • poi-4.1.2.jar
  • xmlbeans-3.1.0.jar

关于导入jar包:参考相关博客

用到的类

  • Workbook
  • Sheet
  • Row
  • Cell
  • HSSFWorkbook
  • XSSFWorkbook

Workbook / HSSFWorkbook / XSSFWorkbook 三个类是关于整个表格的,即每个Excel文件对应一个类对象。HSSFWorkbookXSSFWorkbook 分别对应 .xls 和 .xlsx 文件,继承了Workbook类,故两种Excel均可以保存在 Workbook 对象中。

Sheet类对应的是Excel里面的工作簿,同样是一个工作簿就需要一个Sheet对象。Sheet类也有两个子类HSSFSheetXSSFSheet ,所以在同时处理两种格式的Excel文件时也只需要使用Sheet类,无需分类讨论,因为Workbook对象对应的是什么类型,其getSheet方法就返回对应的Sheet类型。

同理,对应每一行的Row和对应每一个单元格的Cell类也无需区分是HSSF还是XSSF类型,都可以通过上一级的getRowgetCell函数获得。

具体思路

读入:通过输入流用Excel文件初始化Workbook对象,利用get层层递进,创建出Cell对象,得到单元格的内容,存入二维数组(代表一个sheet),方便对数据进行操作。
写入:建立新的Workbook对象,利用creat层层递进,创建出Cell,将二维数组所对应的内容赋给单元格,用Workbook.write(OutputStream)方法输出。

getSheet
creatSheet
getRow
creatRow
getCell
getCell
Workbook
Sheet
Row
Cell

读入

流读入和解析工作表

    static Object[][] value =null;  
    static void readExcel() throws IOException {
   
        try {
   
            //数据流
            //使用到的Excel文件路径   D:\\eclipse\\eclipse-workspace\\poi_demo\\student.xls
            String filePath="D:\\test.xlsx";
            InputStream inp = new FileInputStream(new File(filePath));//输入流
             System.out.println("1.工作流,路径:"+filePath);
            //解析工作簿
            System.out.println("2.解析生成工作簿");
            String extString = filePath.substring(filePath.lastIndexOf("."));
            Workbook workbook=null;
            if(extString.equals(".xls"))  workbook = new HSSFWorkbook(inp);//一个excel用一个HSSFWorkbook
            else if(extString.equals(".xlsx"))
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iusehandle

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值