首页 > 编程语言 >JAVA数据导出为Excel

JAVA数据导出为Excel

时间:2024-09-07 22:52:07浏览次数:12  
标签:JAVA String int 导出 void 单元格 Excel 获取 描述

目录

一、导入依赖

二、使用的相关类

1、XSSFWorkbook

构造方法

创建表

操作表

保存表

样式和格式

日期处理

密码保护

其他

2、XSSFSheet

获取属性和信息

行操作

列操作

表的属性

合并单元格

保护表

页眉和页脚

注释

其它

3、XSSFRow

获取属性和信息

单元格操作

设置行高和默认列宽

其它方法

4、XSSFCell

获取单元格的内容

设置单元格的内容

单元格样式

单元格类型和属性

单元格注释

其它方法

三、代码和结果

1、代码

2、结果

一、导入依赖

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

二、使用的相关类

1、XSSFWorkbook

构造方法

方法描述
XSSFWorkbook()创建一个新的空白表
XSSFWorkbook(InputStream is)从输入流加载现有的表
XSSFWorkbook(String path)从指定文件路径加载现有的表
XSSFWorkbook(OPCPackage pkg)使用 OPCPackage 对象创建表,这通常用于高级用途

创建表

方法描述
XSSFSheet createSheet(String sheetName)创建一个新的表,并指定表的名称
XSSFSheet getSheetAt(int index)通过索引获取表
XSSFSheet getSheet(String name)通过名称获取表

操作表

方法描述
int getNumberOfSheets()获取表的数量
void removeSheetAt(int index)删除指定索引处的表
XSSFSheet cloneSheet(int sheetIndex)克隆表

保存表

方法描述
void write(OutputStream out)将表内容写入输出流,通常用于将表保存到文件
void write(File file)

将表内容写入指定的文件

void close()关闭表,释放资源

样式和格式

方法描述
XSSFCellStyle createCellStyle()创建一个新的单元格样式
XSSFFont createFont()创建一个新的字体对象
short createDataFormat()创建一个新的数据格式

日期处理

方法描述
void setCreationHelper(CreationHelper createHelper)设置表的 CreationHelper,用于日期处理和其他数据类型的转换

密码保护

方法描述
void lockStructure()锁定表的结构,防止用户对表的结构进行更改
void unlockStructure()解锁表的结构,允许用户对表的结构进行更改

其他

方法描述
int getActiveSheetIndex()获取当前表的索引
void setActiveSheet(int sheetIndex)设置当前表的索引
XSSFFormulaEvaluator getCreationHelper().createFormulaEvaluator()用于计算公式的创建和计算器

2、XSSFSheet

获取属性和信息

方法描述
int getPhysicalNumberOfRows() 获取表中的物理行数,即非空行的数量
int getFirstRowNum()获取第一个行的索引,通常为0
int getLastRowNum()获取最后一个行的索引
String getSheetName()获取表的名称

行操作

方法描述
XSSFRow createRow(int rowIndex)创建一个新的行,指定行的索引
XSSFRow getRow(int rowIndex)获取表中指定行索引的行对象
void removeRow(XSSFRow row)从表中删除指定的行
void shiftRows(int startRow, int endRow, int n)向下或向上移动表中的行

列操作

方法描述
int getColumnWidth(int columnIndex)获取指定列的宽度
void setColumnWidth(int columnIndex, int width)设置指定列的宽度

表的属性

方法描述
boolean getDisplayFormulas()获取是否显示公式
void setDisplayFormulas(boolean show)设置是否显示公式

合并单元格

方法描述
void addMergedRegion(CellRangeAddress region)合并单元格区域
void addMergedRegionUnsafe(CellRangeAddress region)合并单元格区域(不检查冲突)
void removeMergedRegion(int index)移除合并单元格区域

保护表

方法描述
void protectSheet(String password)保护表并设置密码
void unprotectSheet(String password)取消保护表(需要提供正确的密码)

页眉和页脚

方法描述
Header getHeader()获取表的页眉
Footer getFooter()获取表的页脚

注释

方法描述
XSSFRichTextString getSheetComment()获取表的注释
void setSheetComment(XSSFRichTextString comment)设置表的注释

其它

方法

描述
XSSFDrawing createDrawingPatriarch()创建绘图对象,用于插入图表和图形
XSSFDataValidationHelper getDataValidationHelper()获取数据有效性帮助器,用于创建数据有效性约束
void setPrintArea(int startColumn, int endColumn, int startRow, int endRow)设置要打印的区域
boolean isSelected()检查表是否被选中
void setSelected(boolean select)设置表是否被选中

3、XSSFRow

获取属性和信息

方法描述
int getRowNum()获取行的索引,从0开始
int getPhysicalNumberOfCells()获取该行的物理单元格数量,即非空单元格的数量

单元格操作

方法描述
XSSFCell createCell(int columnIndex)创建一个新的单元格,指定单元格在行中的列索引
XSSFCell getCell(int columnIndex)获取行中指定列索引的单元格
void removeCell(XSSFCell cell)从行中删除指定的单元格
int getFirstCellNum()获取第一个单元格的列索引
int getLastCellNum()获取最后一个单元格的列索引,包括空单元格

设置行高和默认列宽

方法描述
void setHeight(short height)设置行的高度(以20分之1个点为单位)
void setZeroHeight(boolean zHeight)设置行是否为零高度(隐藏行)

其它方法

方法描述
void shiftCellsRight(int firstCellNum, int lastCellNum, int step)将行中指定范围内的单元格向右移动
void shiftCellsLeft(int firstCellNum, int lastCellNum, int step)将行中指定范围内的单元格向左移动
void shiftCellsRight(int firstCellNum, int lastCellNum)将行中指定范围内的单元格向右移动一个位置
void shiftCellsLeft(int firstCellNum, int lastCellNum)将行中指定范围内的单元格向左移动一个位置

4、XSSFCell

获取单元格的内容

方法描述
String getStringCellValue()获取单元格中的文本值,无论单元格中的内容是文本、数字、日期或其他数据类型,都会以字符串形式返回
double getNumericCellValue()获取单元格中的数值(仅适用于数值类型的单元格)
boolean getBooleanCellValue()获取单元格中的布尔值(仅适用于布尔类型的单元格)
String getCellFormula()获取单元格中的公式

设置单元格的内容

方法描述
void setCellValue(double value)设置单元格的值为数值
void setCellValue(String value)设置单元格的值为文本
void setCellValue(boolean value)设置单元格的值为布尔值
void setCellFormula(String formula)设置单元格的公式

单元格样式

方法描述
XSSFCellStyle getCellStyle()获取单元格的样式对象,以便修改单元格的样式
void setCellStyle(XSSFCellStyle style)设置单元格的样式

单元格类型和属性

方法描述
int getCellType()获取单元格的类型,返回常量值(CellType)
boolean getBooleanCellValue()获取布尔类型的单元格值
int getColumnIndex()获取单元格所在的列索引

单元格注释

方法描述
XSSFRichTextString getRichStringCellValue()获取富文本字符串对象(支持格式化文本)
XSSFRichTextString setCellValue(RichTextString value)设置单元格的富文本字符串值

其它方法

方法描述
void setCellType(int cellType)设置单元格的类型,可以是 CellType 常量之一
void setCellStyle(CellStyle style)设置单元格的日期格式
void setCellType(CellType cellType)设置单元格的类型,可以是 CellType 常量之一
void setCellErrorValue(byte errorCode)设置单元格的错误值
boolean isPartOfArrayFormulaGroup()检查单元格是否属于数组公式组
void removeCellComment()移除单元格的注释

三、代码和结果

1、代码

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.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Export {
    public static void main(String[] args){
        //表名:
        String sheetName = "test";
        //表头:
        String[] arr02 = {"姓名","年龄","成绩"};
        List<String> heaList = Arrays.asList(arr02);
        //写入文件路径:
        String filePath = "E:\\test\\"+sheetName+".xls";
        //数据
        List<String> data=new ArrayList<>();
        data.add("1");
        data.add("1");
        data.add("1");
        List<List<String>> contentList=new ArrayList<>();
        contentList.add(data);
        contentList.add(data);
        contentList.add(data);
        exportToExcel(sheetName,heaList,contentList,filePath);
    }
    /*
     * sheetName:表名
     * heaaList:表头
     * contentList:表内容
     * filePath:写入文件地址
     * */
    public static void exportToExcel(String sheetName, List<String> heaList, List<List<String>> contentList, String filePath){
        //创建sheet页
        XSSFWorkbook workbook = new XSSFWorkbook();
        XSSFSheet sheet = workbook.createSheet(sheetName);
        //创建表头(第一行)
        XSSFRow row = sheet.createRow(0);
        for (int i = 0; i < heaList.size() ; i++) {
            XSSFCell cell = row.createCell(i);
            cell.setCellValue(heaList.get(i));
        }
        //创建表内容
        //List<List<String>>,一条内容存储多个列表对象
        for (int i = 0; i <contentList.size() ; i++) {
            row = sheet.createRow(i+1);
            for (int j = 0; j < contentList.get(i).size(); j++) {
                row.createCell(j).setCellValue(contentList.get(i).get(j));
            }

        }
        //写入文件
        File file = new File(filePath);
        try {
            //将文件保存到指定位置
            workbook.write(new FileOutputStream(file));
            System.out.println("写入文件成功");
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

}

2、结果

标签:JAVA,String,int,导出,void,单元格,Excel,获取,描述
From: https://blog.csdn.net/m0_75227909/article/details/141934159

相关文章

  • Java 入门指南:Java 并发编程 —— 并发容器 ConcurrentLinkedDeque
    文章目录ConcurrentLinkedDeque特点构造方法常用方法使用示例注意事项ConcurrentLinkedDequeConcurrentLinkedDeque是Java并发工具包(java.util.concurrent包)中的一个线程安全的双端队列(Deque)实现,实现了Deque接口。它使用了链表结构,并且针对高并发环境进行了......
  • 【Effective Java】多构造器参数使用构建器 (快速上手)
    Java系列文章目录补充内容Windows通过SSH连接Linux第一章Linux基本命令的学习与Linux历史文章目录Java系列文章目录一、前言二、学习内容:2.1为什么引入构建器2.2建造者模式2.2.1书中的例子2.2.2例子加上有效性检查三、问题描述四、解决方案:4.1类层次结构4.2......
  • 【Java】已解决:java.util.concurrent.CancellationException
    文章目录一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项已解决:java.util.concurrent.CancellationException一、分析问题背景java.util.concurrent.CancellationException是一种常见的运行时异常,当尝试访问已取消的任务时......
  • 【Java】已解决:org.aopalliance.aop.AspectException
    文章目录一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项已解决:org.aopalliance.aop.AspectException一、分析问题背景在使用SpringAOP(面向切面编程)时,开发者有时会遇到org.aopalliance.aop.AspectException报错。这通常发生......
  • Javaweb-约束案例
    createtableemp( idintPRIMARYKEYAUTO_INCREMENT, enamevarchar(50)notnullunique, joindatedatenotnull, salarydouble(7,2)notnull, bonusdouble(7,2)default0);insertintoemp(id,ename,joindate,salary,bonus)values(1,'张三',�......
  • Zabbix02 Zabbix告警通知, 故障自愈, 主动被动模式, JAVA应用网络设备等的监控及分布
    图形Graphs#点击web端配置下的模板,选择模板对应的图形,点击右上角创建图标#输入名称TCP状态#监控项选择添加,最后点添加#点击监测下关联该模板的主机,点击图形,就能看到添加的图形#仪表盘为图形的组合#配置下模板里,点击仪表盘栏,点击创建仪表盘,构件可把之前画的图添加出......
  • Java 21的Preferences API的笔记
    JavaCoreLibrariesPreferencesAPI多用户环境下,应用程序保存配置参数的一种API,目前支持用户和系统两类配置。在现有的项目中,目前没有使用过本API。ComparingthePreferencesAPItoOtherMechanisms通常,应用的开发者还可以使用PropertiesAPI或者JNDIAPI。UsageNotes......
  • java 一个对象list 通过获取最大版本的 name值,版本为字符串格式 1 1.1 2 2.1 3
    你可以使用Java的流(Streams)功能来获取具有最大版本的name值。假设你的对象类名为Item,并且包含name和version字段,可以按照以下方式操作:importjava.util.*;importjava.util.stream.*;classItem{Stringname;Stringversion;//Constructor,getters,......
  • Java中Runtime类的学习
    Runtime类目录Runtime类什么是RuntimeRuntime类有哪些方法,有什么用什么是RuntimeRuntime(运行时),每个Java程序在运行时都相当于启动了一个JVM实例,每个JVM实例都对应一个Runtime对象。Runtime对象是由JVM负责实例化的,因此我们无法通过传统的方式实例化一个Runtime对象,只能通过调......
  • 彻底理解JavaScript中的闭包
    闭包是js的一个难点也是它的一个特色,是我们必须掌握的js高级特性,那么什么是闭包呢?它又有什么用呢?我们都知道,js的作用域分两种,全局和局部,基于我们所熟悉的作用域链相关知识,我们知道在js作用域环境中访问变量的权利是由内向外的,内部作用域可以获得当前作用域下的变量并且可以获......