百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

java导出excel之使用poi(java 导出excel)

toyiye 2024-09-02 02:18 5 浏览 0 评论

很多时候,一个软件应用程序需要生成Microsoft Excel文件格式的报告。有时,一个应用程序甚至希望将Excel文件作为输入数据。现在常用的解析excel的API主要有jxl和poi,本文主要研究关于poi的相关知识。

POI简介

Apache POI是一种流行的API,它允许程序员使用Java程序创建,修改和显示MS Office文件。这由Apache软件基金会开发使用Java分布式设计或修改Microsoft Office文件的开源库。它包含类和方法对用户输入数据或文件到MS Office文档进行解码。

Apache POI组件

Apache POI包含类和方法,来将MS Office所有OLE 2文档复合。此API组件的列表如下。

POIFS (较差混淆技术实现文件系统) : 此组件是所有其他POI元件的基本因素。它被用来明确地读取不同的文件。

HSSF (电子表格格式) : 它被用来读取和写入MS-Excel文件的xls格式。

XSSF (XML格式) : 它是用于MS-Excel中XLSX文件格式。

HPSF (属性设置格式) : 它用来提取MS-Office文件属性设置。

HWPF (字处理器格式) : 它是用来读取和写入MS-Word的文档扩展名的文件。

XWPF (XML字处理器格式) : 它是用来读取和写入MS-Word的docx扩展名的文件。

HSLF (幻灯片版式格式) : 它是用于读取,创建和编辑PowerPoint演示文稿。

HDGF (图表格式) : 它包含类和方法为MS-Visio的二进制文件。

HPBF (出版商格式) : 它被用来读取和写入MS-Publisher文件。

HSSF概况

HSSF 是Horrible SpreadSheet Format的缩写,通过HSSF,你可以用纯Java代码来读取、写入、修改Excel文件。HSSF 为读取操作提供了两类API:usermodel和eventusermodel,即“用户模型”和“事件-用户模型”。

POI EXCEL文档结构类

HSSFWorkbook excel文档对象

HSSFSheet excel的sheet HSSFRow excel的行

HSSFCell excel的单元格 HSSFFont excel字体

HSSFName 名称 HSSFDataFormat 日期格式

HSSFHeader sheet头

HSSFFooter sheet尾

HSSFCellStyle cell样式

HSSFDateUtil 日期

HSSFPrintSetup 打印

HSSFErrorConstants 错误信息表

知识体系

EXCEL常用操作方法

1、 得到Excel常用对象

POIFSFileSystem fs=newPOIFSFileSystem(new FileInputStream("d:/test.xls"));

//得到Excel工作簿对象

HSSFWorkbook wb = new HSSFWorkbook(fs);

//得到Excel工作表对象

HSSFSheet sheet = wb.getSheetAt(0);

//得到Excel工作表的行

HSSFRow row = sheet.getRow(i);

//得到Excel工作表指定行的单元格

HSSFCell cell = row.getCell((short) j);

cellStyle = cell.getCellStyle();//得到单元格样式

2、建立Excel常用对象

HSSFWorkbook wb = new HSSFWorkbook();//创建Excel工作簿对象

HSSFSheet sheet = wb.createSheet("new sheet");//创建Excel工作表对象

HSSFRow row = sheet.createRow((short)0); //创建Excel工作表的行

cellStyle = wb.createCellStyle();//创建单元格样式

row.createCell((short)0).setCellStyle(cellStyle); //创建Excel工作表指定行的单元格

row.createCell((short)0).setCellValue(1); //设置Excel工作表的值

3、设置列宽、行高

sheet.setColumnWidth((short)column,(short)width);

row.setHeight((short)height);

4、保存Excel文件

FileOutputStream fileOut = new FileOutputStream(path);

wb.write(fileOut);

5、常用单元格边框格式

HSSFCellStyle style = wb.createCellStyle();

style.setBorderBottom(HSSFCellStyle.BORDER_DOTTED);//下边框

style.setBorderLeft(HSSFCellStyle.BORDER_DOTTED);//左边框

style.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框

style.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框

6.设置不显示excel网格线

sheet.setDisplayGridlines(false);其中sheet是Sheet对象

7.设置excel单元格中的内容换行

cellStyle.setWrapText(true);其中cellStyle是WorkBook创建的CellStyle对象,然后将cellStyle设置到要换行的Cell对象,最后在要换行的对象(一般为字符串)加入"/r/n"。如

topTile.append("/r/n" +"cellContent");

8.单元格的合并

sheet.addMergedRegion(new CellRangeAddress(0, 4, 0, 2));本示例为合并4行2列

示例代码

package com.company.test;

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFCell;

import org.apache.poi.hssf.usermodel.HSSFCellStyle;

import org.apache.poi.hssf.usermodel.HSSFFont;

import org.apache.poi.hssf.usermodel.HSSFRow;

import org.apache.poi.hssf.usermodel.HSSFSheet;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import org.apache.poi.hssf.util.HSSFColor;

import org.apache.poi.ss.util.CellRangeAddress;

public class MergedCells

{

public static void main(String[] args)

throws IOException

{

//创建工作簿

HSSFWorkbook wb = new HSSFWorkbook();

//创建工作表

HSSFSheet sheet = wb.createSheet("new sheet");

for(int i=0;i<3;i++){

//设置列宽

sheet.setColumnWidth(i, 3000);

}

//创建行

HSSFRow row = sheet.createRow(0);

row.setHeightInPoints(30);//设置行高

//创建单元格

HSSFCell cell = row.createCell(0);

cell.setCellValue("用户信息表");

//标题样式

// 创建单元格样式

HSSFCellStyle cellStyle = wb.createCellStyle();

// 设置单元格的背景颜色为淡蓝色

cellStyle.setFillForegroundColor(HSSFColor.PALE_BLUE.index);

cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

// 设置单元格居中对齐

cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);

// 设置单元格垂直居中对齐

cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

// 创建单元格内容显示不下时自动换行

cellStyle.setWrapText(true);

// 设置单元格字体样式

HSSFFont font = wb.createFont();

// 设置字体加粗

font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);

font.setFontName("宋体");

font.setFontHeight((short) 200);

cellStyle.setFont(font);

// 设置单元格边框为细线条

cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);

cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);

cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);

cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);

//设置单元格样式

cell.setCellStyle(cellStyle);

//合并单元格

sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 2));

HSSFRow row1 = sheet.createRow(1);

//标题信息

String[] titles = {"ID","用户名","密码"};

for(int i=0;i<3;i++){

HSSFCell cell1 = row1.createCell(i);

cell1.setCellValue(titles[i]);

//设置单元格样式

cell1.setCellStyle(cellStyle);

}

//模拟数据,实际情况下String[]多为实体bean

List<String[]> list = new ArrayList<String[]>();

list.add(new String[]{"1","zhangsan","111"});

list.add(new String[]{"2","lisi","222"});

list.add(new String[]{"3","wangwu","333"});

///内容样式

// 创建单元格样式

HSSFCellStyle cellStyle2 = wb.createCellStyle();

// 设置单元格居中对齐

cellStyle2.setAlignment(HSSFCellStyle.ALIGN_CENTER);

// 设置单元格垂直居中对齐

cellStyle2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

// 创建单元格内容显示不下时自动换行

cellStyle2.setWrapText(true);

// 设置单元格字体样式

HSSFFont font2 = wb.createFont();

// 设置字体加粗

font2.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);

font2.setFontName("宋体");

font2.setFontHeight((short) 200);

cellStyle2.setFont(font2);

// 设置单元格边框为细线条

cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);

cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);

cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);

cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);

//循环赋值

for(int i=0;i<list.size();i++){

HSSFRow row2 = sheet.createRow(i+2);

for(int j=0;j<3;j++){

HSSFCell cell1 = row2.createCell(j);

cell1.setCellValue(list.get(i)[j]);

//设置单元格样式

cell1.setCellStyle(cellStyle2);

}

}

File file = new File("D://a.xls");

if(!file.exists()){

file.createNewFile();

}

FileOutputStream fileOut = new FileOutputStream(file);

wb.write(fileOut);

fileOut.close();

}

}

运行结果

本文简单介绍了poi的相关知识,并主要研究了使用poi导出excel的相关知识,关于使用poi读取excel以及使用poi操作其他office文件,比如doc的相关知识,留待以后研究。

相关推荐

# Python 3 # Python 3字典Dictionary(1)

Python3字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中,格式如...

Python第八课:数据类型中的字典及其函数与方法

Python3字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值...

Python中字典详解(python 中字典)

字典是Python中使用键进行索引的重要数据结构。它们是无序的项序列(键值对),这意味着顺序不被保留。键是不可变的。与列表一样,字典的值可以保存异构数据,即整数、浮点、字符串、NaN、布尔值、列表、数...

Python3.9又更新了:dict内置新功能,正式版十月见面

机器之心报道参与:一鸣、JaminPython3.8的热乎劲还没过去,Python就又双叒叕要更新了。近日,3.9版本的第四个alpha版已经开源。从文档中,我们可以看到官方透露的对dic...

Python3 基本数据类型详解(python三种基本数据类型)

文章来源:加米谷大数据Python中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在Python中,变量就是变量,它没有类型,我们所说的"类型"是变...

一文掌握Python的字典(python字典用法大全)

字典是Python中最强大、最灵活的内置数据结构之一。它们允许存储键值对,从而实现高效的数据检索、操作和组织。本文深入探讨了字典,涵盖了它们的创建、操作和高级用法,以帮助中级Python开发...

超级完整|Python字典详解(python字典的方法或操作)

一、字典概述01字典的格式Python字典是一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。字典的每个键值key=>value对用冒号:分割,每个对之间用逗号,...

Python3.9版本新特性:字典合并操作的详细解读

处于测试阶段的Python3.9版本中有一个新特性:我们在使用Python字典时,将能够编写出更可读、更紧凑的代码啦!Python版本你现在使用哪种版本的Python?3.7分?3.5分?还是2.7...

python 自学,字典3(一些例子)(python字典有哪些基本操作)

例子11;如何批量复制字典里的内容2;如何批量修改字典的内容3;如何批量修改字典里某些指定的内容...

Python3.9中的字典合并和更新,几乎影响了所有Python程序员

全文共2837字,预计学习时长9分钟Python3.9正在积极开发,并计划于今年10月发布。2月26日,开发团队发布了alpha4版本。该版本引入了新的合并(|)和更新(|=)运算符,这个新特性几乎...

Python3大字典:《Python3自学速查手册.pdf》限时下载中

最近有人会想了,2022了,想学Python晚不晚,学习python有前途吗?IT行业行业薪资高,发展前景好,是很多求职群里严重的香饽饽,而要进入这个高薪行业,也不是那么轻而易举的,拿信工专业的大学生...

python学习——字典(python字典基本操作)

字典Python的字典数据类型是基于hash散列算法实现的,采用键值对(key:value)的形式,根据key的值计算value的地址,具有非常快的查取和插入速度。但它是无序的,包含的元素个数不限,值...

324页清华教授撰写【Python 3 菜鸟查询手册】火了,小白入门字典

如何入门学习python...

Python3.9中的字典合并和更新,了解一下

全文共2837字,预计学习时长9分钟Python3.9正在积极开发,并计划于今年10月发布。2月26日,开发团队发布了alpha4版本。该版本引入了新的合并(|)和更新(|=)运算符,这个新特性几乎...

python3基础之字典(python中字典的基本操作)

字典和列表一样,也是python内置的一种数据结构。字典的结构如下图:列表用中括号[]把元素包起来,而字典是用大括号{}把元素包起来,只不过字典的每一个元素都包含键和值两部分。键和值是一一对应的...

取消回复欢迎 发表评论:

请填写验证码