• JAVA实现Excel的读写--poi


      上一篇为大家介绍了通过xls.jar的方式生成Excel的方法,本篇就为大家再介绍一下通过poi方式实现Excel文件的读写操作,内容很简单,代码注释很清晰。

      1、生成Excel文件:

    import java.io.File;
    import java.io.FileOutputStream;
    
    import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    
    public class poi_write {
        
        public static void main(String[] args) {
            final String [] str = {"id", "name", "sex"};
            //创建Excel工作薄
            HSSFWorkbook workbook = new HSSFWorkbook();
            //创建Excel工作表
            HSSFSheet sheet = workbook.createSheet();
            //创建第一行
            HSSFRow row = sheet.createRow(0);
            HSSFCell cell = null;
            
            //添加表头
            for (int i = 0; i < str.length; i++) {
                cell = row.createCell(i);
                cell.setCellValue(str[i]);
            }
            
            //追加数据
            for (int i = 1; i <= 10; i++) {
                HSSFRow rows = sheet.createRow(i);
                HSSFCell cell_id = rows.createCell(0);
                cell_id.setCellValue(i+"");
                HSSFCell cell_name = rows.createCell(1);
                cell_name.setCellValue("name:"+i);
                HSSFCell cell_sex = rows.createCell(2);
                cell_sex.setCellValue("男");
            }
            
            //文件保存路径
            File file = new File("E:/cnblogs/poi_text.xls");
            try{
                if(!file.exists()){
                    file.createNewFile();
                }
                FileOutputStream fileOut = new FileOutputStream(file);//创建一个文件输出流对象
                workbook.write(fileOut);
                fileOut.close();//关闭输出流对象
            }catch (Exception e) {
                e.printStackTrace();
            }
            System.out.println("Excel文件已生成");
        }
        
    }

      2、读取Excel文件:

    import java.io.File;
    import java.io.IOException;
    
    import org.apache.commons.io.FileUtils;
    import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    
    public class poi_reading {
        
        public static void main(String[] args) {
            final File file = new File("E:/cnblogs/poi_text.xls");
            if(file.exists()){
                try {
                    HSSFWorkbook workbook = new HSSFWorkbook(FileUtils.openInputStream(file));
                    //workbook.getSheet("Sheet0");获得指定的工作表
                    //HSSFSheet sheet = workbook.getSheet("Sheet0");
                    //workbook.getSheetAt(0);默认获得第一个工作表
                    HSSFSheet sheet = workbook.getSheetAt(0);
                    
                    int firstRowNum = 0;
                    //获得当前sheet最后一行行号
                    int lastRowNum = sheet.getLastRowNum();
                    for (int i = firstRowNum; i <= lastRowNum; i++) {
                        HSSFRow row = sheet.getRow(i);
                        //获得当前行最后单元格列号
                        int lastCellNum = row.getLastCellNum();
                        for (int j = 0; j < lastCellNum; j++) {
                            HSSFCell cell = row.getCell(j);
                            String value = cell.getStringCellValue();
                            System.out.print(value+" ");
                        }
                        System.out.println("");
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }else{
                System.out.println("读取文件不存在");
            }
        }
        
    }

      好了,基本的方法已经为大家介绍完毕,更好的效果展示就靠大家自己摸索了。

      不知道大家发现一个问题没?我们生成的Excl文件都是.xls结尾,.xls是office97-2003的版本,而对于2007以后的版本则是以.xlsx结尾。那如何生成高版本的Excel呢?我们不能仅仅是修改一下File文件的后缀名,我们这里需要使用XSSFWorkbook进行创建workbook,然后把剩余的HSSF开头去掉就可以了。不过在这里需要说明的就是,我们不知道用户使用的是低版本还是高版本,所以我们建议大家都使用HSSFWorkbook来进行创建以.xls结尾的Excel文件。

      如有错误,还望指正。谢谢

  • 相关阅读:
    JMeter怎样测试WebSocket
    Android—基于OpenCV+Android实现人脸检测
    Android—实现科大讯飞语音合成
    Could not resolve com.android.support.constraint:constraint-layout:1.1.3.
    Mac上利用Aria2加速百度网盘下载
    将Excel表中的数据导入MySQL数据库
    Android Studio 添加模块依赖
    Mac上基于hexo+GitHub搭建个人博客(一)
    微信小程序—setTimeout定时器的坑
    微信小程序-腾讯地图显示偏差问题
  • 原文地址:https://www.cnblogs.com/AndroidJotting/p/4422950.html
Copyright © 2020-2023  润新知