我是靠谱客的博主 火星上方盒,最近开发中收集的这篇文章主要介绍POI在指定excel插入行java,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

我想在第三行插入数据库的数据,这里假如数据库有10条,并且继承第二行的格式

 数据库数据

{"clark",25},我写个json对象,10条这个

造数据代码

        JSONArray jsonArray = new JSONArray();
        for (int i = 0; i < 10; i++) {
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("name","clark");
            jsonObject.put("age",i+10);
            jsonArray.add(jsonObject);
        }

poi依赖

读xls,xlsx,io流,fastJson

<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.2.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.2</version>
</dependency>

       <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>1.4</version>
        </dependency>

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.83</version>
</dependency>

模板文件(测试.xlsx)

代码逻辑,读模板,插行,同时继承第二行样式,填数据

整体,可直接复制

public static void main(String[] args) {
    JSONArray jsonArray = new JSONArray();
    for (int i = 0; i < 10; i++) {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("name","clark");
        jsonObject.put("age",i+10);
        jsonArray.add(jsonObject);
    }
    //读取模板
    try {
        FileInputStream inputStream =new FileInputStream("C:\Users\shiao\Desktop\测试.xlsx");
        XSSFWorkbook workbook = new XSSFWorkbook(inputStream);
        XSSFSheet sheet = workbook.getSheetAt(0);//获取表中的第一个sheet
        XSSFRow row = sheet.getRow(1);
        XSSFCell cell = row.getCell(0);

        //姓名的样式

        XSSFCellStyle nameStyle = cell.getCellStyle();
        System.out.println(cell.getStringCellValue());//字符串用string

        //年龄的样式
        cell= row.getCell(1);
        XSSFCellStyle ageStyle = cell.getCellStyle();
        System.out.println(cell.getRawValue());//数字用rawValue

        //获取后进行遍历数据库
        for (int i = 0; i < jsonArray.size(); i++) {
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            //新增行
            XSSFRow rowNew = sheet.createRow(3+i);//参数代表从第几行新增

            //给新增行增加样式
            XSSFCell cellName = rowNew.createCell(0);//第1列,代表name的位置


            XSSFCell cellAge = rowNew.createCell(1);//第2列,代表age的位置


            cellName.setCellStyle(nameStyle);
            cellAge.setCellStyle(ageStyle);

            cellName.setCellValue(jsonObject.getString("name"));
            cellAge.setCellValue(jsonObject.getInteger("age"));

        }
        workbook.write(new FileOutputStream("C:\Users\shiao\Desktop\测试结果.xlsx"));


    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

结果

但是很明显看到,之前的第五行被覆盖了,如果不让他覆盖怎么办,那就让插入位置的,到最后的其他整体下移动一行

//先全部下移动1行,这样才能保证不覆盖
// (参数1是开始,参数2是结束,参数3是正数代表,开始-结束范围内的单元格下移动1行)
sheet.shiftRows(3+i,sheet.getLastRowNum(),1);

 

结果

 

最后

以上就是火星上方盒为你收集整理的POI在指定excel插入行java的全部内容,希望文章能够帮你解决POI在指定excel插入行java所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部