java 读取excel/word存入mysql

引入依赖

XML 复制代码
<!--poi-->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>4.0.1</version>
        </dependency>

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>4.0.1</version>
        </dependency>

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml-schemas</artifactId>
            <version>4.0.1</version>
        </dependency>
        <!--poi-->

excel 分为两个版本,一个是xlsx一个是xls

xlsx为高版本,xls为低版本

xlsx高版本

java 复制代码
 @Override
    public void uploadExcel(MultipartFile file) throws IOException {

//    Workbook workbook = new XSSFWorkbook(new FileInputStream("D:\\xxx\\xxx.xlsx"));

        Workbook workbook = new XSSFWorkbook(file.getInputStream());
        //获取excel中的指定表单,两种方法都可以
        // Sheet sheet =  workbook.getSheetAt(4);
        Sheet sheet = workbook.getSheet("工程项目投标报价汇总表");
        int lastRowNum = sheet.getLastRowNum();//当前sheet的最后一行的索引值

        //读取工作表的内容
        Row row = null;

        for (int i = 3; i <= lastRowNum; i++) {
            row = sheet.getRow(i);
            Bidding bidding = new Bidding();

            String tableId = row.getCell(0).getStringCellValue(); //序号
            bidding.setTableId(tableId);
            String projectName = row.getCell(1).getStringCellValue(); //项目或费用名称
            bidding.setProjectName(projectName);
            String amountM = row.getCell(2).getStringCellValue(); //金额
            bidding.setAmountM(amountM);
            String comment = row.getCell(3).getStringCellValue();  //备注
            bidding.setComment(comment);

            elemapper.uploadExcel(bidding);
        }
    }

xls低版本

java 复制代码
//唯一不同为要使用HSSF创建
 Workbook workbook1 = new HSSFWorkbook(new FileInputStream(fullAddress));

word使用

java 复制代码
@Override
    public void uploadWord(MultipartFile file) throws IOException {
        //读取文本
        XWPFDocument document = new XWPFDocument(file.getInputStream());

        List<XWPFTable> tables = document.getTables();

        List<XWPFTableRow> rows = null;
        List<XWPFTableCell> cells;
        List list = new ArrayList();
        //起始打印cell;
        int w = 17;
        //14一循环
        int l = 14;
        Construction construction = new Construction();
        for (XWPFTable table : tables) {
            rows = table.getRows();
            for (XWPFTableRow row : rows) {
                cells = row.getTableCells();
                for (XWPFTableCell cell : cells) {
                    list.add(cell.getText());
                }
            }
        }
        String packageNum = null;
        for (int i = w; i < list.size(); i += 14) {


            //下标写死就是一直取第一个值
            String submarkNum = (String) list.get(16);
            construction.setSubmarkNum(submarkNum);

            //写逻辑判断,把空值填上上一个


            if (!((String) list.get(i)).isEmpty()) {
                packageNum = (String) list.get(i);
                construction.setPackageNum(packageNum);

                while (((String) list.get(i)).isEmpty()) {

                    packageNum = (String) list.get(i - l);
                    construction.setPackageNum(packageNum);
                }

            }


            String projectCom = (String) list.get(i + 1);
            construction.setProjectCom(projectCom);


            String projectName = (String) list.get(i + 2);
            construction.setProjectName(projectName);


            String projectAbs = (String) list.get(i + 3);
            construction.setProjectAbs(projectAbs);


            String eleLevel = (String) list.get(i + 4);
            construction.setEleLevel(eleLevel);


            String projectPlan = (String) list.get(i + 5);
            construction.setProjectPlan(projectPlan);


            String projectNature = (String) list.get(i + 6);
            construction.setProjectNature(projectNature);


            String projectScale = (String) list.get(i + 7);
            construction.setProjectScale(projectScale);


            String methods = (String) list.get(i + 8);
            construction.setMethods(methods);


            String limitPrice = (String) list.get(i + 9);
            construction.setLimitPrice(limitPrice);


            String technologyId = (String) list.get(i + 10);
            construction.setTechnologyId(technologyId);


            String biddingFee = (String) list.get(i + 11);
            construction.setBiddingFee(biddingFee);


            String requestId = (String) list.get(i + 12);
            construction.setRequestId(requestId);


            elemapper.uploadWord(construction);
        }
    }

参考项目名elezip111

相关推荐
fanchenxinok12 小时前
LIN矩阵Excel ⇄ LDF互转工具:打通设计数据与协议描述的关键桥梁
矩阵·excel·lin·ldf·excel和ldf互转
拆房老料13 小时前
多人协同编辑Excel时,筛选相互干扰怎么办?Onlyoffice中国版给出了与WPS一样的答案
编辑器·excel·开源软件·wps
Data-Miner13 小时前
Excel-Agent:你的专属 AI 数据分析助手
人工智能·数据分析·excel
xcLeigh13 小时前
告别 Excel 繁琐操作!Metabase让数据可视化触手可及
mysql·docker·信息可视化·excel·数据可视化·metabase·cpolar
葡萄城技术团队14 小时前
Excel 2025 年度回顾:文化、匠心与 Copilot 开启的计算新纪元
excel·copilot
tlwlmy15 小时前
python excel图片批量拼接导出
前端·python·excel
开开心心就好2 天前
绿色版PDF多功能工具,支持编辑转换
人工智能·windows·pdf·ocr·excel·语音识别·harmonyos
优选资源分享3 天前
资条生成器 V1.3 - 财务 HR 专属 Excel 工具
excel·实用工具
m0_502724953 天前
vue3在线预览excel表格
javascript·vue.js·excel
Java小王子呀3 天前
JAVA 导出Excel中添加下拉框用POI
java·excel