栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java中Excel文件解析

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java中Excel文件解析

一、Apache - poi

1.Apache - poi是java编写的免费开源的跨平台的Java-API,Java-POI,提供给java程序的Microsoft Office格式档案进行读写功能的API开源类库

2.提供不同文件格式的解析:

HSSF

XSSF:Workbook对象实现它

eg:Workbook workbook = new XSSFWorkbook(传入excel路径文件流);

3.方法:

读:Workbook workbook = new XSSFWorkbook(new                                                   FileInputStream("D:\1627356552686.xlsx"));

 

()将Workbook对象中包含的数据,通过输出流,写入至Excel
            workbook.write(out);

(1)sheet:工作簿
                      获取工作簿数量
                       Sheet sheet0 = workbook.getSheet("Sheet0");
                       Sheet sheet1 = workbook.getSheetAt(0);

                       System.out.println("工作簿1中的数据行:" + sheet0.getLastRowNum());
                       System.out.println("工作簿2中的数据行:" + sheet1.getLastRowNum());

 

(2)根据下标获取指定行

Row row = sheet.getsheeAt(0);//第一行下标为0

(2.1)遍历所有行

for(Row row : sheet) {
    System.out.println(row);
}

(2.2)遍历所有区域行

for (int i = 1; i <= sheet.getLastRowNum(); i++) {
    Row row = sheet.getRow(i);
    System.out.println(row);
}

(3)根据下标获取指定单元格

Cell cell = row.getCell(0);//第一个下标为0

(3.1)获得单元格内的值

cell.getStringCellValue();

(3.1)遍历所有单元格

for(Cell cell : row) {
                
}

注意:返回值为数字时调用cell.getNumericCellValue();此方法返回值为double

写:Workbook workbook = new XSSFWorkbook(FileOutputStream out = new FileOutputStream("D:\1\demo.xlsx"));

(1)创建sheet工作簿

            sheet sheet0 = workbook.createSheet();
            Sheet sheet1 = workbook.createSheet();
            Sheet sheet2 = workbook.createSheet();

(2)  创建数据行Row
            Row row = sheet0.createRow(0);
            
(3)     创建单元格
            Cell cell0 = row.createCell(0);

            创建单元格的值

            cell0.setCellValue();

(4)创建单元格格式
          获取格式编码

// 创建单元格样式
DataFormat dataFormat = workbook.createDataFormat();
Short formatCode = dataFormat.getFormat("yyyy-MM-dd HH:mm:ss");
CellStyle cellStyle = workbook.createCellStyle();
cellStyle.setDataFormat(formatCode);

// ...

// 为当前行创建单元格
Cell cell1 = row.createCell(1);
cell1.setCellStyle(cellStyle); // 设置单元格样式
cell1.setCellValue(new Date()); // 保存当前日期时间至本单元格

 

(5)获取列头
         Row headRow = sheet.getRow(0);
            
           遍历列头单元格
            for(Cell headCell : headRow) {
                System.out.print(headCell + "t");
            }

(6)获取当前单元格类型(运用switch循环可以跟单元格类型匹配填入相应的单元格中)
       

CellType type = cell.getCellType();

        例如;根据当前单元格的类型获取其中的值

 switch(cellType) {
                    case STRING:
                        String strVal = cell.getStringCellValue();
                        System.out.print(strVal + "t");
                        break;
                    case NUMERIC:
                        double numVal = cell.getNumericCellValue();
                        System.out.print(numVal + "t");
                        break;
                    }
                }    


                  

(7)   在“已存在”的Excel文件中,创建新的sheet
            Sheet sheet = workbook.createSheet();//每运行一遍程序,创建一个新的sheet

(8)设置单元格对其

// 创建单元格样式
CellStyle cellStyle = workbook.createCellStyle();

//设置单元格的水平对齐类型。 此时水平居中
cellStyle.setAlignment(HorizontalAlignment.CENTER);

// 设置单元格的垂直对齐类型。 此时垂直靠底边
cellStyle.setVerticalAlignment(VerticalAlignment.BOTTOM);

 

二、在要读写超大Excel文件使使用SXSSF和easyExcel

1.SXSSF类(Workbook workbook = new SXSSFWorkbook(100);
                        FileOutputStream out = new FileOutputStream("D:\1\100w.xlsx"))

                            ............                     

                        写入文件
                        workbook.write(out);

2.easyExcel

详细内容看https://blog.csdn.net/weixin_49187233/article/details/125772491?utm_source=app&app_version=5.6.1
 

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1014245.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号