首页 > 其他分享 >POI向Excel中写入数据及追加数据

POI向Excel中写入数据及追加数据

时间:2023-09-08 11:58:29浏览次数:42  
标签:poi filePath Excel POI 写入 new apache import usermodel

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

public class WriteExcel {

    /**
     * 向Excel中写入数据
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {

        List<Student> stuList = new ArrayList<Student>();
        stuList.add(new Student(12,"lili","深圳南山"));
        stuList.add(new Student(13,"liming","深圳宝安"));
        stuList.add(new Student(14,"chengming","深圳罗湖"));

        String filePath = "E:\\ExcelData.xlsx";
        boolean flag = fileExist(filePath);
        if (flag){
            writeExcel(stuList,filePath);
        }else {
            File file = new File(filePath);
            writeExcel(stuList,filePath);
        }
    }

    //判断文件是否存在
    public static boolean fileExist(String filePath){
        boolean flag = false;
        File file = new File(filePath);
        flag = file.exists();
        return flag;
    }

    //向Excel中写数据
    public static void writeExcel(List<Student> list ,String filePath){
        XSSFWorkbook workbook = new XSSFWorkbook();
        XSSFSheet sheet = workbook.createSheet("student");
        XSSFRow firstRow = sheet.createRow(0);//第一行表头
        XSSFCell cells[] = new XSSFCell[3];

        String[] titles = new String[]{"age","name","address"};
        //循环设置表头信息
        for (int i=0;i<3;i++){
            cells[0]=firstRow.createCell(i);
            cells[0].setCellValue(titles[i]);
        }

        //遍历list,将数据写入Excel中
        for (int i=0;i<list.size();i++){
            XSSFRow row = sheet.createRow(i+1);
            Student student = list.get(i);
            XSSFCell cell = row.createCell(0); //第一列
            cell.setCellValue(student.getAge());
            cell=row.createCell(1); //第二列
            cell.setCellValue(student.getName());
            cell=row.createCell(2); //第三列
            cell.setCellValue(student.getAddress());
        }
        OutputStream out = null;
        try {
            out = new FileOutputStream(filePath);
            workbook.write(out);
            out.close();
        } catch (Exception e){
            e.printStackTrace();
        }
    }
}

效果:

 二、向Excel中追加数据

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;

public class AddExcel {

    /**
     * 向Excel中追加内容
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception{

        List<Student> stuList2 = new ArrayList<Student>();
        stuList2.add(new Student(15,"小明","深圳南山"));
        stuList2.add(new Student(16,"小王","深圳宝安"));
        stuList2.add(new Student(17,"小张","深圳罗湖"));

        FileInputStream in = new FileInputStream("E:\\ExcelData.xlsx");
        XSSFWorkbook workbook = new XSSFWorkbook(in);
        XSSFSheet sheet = workbook.getSheetAt(0);
        XSSFRow row=sheet.getRow(1);

        FileOutputStream out = new FileOutputStream("E:\\ExcelData.xlsx");
        //从第二行开始追加列
        /*row=sheet.getRow(1);
        row.createCell(3).setCellValue("AAA");
        row.createCell(4).setCellValue("BBB");*/

        //追加列数据
        for(int i=0;i<stuList2.size();i++){
            Student student = stuList2.get(i);
            row = sheet.getRow(i+1);
            row.createCell(3).setCellValue(student.getAge());
            row.createCell(4).setCellValue(student.getName());
            row.createCell(5).setCellValue(student.getAddress());
        }

        /*//追加行数据
        row=sheet.createRow((short)(sheet.getLastRowNum()+1)); //在现有行号后追加数据
        row.createCell(0).setCellValue("测试数据"); //设置第一个(从0开始)单元格的数据
        row.createCell(1).setCellValue("haha"); //设置第二个(从0开始)单元格的数据*/

        try {
            out.flush();
            workbook.write(out);
            out.close();
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

 效果:

 

原文:https://www.cnblogs.com/wakey/p/11335248.html

标签:poi,filePath,Excel,POI,写入,new,apache,import,usermodel
From: https://www.cnblogs.com/peachh/p/17687200.html

相关文章

  • Excel 当单元格内容为空时自动隐藏本行
    宏代码如下:PrivateSubWorksheet_Change(ByValTargetAsRange)IfTarget.Column=3ThenIfTarget.Value=""ThenTarget.EntireRow.Hidden=TrueEndIfEndIfEndSub首先鼠标右击该工作表名称标签,点击“查看代码”命令,随即自动进入到VBA代码编辑窗口,然后我们将上面的一段......
  • php-PhpSpreadsheet设置生成的excel文件列宽度及字体大小
    usePhpOffice\PhpSpreadsheet\Spreadsheet;usePhpOffice\PhpSpreadsheet\Writer\Xlsx;//创建新的Excel实例$spreadsheet=newSpreadsheet();//获取当前工作表$worksheet=$spreadsheet->getActiveSheet();//设置列宽自动调整的范围$worksheet->getStyle('B1:C1'......
  • Python 读取excel表1单元格 生成 表2 的超链接
    fromopenpyxlimportload_workbook#加载现有的工作簿fromopenpyxl.utilsimportget_column_letterwb=load_workbook("C:\\Users\\CMS01\\Desktop\\SCHH621TEG_LDO(PLDO、NLDO、CPLDO)测试需求_20230814.xlsx")#获取Sheet1和Sheet6sheet1=wb['Sheet7�......
  • C#List导出Excel
    1.导入NPOI2.引用如下内容usingNPOI.XSSF.UserModel;usingNPOI.SS.UserModel;usingNPOI.HSSF.UserModel;usingSystem.IO;3.List数据1).如果是Json类型数据从前台传递到后台,用如下方式获取前台数据;注:数据类是自定义的类;Key是前台传到后台的键名List<数据类>list=  ......
  • Java Excel导入信息加入数据库
    0.导入依赖<!--EasyExcel依赖开始--><dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>3.2.1</version></dependency><!--EasyExcel依赖结束-->1.在controlle......
  • 用Excel和批处理实现批量重命名文件
    需求:现有100个文件,每个文件需要复制成3份,并且在文件名后加上-张三、-李四、-王五。1.全选所有文件,复制,粘贴,粘贴,形成300个文件。2.使用命令输出所有文件名到文本文件中。dir/b>name.txt3.将结果复制到Excel的某一列中。4.在某一列中,输入-张三、-李四、-王五(通过在字符串前......
  • ChatGPT玩法(二):AI玩转Excel表格处理
    前言在线体验智能问答:https://www.topgpt.one你是否还在为记不住Excel的繁琐函数和公式而苦恼?如果是这样,那么不妨试试ChatExcel。即使你对函数一窍不通,也能轻松处理表格。只要你能清楚地描述你的需求,它就可以帮你搞定。此外,ChatExcel的作者还制作了一张工作流程对比图,一眼就能明白......
  • [EasyExcel] 导出合并单元格
    前言使用springboot对excel进行操作在平时项目中要经常使用。常见通过jxl和poi的方式进行操作。但他们都存在一个严重的问题就是非常的耗内存。这里介绍一种EasyExcel工具来对excel进行操作。一、EasyExcel是什么?EasyExcel是阿里巴巴开源的一个excel处理框架,以使用......
  • Excel表格中进行36进制流水编号
    最简单的操作步骤:1、A1:A10是数字0~9这10数值,A11~A36是大写字母A、B、C…………Y、Z这26个字母2、则可在B1单元格或其他单元格中,输入公式:=INDEX($A$1:$A$36,1+MOD(INT((ROW()-1)/46656),36))&INDEX($A$1:$A$36,1+MOD(INT((ROW()-1)/1296),36))&INDEX($A$1:$A$36,1+MOD(INT((35+......
  • DELPHI TSCTreeView的基本应用与FireDAC读取EXCEL文件数据设置
    本例需要读取excel中的数据,然后动态的添加到TSCTreeView控件当中.最终效果如下图: 核心代码如下:procedureTForm1.FormCreate(Sender:TObject);varn:Integer;t:TTreeNode;I:Integer;beginn:=FDQuery1.RecordCount;ifn>0thenbeginscTr......