java解析Excel,写入,插入新数据

本文详细介绍了如何使用Java进行Excel(.xls和.xlsx)文件的操作,包括读取、修改、追加数据及删除行等实用技巧,利用Apache POI和JExcelAPI库实现。

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

下面是用到的Jar包,和下载地址

Maven仓库地址:https://repo.maven.apache.org/maven2/

		<dependency>
            <groupId>net.sourceforge.jexcelapi</groupId>
            <artifactId>jxl</artifactId>
            <version>2.6.10</version>
        </dependency>
		<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>
        try {
            FileInputStream fs = new FileInputStream("d://test.xls");
            POIFSFileSystem ps=new POIFSFileSystem(fs);  //使用POI提供的方法得到excel的信息
            HSSFWorkbook wb=new HSSFWorkbook(ps);//读取解析.xls文件
            FileOutputStream out=new FileOutputStream("d://test.xls");  //向d://test.xls中写数据
            HSSFSheet sheet=wb.getSheetAt(0);  //获读取第一个sheet,因为一个excel可能有多个工作表
            HSSFRow row=sheet.getRow(4);//获取第5行
            row.getCell(1).setCellValue("第五行第一个单元格");//获取第一个单元格并赋值

            //插入数据
            int sheetLastRowNum = sheet.getLastRowNum();//得到最后一行的行号
            HSSFRow lostRow = sheet.getRow(sheetLastRowNum); //得到最后一行
            int lastCellNum = lostRow.getLastCellNum();//得到该行(lostRow)最后一个单元格

            //追加数据
            HSSFRow lastrow = sheet.createRow(sheet.getLastRowNum()+1);//在最后一行下面一行创建新的一行
            lastrow.createCell(0).setCellValue("新的一行第一个单元格");//在新创建的一行创建第一个单元格并添加数据
            lastrow.createCell(1).setCellValue("新的一行第二个单元格");//设置第二个(从0开始)单元格的数据

            /**
             * 删除行
             * ShiftRows(int startRow,int endRow,int n)
             * startRow:开始行
             * endRow:末尾行
             * n:移动n行数startRow到endRow数据域(正数:向下移,负数:向上移)
             */
            sheet.shiftRows(1,1,1);//开始行第2行,结束行第2行,把第2行到第二行向下移1行(第2行数据覆盖第3行数据)
//            sheet.shiftRows(5,sheet.getLastRowNum(),-1);//从第6行到最后一行,向上移1行,覆盖掉第五行。(删除第五行)

            out.flush();
            wb.write(out);
            out.close();

            FileInputStream fs2 = new FileInputStream("d://test.xlsx");
            XSSFWorkbook wb2 = new XSSFWorkbook(fs2);//读取解析.xlsx文件
            FileOutputStream out2=new FileOutputStream("d://test.xlsx");  //向d://test.xls中写数据

            out2.flush();
            wb2.write(out2);
            out2.close();

        } catch (Exception e) {
            e.printStackTrace();
        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值