apache poi 解析excel

本文涉及的产品
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
简介:

maven 依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
< dependency >
     < groupId >com.fasterxml.jackson.core</ groupId >
     < artifactId >jackson-core</ artifactId >
     < version >2.0.0</ version >
</ dependency >
 
 
< dependency >
     < groupId >org.apache.poi</ groupId >
     < artifactId >poi</ artifactId >
     < version >3.15</ version >
</ dependency >
 
< dependency >
     < groupId >org.apache.poi</ groupId >
     < artifactId >poi-ooxml</ artifactId >
     < version >3.15</ version >
</ dependency >
 
< dependency >
     < groupId >org.apache.poi</ groupId >
     < artifactId >poi-ooxml-schemas</ artifactId >
     < version >3.15</ version >
</ dependency >
 
< dependency >
     < groupId >org.apache.xmlbeans</ groupId >
     < artifactId >xmlbeans</ artifactId >
     < version >2.6.0</ version >
</ dependency >
 
< dependency >
     < groupId >com.fasterxml.jackson.dataformat</ groupId >
     < artifactId >jackson-dataformat-xml</ artifactId >
     < version >2.0.0</ version >
</ dependency >


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
package  excel;
 
import  org.apache.poi.ss.usermodel.CellType;
import  org.apache.poi.xssf.usermodel.XSSFCell;
import  org.apache.poi.xssf.usermodel.XSSFRow;
import  org.apache.poi.xssf.usermodel.XSSFSheet;
import  org.apache.poi.xssf.usermodel.XSSFWorkbook;
 
import  java.io.InputStream;
import  java.text.SimpleDateFormat;
import  java.util.ArrayList;
import  java.util.HashMap;
import  java.util.List;
import  java.util.Map;
 
/**
  * Created by xiaominzh on 2016/11/14.
  */
public  class  ExcelExportNew {
 
     private  static  String getCellValue(XSSFCell cell,String columnType) throws  Exception{
         if ( "i" .equals(columnType)){
             return  String.valueOf(cell.getNumericCellValue());
         }
 
         if ( "d" .equals(columnType)){
             SimpleDateFormat sdf =  new  SimpleDateFormat( "yyyy-MM-dd" );
             return  sdf.format(cell.getDateCellValue());
         }
 
         cell.setCellType(CellType.STRING);
         return  cell.getRichStringCellValue().toString();
 
     }
 
     private  static  List<String> loadColumnNames(XSSFRow row){
         List<String> array =  new  ArrayList<String>();
         int  maxCellNum = row.getLastCellNum();
         for ( int  i= 0 ;i<maxCellNum;i++){
             XSSFCell cell = row.getCell(i);
             String name = cell.getStringCellValue();
             array.add(name);
         }
         return  array;
     }
 
     private  static  List<String> loadColumnTypes(XSSFRow row){
         List<String> array =  new  ArrayList<String>();
         int  maxCellNum = row.getLastCellNum();
         for ( int  i= 0 ;i<maxCellNum;i++){
             XSSFCell cell = row.getCell(i);
             String name = cell.getStringCellValue();
             array.add(name);
         }
         return  array;
     }
 
 
     private  static  void  convertExcelToJSON(String fileName,String sheetName) throws  Exception {
         InputStream is = ExcelExportNew. class .getResourceAsStream(fileName);
         XSSFWorkbook hssfWorkbook =  new  XSSFWorkbook(is);
         XSSFSheet sheet = hssfWorkbook.getSheet(sheetName);
 
         int  rows = sheet.getLastRowNum();
         List<Map<String, Object>> result =  new  ArrayList<Map<String, Object>>();
 
         List<String> columnTypes = loadColumnTypes(sheet.getRow( 0 ));
         List<String> columnNames = loadColumnNames(sheet.getRow( 1 ));
 
         for  ( int  i =  3 ; i <= rows; i++) {
             XSSFRow row = sheet.getRow(i);
             int  maxCellNum = row.getLastCellNum();
             Map<String, Object> item =  new  HashMap<String, Object>();
             for  ( int  cellIndex =  0 ; cellIndex < maxCellNum; cellIndex++) {
 
                 XSSFCell cell = row.getCell(cellIndex);
                 String columnName = columnNames.get(cellIndex);
                 String columnType = columnTypes.get(cellIndex);
                 String value =  null ;
                 try  {
//                    cell.setCellType(CellType.STRING);
                     value = getCellValue(cell,columnType);
                 catch  (Exception e) {
                     System.err.println( "row:" +i+ ",column:" +cellIndex);
                     System.err.println(e.getMessage());
                     break ;
                 }
 
                 item.put(columnName, value);
             }
             result.add(item);
         }
         System.out.println(JSONUtil.getJSONString(result));
     }
 
 
     public  static  void  main(String[] args)  throws  Exception {
         convertExcelToJSON( "shop_sale_type_list.xlsx" , "shop_sale_type_list" );
     }
}

测试excel文件

wKiom1gyU_Lyi-spAAeHuONXvwE111.jpg

输出

wKioL1gyVIjRXTSLAAq81D76qTI029.jpg


 本文转自 antlove 51CTO博客,原文链接:http://blog.51cto.com/antlove/1874907

相关文章
|
2月前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
89 3
|
3月前
|
安全 网络协议 应用服务中间件
AJP Connector:深入解析及在Apache HTTP Server中的应用
【9月更文挑战第6天】在Java Web应用开发中,Tomcat作为广泛使用的Servlet容器,经常与Apache HTTP Server结合使用,以提供高效、稳定的Web服务。而AJP Connector(Apache JServ Protocol Connector)作为连接Tomcat和Apache HTTP Server的重要桥梁,扮演着至关重要的角色
93 2
|
1月前
|
消息中间件 存储 负载均衡
Apache Kafka核心概念解析:生产者、消费者与Broker
【10月更文挑战第24天】在数字化转型的大潮中,数据的实时处理能力成为了企业竞争力的重要组成部分。Apache Kafka 作为一款高性能的消息队列系统,在这一领域占据了重要地位。通过使用 Kafka,企业可以构建出高效的数据管道,实现数据的快速传输和处理。今天,我将从个人的角度出发,深入解析 Kafka 的三大核心组件——生产者、消费者与 Broker,希望能够帮助大家建立起对 Kafka 内部机制的基本理解。
79 2
|
2月前
|
数据处理 Python
Python 高级技巧:深入解析读取 Excel 文件的多种方法
在数据分析中,从 Excel 文件读取数据是常见需求。本文介绍了使用 Python 的三个库:`pandas`、`openpyxl` 和 `xlrd` 来高效处理 Excel 文件的方法。`pandas` 提供了简洁的接口,而 `openpyxl` 和 `xlrd` 则针对不同版本的 Excel 文件格式提供了详细的数据读取和处理功能。此外,还介绍了如何处理复杂格式(如合并单元格)和进行性能优化(如分块读取)。通过这些技巧,可以轻松应对各种 Excel 数据处理任务。
251 16
|
2月前
|
前端开发 JavaScript
💥【exceljs】纯前端如何实现Excel导出下载和上传解析?
本文介绍了用于处理Excel文件的库——ExcelJS,相较于SheetJS,ExcelJS支持更高级的样式自定义且易于使用。表格对比显示,ExcelJS在样式设置、内存效率及流式操作方面更具优势。主要适用于Node.js环境,也支持浏览器端使用。文中详细展示了如何利用ExcelJS实现前端的Excel导出下载和上传解析功能,并提供了示例代码。此外,还提供了在线调试的仓库链接和运行命令,方便读者实践。
427 5
|
2月前
|
前端开发 JavaScript Java
导出excel的两个方式:前端vue+XLSX 导出excel,vue+后端POI 导出excel,并进行分析、比较
这篇文章介绍了使用前端Vue框架结合XLSX库和后端结合Apache POI库导出Excel文件的两种方法,并对比分析了它们的优缺点。
773 0
|
2月前
|
Java Apache
Apache POI java对excel表格进行操作(读、写) 有代码!!!
文章提供了使用Apache POI库在Java中创建和读取Excel文件的详细代码示例,包括写入数据到Excel和从Excel读取数据的方法。
55 0
|
3月前
|
分布式计算 Java Apache
Apache Spark Streaming技术深度解析
【9月更文挑战第4天】Apache Spark Streaming是Apache Spark生态系统中用于处理实时数据流的一个重要组件。它将输入数据分成小批次(micro-batch),然后利用Spark的批处理引擎进行处理,从而结合了批处理和流处理的优点。这种处理方式使得Spark Streaming既能够保持高吞吐量,又能够处理实时数据流。
76 0
|
4月前
|
前端开发 PHP
ThinkPHP6之Excel解析
ThinkPHP6之Excel解析
58 0
|
4月前
|
easyexcel Java API
Apache POI、EasyPoi、EasyExcel 三种区别,如何选择
Apache POI、EasyPoi、EasyExcel 三种区别,如何选择
787 0

推荐镜像

更多