POI 操作Excel导入篇1 -- 基本架构

本文详细介绍了使用SpringBoot和HTML实现Excel文件上传及处理的方法,包括前端文件选择、Ajax数据发送、后端依赖配置及文件sheet获取等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本篇收录针对于POI导入Excel的操作sheet的一些常用步骤。

从网页导入文件到后台处理获得sheet

基本架构搭建(SpringBoot+HTML+MySQL)

  • 上传组件
 <div> 
   <div> 
    <label for="excel">文件:</label>   
    <input type="text" name="userdefinedFile" id="userdefinedFile" placeholder="未选择任何文件" />   
    <button type="button">选择文件</button> 
   </div> 
   <input type="file" name="excel" id="excel" /> 
  </div>
  • ajax发送表单数据
var formdata = new FormData($("#uploadForm")[0]);
if (fileType !== 0) {
    $.ajax({
        type: 'post',
        url: ajaxUrl,
        data: formdata,
        processData: false,
        contentType: false,
        dataType: 'json',
        success: function(res) {

},
        error: function(XHR) {

}
    });
}
  • 后台maven依赖
        //省略部分SpringBoot依赖
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.9</version>
        </dependency>
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.1</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>
  • 获取表单数据
@PostMapping("/upload")
@ResponseBody
public String upload(@RequestParam(value = "excel",required = false) MultipartFile excel) throws Exception {
        String fileName = excel.getOriginalFilename();
        return excelService.insert(fileName, excel);
}
  • 获取文件sheet
public static Sheet checkExcelVersion(String fileName, MultipartFile file) throws Exception {
        //版本验证
        if (!fileName.matches("^.+\\.(?i)(xls)$") && !fileName.matches("^.+\\.(?i)(xlsx)$")) {
            throw new RuntimeException("上传文件格式不正确");
        }
        boolean isExcel2003 = true;
        if (fileName.matches("^.+\\.(?i)(xlsx)$")) {
            isExcel2003 = false;
        }
        InputStream is = file.getInputStream();
        Workbook wb = null;
        is = file.getInputStream();
        if (isExcel2003) {
            wb = new HSSFWorkbook(is);
        } else {
            wb = new XSSFWorkbook(is);
        }
        //返回第一个sheet
        Sheet sheet = wb.getSheetAt(0);
        if (sheet != null) {
            notNull = true;
        }
        return sheet;
    }
  • 拓展(常用)
Workbook
Excel表格sheet的顶层对象
getActiveSheetIndex()获取当前工作表中活动的工作表
getSheetAt(int index)获取给定索引处的工作表对象。
getSheetIndex(Sheet sheet)返回给定工作表的索引
getSheetName(int sheet)获取工作表名称
Sheet
Workbook下的sheet工作表,包含单元格
getFirstRowNum()获取工作表的第一行
getLastRowNum()获取工作表有内容的最后一行
getPhysicalNumberOfRows()返回已定义工作行的行数
getRow(int rownum)返回索引起的逻辑行
isColumnHidden(int columnIndex)判断索引处列是否为隐藏列

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值