excel文件解析

上一篇文章对excel 下的xml文件做了一个简单的介绍,这次做一个详细一点的,供大家对excel底层的xml文件做一个入门了解吧。

一、excel的文件类型

     excel文件类型大致分为两种,xls和xlsx。xls文件底层是二进制组成,xlsx文件底层是由各个xml文件组成的,这里具体分析xlsx文件的解析。mac os系统下可以通过ezip软件打开xlsx结尾的xlsx文件,解压出组成excel的xml文件。

                                                                       图1、 test_pic.xlsx文件解压后图片 

 

二、xml各个文件含义简介

    excel文件主要内容在以excel文件命名的文件夹下的xl文件夹中。(图1中 test_pic下的xl文件夹中)

 

    worksheet文件:存放excel中各个页签的基本信息:sheet1.xml,sheet2.xml,......对应excel中的各个页签中:

    1. 单元格基本内容,包含单元格的值(重复高或者特殊情况下的string字段会存储在sharedString中,sheet.xml中值存储对应的index),单元格的相关属性的index和缩写标识。具体存储在<row>标签的<c>标签下

    2. 行列属性(整行整列属性值)列属性存储在各个<row>标签中,列属性单独存储在<cols>中

    3. 条件格式化数据  对应<conditionalFormatting>

    4. 超链接数据  对应<hyperlink>

 

    theme文件:存放excel中一些基本默认数据 如颜色 字体样式等,对外提供一个index标识值,供sharedString文件或styles文件使用。

 

                                                                图2、theme文件涉及的数据在excel中的展示

 

    media文件:存放一些插入的图片。

 

    drawings文件:对应相应的页签文件(drawing1对应sheet1),存放相应的嵌入对象(插入的图片 ,生成的图表等数据)的一些基本数据,如位置、偏移量等信息。

 

    sharedStrings文件:存放在excel中的共享数据 比如同样的一段文字在多个单元格出现,为了减少sheet文件所占大小,提取到                    sharedString文件中。同时存在富文本形式的单元格值时,相应的数据以及对应的数据段格式也会直接存储在sharedStrings文件中。

                                                                            图3、excel中 富文本形式展示

 

    styles文件:存放单元格相应的格式信息数据。

 

三、更加详细的各个xml文件解析

     具体更加详细的xml文件属性的介绍,可以到微软openxml的官方参考文档查询:

     https://docs.microsoft.com/en-us/dotnet/api/overview/openxml/?view=openxml-2.8.1

    充分利用右上方的搜索框和左侧的目录,基本所有的xml文件属性都可以找到。

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好!对于Spring Boot项目中的Excel文件解析入库操作,你可以按照以下步骤来实现: 1. 首先,确保你的项目中已经引入了相关的依赖。你可以在 `pom.xml` 文件中添加以下依赖: ```xml <dependencies> <!-- Spring Boot Starter --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <!-- Apache POI for Excel processing --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version> </dependency> </dependencies> ``` 2. 创建一个用于解析Excel文件的工具类。你可以在这个类中编写解析Excel文件的代码。这里使用 Apache POI 来实现。下面是一个简单的示例代码: ```java import org.apache.poi.ss.usermodel.*; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class ExcelParser { public static List<List<String>> parseExcelFile(MultipartFile file) throws IOException { Workbook workbook = WorkbookFactory.create(file.getInputStream()); Sheet sheet = workbook.getSheetAt(0); Iterator<Row> rowIterator = sheet.iterator(); List<List<String>> data = new ArrayList<>(); while (rowIterator.hasNext()) { Row row = rowIterator.next(); Iterator<Cell> cellIterator = row.cellIterator(); List<String> rowData = new ArrayList<>(); while (cellIterator.hasNext()) { Cell cell = cellIterator.next(); String cellValue = ""; switch (cell.getCellType()) { case STRING: cellValue = cell.getStringCellValue(); break; case NUMERIC: cellValue = String.valueOf(cell.getNumericCellValue()); break; // 处理其他类型的单元格,根据需要进行扩展 } rowData.add(cellValue); } data.add(rowData); } workbook.close(); return data; } } ``` 3. 创建一个控制器类,在其中接收Excel文件并调用工具类进行解析和入库操作。这里使用Spring MVC来处理请求和响应。示例代码如下: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.util.List; @RestController @RequestMapping("/api") public class ExcelController { @Autowired private ExcelService excelService; @PostMapping("/upload") public void uploadExcelFile(@RequestParam("file") MultipartFile file) throws IOException { List<List<String>> data = ExcelParser.parseExcelFile(file); excelService.saveData(data); } } ``` 4. 创建一个服务类,在其中实现将解析后的数据存入数据库的逻辑。你可以根据自己的需求选择合适的数据库操作框架(如Spring Data JPA、MyBatis等)。示例代码如下: ```java import org.springframework.stereotype.Service; import java.util.List; @Service public class ExcelService { // 注入你的数据访问层对象 public void saveData(List<List<String>> data) { // 解析并保存数据到数据库 } } ``` 这样,你就完成了Spring Boot项目中Excel文件解析入库的基本操作。你可以根据实际需求进行扩展和修改。希望对你有所帮助!如果你还有其他问题,可以继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值