java读取excel文件,按照指定的日期条件读数据,然后导出txt存储并以其日期命令
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java读取excel文件,按照指定的日期条件读数据,然后导出txt存储并以其日期命令相关的知识,希望对你有一定的参考价值。
读取excel文件,有两列,一列是时间,一列是内容,现在想通过写代码读取excel内容,按照日期进行分划分,将每一天相同日期的内容统计起来,存储到txt中,并以时间命名,或者其他的方式也行,求各位指导一下
你这个可以先把excel预处理,以时间进行排序,然后用poi读取excel内容,读取到时间不同,就写入txt结束。。 参考技术A java不会
VB,VBA我可以实现!
Java读取excel指定行列的数据(poi的方式)
文章目录
一、前言
JAVA中的POI是一个由Apache提供的jar包,用于支持处理Excel、Word、PPT等文件。它是一套用Java编写的免费开源的跨平台的 Java API;用于给Java程序,访问微软格式文档Microsoft Office,读和写的功能的Java API。
二、业务需求背景
项目需要读取excel中部分行列的内容(可以延申为读取一个excel中的内容,并且这个excel中的行数和列数是动态变化的)。然后把读到的内容转化为Json格式的数据。
这是excel文件内容,要将这个文件中的内容读出并转化 为json格式的数据:(这里只是列举部分数据,Json格式已经体现了)
'p10':
'3': 0.75
'4': 0.428
'6': 0.289
'8': 0.22
'10': 0.191
'12': 0.158
'14': 0.14
'16': 0.125
'18': 0.121
'20': 0.113
'p20':
'3': 0.652
'4': 0.412
'6': 0.267
'8': 0.179
'10': 0.141
'12': 0.138
'14': 0.116
'16': 0.109
'18': 0.12
'20': 0.122
三、解决思路
- 把每个单元格当作一个对象,这个对象中包含横坐标,纵坐标,单元格中的数据值。
- 找出表头行(也就是第二行,因为第一行中的数据用不到,所以不需要读取,笔者的需求是这样的)。
- 找出表头列(也就是第一列)。
- 按照要求的格式拼接数据(要求的格式比如说是json或者其他格式进行拼接)。
四、实现方案
1.引入pom
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
2.按照解决思路2、3、4进行代码的编写
//获取文件路径
String filePath = "D:\\\\TI.xls";
File file = new File(filePath);
//获取文件后缀
String finishFile = filePath.substring(turbulenceCurveFile.lastIndexOf(".") + 1);
InputStream inputStream = new FileInputStream(file);
//这里需要注意XSSFWorkbook能够处理xlsx的文件
//而HSSFWorkbook能够处理xls的文件,不然会报错,这样写是为了更好的兼容处理两种格式
Workbook workbook;
if ("xlsx".equals(finishFile))
workbook = new XSSFWorkbook(inputStream);
else
workbook = new HSSFWorkbook(inputStream);
//这里是读取第几个sheet
Sheet sheet = workbook.getSheetAt(0);
//这里是读取总行数
int rows = sheet.getPhysicalNumberOfRows();
List<CoordinateVO> allList = new ArrayList<>();
//1.找到所有的元素对象,然后用list存放
for (int i = 1; i < rows; i++)
Row row = sheet.getRow(i);//获取每一行
int columns = 0;
if (1 == i)
//获取每一行的最后一列的列号,即总列数,这里需要注意一下,
//这种方法读取第一行的列数的时候会多读取一列,所以这里要减1
columns = row.getLastCellNum() - 1;
else
columns = row.getLastCellNum();
for (int j = 0; j < columns; j++)
//获取每个单元格
Cell cell = row.getCell(j);
//设置单元格类型
cell.setCellType(CellType.STRING);
//获取单元格数据
String cellValue = cell.getStringCellValue();
CoordinateVO coordinateVO = new CoordinateVO();
coordinateVO.setCoordinateX(i);
coordinateVO.setCoordinateY(j);
coordinateVO.setDataValue(cellValue);
allList.add(coordinateVO);
//至此,所有的数据都已经获取完了,并且都存放在allList这个集合当中去了
//接下来就是自己去拼接数据格式了,相信各位大佬这里应该没有问题,以下代码就不贴了
3.补充贴一下代码中的实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CoordinateVO
/**
* excel中的横坐标
*/
private Integer coordinateX;
/**
* excel中的纵坐标
*/
private Integer coordinateY;
/**
* excel中的每个单元格的数据值
*/
private String dataValue;
4.代码中关键点的说明
操作Excel包括对象Workbook(工作簿),Sheet(工作表) ,Cell(单元格)。一个Excel就对应一Workbook对象,一个Workbook可以有多个Sheet对象,一个Sheet对象可以有多个Cell对象。
说明:本文是通过poi的方式对excel进行操作,如果想通过jxl的方式对excel进行操作的话,可以点击链接:java使用jxl读取execl中的数据
备注:本文为作者原创作品,有什么不正确的地方希望各位大神能指出不当之处,笔者当虚心受教。不喜勿喷。(转载请说明出处)谢谢!
以上是关于java读取excel文件,按照指定的日期条件读数据,然后导出txt存储并以其日期命令的主要内容,如果未能解决你的问题,请参考以下文章