解析excel文件流

1. 请求接口添加 : responseType: 'blob', 

2. Export(this.formSearchData).then((data) => {

1. 请求接口添加 : responseType: 'blob', 

2. Export(this.formSearchData).then((data) => {

        const elink = document.createElement('a')

        elink.download = '价格表.xlsx' // 定义表格名称,后缀文件格式

        elink.style.display = 'none'

        const blob = new Blob([data], { type: 'application/octet-stream,charset=UTF-8' })  //type:后台返回的格式

        elink.href = URL.createObjectURL(blob)

        document.body.appendChild(elink)

        elink.click()

        document.body.removeChild(elink)

      }).catch(() => {

      })

    },
解析 Excel 文件有多种方法和技术,以下为你介绍常见的几种: ### Java 工具 - **Apache POI**:这是一个流行的 Java 库,用于处理 Microsoft Office 格式的文件,包括 Excel。POI 提供了两种解析模式,即用户模型(User Model)和事件模型(Event Model)。用户模型适合处理较小的 Excel 文件,它将整个文件加载到内存中,方便操作;事件模型则适合处理大文件,采用逐行读取的方式,减少内存占用。 ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.File; import java.io.FileInputStream; import java.io.IOException; public class POIExample { public static void main(String[] args) { try (FileInputStream file = new FileInputStream(new File("example.xlsx")); Workbook workbook = new XSSFWorkbook(file)) { Sheet sheet = workbook.getSheetAt(0); for (Row row : sheet) { for (Cell cell : row) { switch (cell.getCellType()) { case STRING: System.out.print(cell.getStringCellValue() + "\t"); break; case NUMERIC: System.out.print(cell.getNumericCellValue() + "\t"); break; // 其他类型处理 } } System.out.println(); } } catch (IOException e) { e.printStackTrace(); } } } ``` - **Alibaba EasyExcel**:采用逐行读取的解析模式,将每行的解析结果以观察者的模式通知处理,适合数据体量较大的 Excel 文件解析解析时,先初始化解析用到的参数,如文件路径、表头行、行数据 class 等,然后使用 POI 基于事件的机制进行解析,获取数据后将列索引和 cell 数据保存到 map,再调用每个监听器的 `invoke` 方法进行处理[^1][^2]。 ```java import com.alibaba.excel.EasyExcel; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import java.util.ArrayList; import java.util.List; public class EasyExcelExample { public static class ExcelListener extends AnalysisEventListener<List<String>> { @Override public void invoke(List<String> data, AnalysisContext context) { System.out.println(data); } @Override public void doAfterAllAnalysed(AnalysisContext context) { System.out.println("解析完成"); } } public static void main(String[] args) { String fileName = "example.xlsx"; EasyExcel.read(fileName, new ExcelListener()).sheet().doRead(); } } ``` - **EasyPOI**:是一个对 POI 进行封装的工具,简化了 Excel 文件的读写操作。 ```java import cn.afterturn.easypoi.excel.ExcelImportUtil; import cn.afterturn.easypoi.excel.entity.ImportParams; import model.T0079J; import java.io.File; import java.util.List; public class EasyPOIExample { public static void main(String[] args) { File file = new File("example.xlsx"); ImportParams params = new ImportParams(); List<T0079J> list = ExcelImportUtil.importExcel(file, T0079J.class, params); for (T0079J item : list) { System.out.println(item); } } } ``` ### Python 工具 - **openpyxl**:用于读写 Excel 2010 xlsx/xlsm/xltx/xltm 文件的 Python 库。 ```python import openpyxl wb = openpyxl.load_workbook('example.xlsx') sheet = wb.active for row in sheet.iter_rows(values_only=True): print(row) ``` - **pandas**:是一个强大的数据分析库,提供了简单的方法来读取 Excel 文件。 ```python import pandas as pd df = pd.read_excel('example.xlsx') print(df.to_csv(sep='\t', na_rep='nan')) ``` - **xlrd**:用于读取 Excel 文件的 Python 库,但只支持旧版的 .xls 文件。 ```python import xlrd workbook = xlrd.open_workbook('example.xls') sheet = workbook.sheet_by_index(0) for row in range(sheet.nrows): print(sheet.row_values(row)) ``` ### 其他工具 - **JXL**:可以进行 Excel 文件处理,但只支持 Excel 2003 以下的版本,所以不太常见[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值