Apache POI概述
许多时候,需要一个软件应用程序来生成Microsoft Excel文件格式的报告。
有时候,一个应用程序甚至可以接收Excel文件作为输入数据。
例如,为公司财务部门开发的应用程序将需要在Excel中生成所有的输出。
想要生成MS Office文件作为输出的任何Java程序员都必须使用预定义和只读API来执行此操作。
什么是Apache POI?
Apache POI是一种流行的API,允许程序员使用Java程序创建,修改和显示MS Office文件。
它是由Apache Software Foundation开发和分发的开源库,用于使用Java程序设计或修改Microsoft Office文件。
它包含用于将用户输入数据或文件解码为MS Office文档的类和方法。
Apache POI的组件
Apache POI包含用于处理MS Office的所有OLE2复合文档的类和方法。
此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(Horrible DiaGram格式)
:它包含MS-Visio二进制文件的类和方法。
HPBF(可怕的PuBlisher格式)
:用于读取和写入MS-Publisher文件。
本教程将指导您完成使用Java处理Excel文件的过程。
因此,探讨仅限于HSSF和XSSF组件。
注意
:较旧版本的POI支持doc,xls,ppt等二进制文件格式。版本3.5以上,POI支持MS-Office的OOXML文件格式,如docx,xlsx,pptx等。
像Apache POI一样,还有各种供应商提供的用于Excel文件生成的其他库。
这些包括Aspose的Aspose单元,Aspose的JXL和Comm Dev Library的JExcel。
Java Excel API的风味
本章将介绍一些Java Excel API的特性及其功能。
有很多供应商提供Java Excel相关API;
其中一些在本章中被考虑。
探讨用于Java的单元格
Aspose Cells for Java是由供应商Aspose开发和分发的纯授权Java Excel API。
该API的最新版本是8.1.2,于2014年7月发布。它是一个丰富而重的API(简单Java类和AWT类的组合),用于设计可读取,写入和操作电子表格的Excel组件。
该API的常见用途如下:
Excel报表,创建动态Excel报表
高保真的Excel渲染和打印
从Excel电子表格导入和导出数据
生成,编辑和转换电子表格
JXL是为Selenium设计的第三方框架,支持Web浏览器上的数据驱动自动化(Web浏览器上的数据自动更新)。
然而,它也被用作JExcel API的通用支持库,因为它具有创建,读取和写入电子表格的基本功能。
基本特点如下:
生成Excel文件
从工作簿和电子表格导入数据
获取行和列的总数
注意
:JXL只支持.xls文件格式,它不能处理大数据量。
JExcel
JExcel是由Team Dev提供的纯授权API。
使用它,程序员可以轻松地以.xls和.xlsx格式读取,写入,显示和修改Excel工作簿。
该API可以轻松嵌入Java Swing和AWT。
该API的最新版本是Jexcel-2.6.12,于2009年发布。主要功能如下。
自动化Excel应用程序,工作簿,电子表格等
将Java Swing应用程序中的工作簿嵌入作为普通Swing组件
将事件侦听器添加到工作簿和电子表格
添加事件处理程序来处理工作簿和电子表格事件的行为
添加本机对等体开发自定义功能
Apache POI
Apache POI是由Apache Software Foundation提供的100%开源库。
大多数中小型应用程序开发人员大量依赖Apache POI(HSSF + XSSF)。
它支持Excel库的所有基本功能;
然而,渲染和文本提取是其主要特征。
Apache POI安装
本章将介绍在基于Windows和Linux的系统上设置Apache POI的过程。
Apache POI可以轻松地安装并集成到您当前的Java环境中,只需几个简单的步骤,而不需要任何复杂的安装过程。
安装时需要用户管理。
Java SE 2 JDK 1.5或以上
1 GB RAM(推荐)
没有最低要求
操作系统版本
Windows XP或更高版本,Linux
现在让我们继续安装Apache POI的步骤。
步骤1:验证您的Java安装
首先,您需要在系统上安装Java软件开发工具包(SDK)。
要验证这一点,请根据您正在处理的平台执行两个命令中的任何一个。
如果Java安装已经正确完成,那么它将显示Java安装的当前版本和规范。
示例输出如下表所示。
Windows
打开命令控制台并键入:
Java版本“1.7.0_60”
Java(TM)SE运行时环境
> java -version
(build 1.7.0_60-b19)
Java Hotspot(TM)64位服务器虚拟机
(创建24.60-b09,混合模式)
打开命令终端并键入:$ java -version
java版本“1.7.0_25”打开JDK运行时环境(rhel-2.3.10.4.el6_4-x86_64)打开JDK 64位服务器虚拟机(创建23.7-b01,混合模式)
我们假设本教程的读者在他们的系统上安装了Java SDK版本1.7.0_60。
如果您没有Java SDK,请从
http://www.oracle.com/technetwork/java/javase/downloads/index.html
下载其当前版本
并安装。
步骤2:设置Java环境
将环境变量JAVA_HOME设置为指向机器上安装Java的基本目录位置。
例如,
Windows
将JAVA_HOME设置为C: ProgramFiles java jdk1.7.0_60
Linux
导出JAVA_HOME = / usr / local / java-current
将Java编译器位置的完整路径附加到系统路径。
Windows
Linux
将字符string“C: Program Files Java jdk1.7.0_60 bin”附加到系统变量PATH的末尾。
导出PATH = $ PATH:$ JAVA_HOME / bin /
如上所述,从命令提示符执行命令java -version。
步骤3:安装Apache POI库
从http://poi.apache.org/download.html下载最新版本的Apache POI,并将其内容解压缩到所需库可链接到Java程序的文件夹中。
让我们假设文件被收集在C盘上的文件夹中。
以下图像显示下载文件夹中的目录和文件结构。
将上述图像中突出显示的五个jar的完整路径添加到CLASSPATH中。
Windows
将以下字符string附加到用户变量的末尾
CLASSPATH:
“C: poi-3.9 poi-3.9-20121203.jar;”
“C: poi-3.9 poi-ooxml-3.9-20121203.jar;”
“C: poi-3.9 poi-ooxml-schemas-3.9-20121203.jar;”
“C: poi-3.9 ooxml-lib dom4j-1.6.1.jar;”
“C: poi-3.9 ooxml-lib xmlbeans-2.3.0.jar;。;”
Linux
导出CLASSPATH = $ CLASSPATH:
/usr/share/poi-3.9/poi-3.9-20121203.tar:
/usr/share/poi-3.9/poi-ooxml-schemas-3.9-20121203.tar:
/usr/share/poi-3.9/poi-ooxml-3.9-20121203.tar:
/usr/share/poi-3.9/ooxml-lib/dom4j-1.6.1.tar:
/usr/share/poi-3.9/ooxml-lib/xmlbeans-2.3.0.tar
POI - 类和方法
本章介绍Apache POI API下的几个类和方法,这些类和方法对使用Java程序的Excel文件工作至关重要。
这是创建或维护Excel工作簿的所有类的超级界面。
它属于
org.apache.poi.ss.usermodel
包。
实现此接口的两个类如下:
HSSFWorkbook
:该类有以.xls格式读写Microsoft Excel文件的方法。
它与MS-Office版本97-2003兼容。
XSSFWorkbook
:此类具有以.xls或.xlsx格式读取和写入Microsoft Excel和OpenOffice xml文件的方法。
它与MS-Office版本2007或更高版本兼容。
HSSFWorkbook
它是org.apache.poi.hssf.usermodel包下的一个高级类。
它实现了Workbook界面,用于.xls格式的Excel文件。
下面列出了这个类的一些方法和构造函数。
类构造函数
构造函数和描述
HSSFWorkbook()
从头开始创建一个新的HSSFWorkbook对象。
HSSFWorkbook(DirectoryNode目录,boolean preserveNodes)
在特定目录中创建一个新的HSSFWworkbook对象。
HSSFWorkbook(DirectoryNode目录,POIFSFileSystem fs,boolean preserveNodes)
给定一个POIFSFileSystem对象及其中的特定目录,它创建一个SSFWorkbook对象来读取指定的工作簿。
HSSFWorkbook(java.io.InputStream s)
使用输入流创建新的HSSFWorkbook对象。
HSSFWorkbook(java.io.InputStream s,boolean preserveNodes)
在您的输入流周围创建一个POI文件系统。
HSSFWorkbook(POIFSFileSystem fs)
使用POIFSFileSystem对象构造新的HSSFWorkbook对象。
HSSFWorkbook(POIFSFileSystem fs,boolean preserveNodes)
给定一个POIFSFileSystem对象,它创建一个新的HSSFWorkbook对象来读取指定的工作簿。
这些构造函数中常用的参数是:
目录
:要处理的POI文件系统目录。
fs
:包含工作簿流的POI文件系统。
preservevenodes
:这是一个可选参数,用于决定是否保留其他节点(如宏)。
它消耗大量内存,因为它将所有POIFileSystem存储在内存中(如果已设置)。
注意
:HSSFWorkbook类包含很多方法;
但是它们仅与xls格式兼容。
在本教程中,重点是最新版本的Excel文件格式。
因此,HSSFWorkbook的类方法不在这里列出。
如果您需要这些类方法,请参考POI-HSSFWorkbook类API,网址为:
https://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFWorkbook.html。
XSSFWorkbook
它是一个用于表示高级和低级Excel文件格式的类。
它属于org.apache.xssf.usemodel包,并实现了Workbook界面。
下面列出了这个类的方法和构造函数。
类构造函数
构造函数和描述
XSSFWorkbook()
从头开始创建一个新的XSSFworkbook对象。
XSSFWorkbook(java.io.File文件)
从给定的文件构造一个XSSFWorkbook对象。
XSSFWorkbook(java.io.InputStream是)
构造XSSFWorkbook对象,通过将整个输入流缓存到内存中,然后打开一个OPCPackage对象。
XSSFWorkbook(java.lang.String path)
给定一个文件的完整路径的XSSFWorkbook对象。
方法和说明
createSheet()
为此工作簿创建XSSFSheet,将其添加到工作表中,并返回高级表示。
createSheet(java.lang.String sheetname)
为此Workbook创建一个新工作表,并返回高级表示。
createFont()
创建一个新的字体并将其添加到工作簿的字体表中。
createCellStyle()
创建一个新的XSSFCellStyle并将其添加到工作簿的样式表中。
createFont()
创建一个新的字体并将其添加到工作簿的字体表中。
setPrintArea(int sheetIndex,int startColumn,int endColumn,int startRow,int endRow)
根据指定的参数设置给定纸张的打印区域。
有关此类的其余方法,请参阅完整的API文档:
http
:
//poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFWorkbook.html。
完整的方法列表。
工作表是org.apache.poi.ss.usermodel包下的界面,它是创建具有特定名称的高级或低级电子表格的所有类的超级界面。
最常见的电子表格类型是工作表,表示为单元格格网。
HSSFSheet
这是org.apache.poi.hssf.usermodel包下的一个类。
它可以创建excel电子表格,并允许格式化工作表样式和工作表数据。
类构造函数
构造函数和描述
HSSFSheet(HSSFWorkbook工作簿)
创建由HSSFWorkbook调用的新HSSFSheet,从头开始创建一个表单。
HSSFSheet(HSSFWorkbook工作簿,InternalSheet表)
创建表示给定表单对象的HSSFSheet。
XSSFSheet
这是一个表示excel电子表格的高级代表的类。
它在org.apache.poi.hssf.usermodel包下。
类构造函数
构造函数和描述
XSSFSheet()
创建新的XSSFSheet - 由XSSFWorkbook调用从头创建一个工作表。
XSSFSheet(PackagePart部分,PackageRelationship rel)
创建表示给定包部分和关系的XSSFSheet。
方法与说明
addMergedRegion(CellRangeAddress region)
添加一个合并的单元格区域(因此这些单元格形成一个)。
autoSizeColumn(int column)
调整列宽以适应内容。
迭代器()
此方法是rowIterator()的别名,以允许foreach循环
addHyperlink(XSSFHyperlink超链接)
在此工作表上注册超链接集合中的超链接
有关此类的其余方法,请参阅完整的API,网址为:
https
:
//poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFSheet.html。
这是org.apache.poi.ss.usermodel包下的接口。
它用于一行电子表格的高级表示。
它是表示POI库中行的所有类的超级界面。
XSSFRow
这是
org.apache.poi.xssf.usermodel
包
下的一个类
。
它实现了Row接口,因此它可以在电子表格中创建行。
下面列出了这个类的方法和构造函数。
createCell(int columnIndex)
在行内创建新单元格并返回。
setHeight(短高)
设置短单位的高度。
对于本课程的其余方法,请按照指定的链接
https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFRow.html
这是org.apache.poi.ss.usermodel包下的接口。
它是表示电子表格行中的单元格的所有类的超级界面。
单元格可以采用各种属性,如空白,数字,日期,错误等。单元格在添加到行之前应该有自己的数字(基于0)。
XSSFCell
这是org.apache.poi.xssf.usermodel包下的一个类。
它实现了Cell界面。
它是电子表格行中单元格的高级表示。
下面列出了XSSFCell类的一些范围及其描述。
单元格类型
CELL_TYPE_BLANK
表示空白单元格
CELL_TYPE_BOOLEAN
表示布尔单元格(true或false)
CELL_TYPE_ERROR
表示单元格上的错误值
CELL_TYPE_FORMULA
表示单元格上的公式结果
CELL_TYPE_NUMERIC
表示单元格上的数值数据
CELL_TYPE_STRING
表示单元格上的字符string(文本)
setCellStyle(CellStyle样式)
设置单元格的样式。
setCellType(int cellType)
设置单元格的类型(数字,公式或字符string)。
setCellValue(布尔值)
设置单元格的布尔值。
setCellValue(java.util.Calendar value)
设置单元格的日期值。
setCellValue(double value)
设置单元格的数值。
setCellValue(java.lang.String str)
设置单元格的字符string值。
setHyperlink(超链接超链接)
指定一个超级链接到这个单元格。
有关此类的其余方法和字段,请访问以下链接:
https
:
//poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFCell.html
XSSFCellStyle
这是org.apache.poi.xssf.usermodel包下的一个类。
它将提供有关电子表格单元格中内容格式的可能信息。
它还提供了修改该格式的选项。
它实现了CellStyle接口。
下表列出了从CellStyle接口继承的几个字段。
ALIGN_CENTER
中心对齐单元格内容
ALIGN_CENTER_SELECTION
中心选择水平对齐
ALIGN_FILL
细胞符合内容大小
ALIGN_JUSTIFY
将细胞内容适合其宽度
ALIGN_LEFT
左对齐单元格内容
ALIGN_RIGHT
右对齐单元格内容
BORDER_DASH_DOT
细胞风格与破折号和点
BORDER_DOTTED
细胞样式带点缀边框
BORDER_DASHED
具有虚线边框的单元格样式
BORDER_THICK
细胞样式与粗边框
BORDER_THIN
细胞风格与细边框
VERTICAL_BOTTOM
将单元格内容垂直对齐
VERTICAL_CENTER
对齐单元格内容垂直中心
VERTICAL_JUSTIFY
垂直对齐和对齐细胞内容
VERTICAL_TOP
顶部对齐的垂直对齐
类构造函数
构造函数和描述
XSSFCellStyle(int cellXfId,int cellStyleXfId,StylesTable stylesSource,ThemesTable主题)
从提供的部分创建单元格样式
XSSFCellStyle(StylesTable stylesSource)
创建一个空单元格样式
设置单元格底部边框的边框类型
有关此类中剩余的方法和字段,请查看以下链接:
https
:
//poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFCellStyle.html
HSSFColor
这是org.apache.poi.hssf.util包下的一个类。
它提供不同的颜色作为嵌套类。
通常这些嵌套类使用自己的索引来表示。
它实现了颜色界面。
这个类的所有嵌套类是静态的,每个类都有它的索引。
这些嵌套颜色类用于单元格格式化,如单元格内容,边框,前景和背景。
下面列出了一些嵌套类。
只有这个类的一个方法很重要,而且用于获取索引值。
有关其余方法和嵌套类,请参阅以下链接:
https
:
//poi.apache.org/apidocs/org/apache/poi/hssf/util/HSSFColor.html。
XSSFColor
这是org.apache.poi.xssf.usermodel包下的一个类。
它用于表示电子表格中的颜色。
它实现了颜色界面。
下面列出了一些方法和构造函数。
类构造函数
有关其余方法,请访问以下链接:
https
:
//poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFColor.html。
XSSFFont
这是org.apache.poi.xssf.usermodel包下的一个类。
它实现了Font界面,因此它可以处理工作簿中的不同字体。
类构造函数
有关其余方法,请浏览以下链接:
https
:
//poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFFont.html。
XSSFHyperlink
这是
org.apache.poi.xssf.usermodel
包
下的一个类
。
它实现了超链接界面。
它用于设置电子表格的单元格内容的超链接。
这个类的字段如下。
这里,字段表示使用的超链接的类型。
有关其余方法,请访问以下链接:
https
:
//poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFHyperlink.html
使用XSSFCreationHelper
这是
org.apache.poi.xssf.usermodel
包
下的一个类
。
它实现了CreationHelper接口。
它被用作公式评估和设置超链接的支持类。
有关其余方法,请参阅以下链接:
https
:
//poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFCreationHelper.html。
XSSFPrintSetup
这是
org.apache.poi.xsssf.usermodel
包
下的一个类
。
它实现了PrintSetup界面。
它用于设置打印页面大小,区域,选项和设置。
有关其余方法,请访问以下链接:
https
:
//poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFPrintSetup.html
POI - 工作簿
这里的术语“工作簿”是指Microsoft Excel文件。
本章完成后,您将能够创建新的工作簿,并使用Java程序打开现有的工作簿。
创建空白工作簿
以下简单程序用于创建一个空白的Microsoft Excel工作簿。
import java.io.*;
import org.apache.poi.xssf.usermodel.*;
public class CreateWorkBook
public static void main(String[] args)throws Exception
//Create Blank workbook
XSSFWorkbook workbook = new XSSFWorkbook();
//Create file system using specific name
FileOutputStream out = new FileOutputStream(
new File("createworkbook.xlsx"));
//write operation workbook using file out object
workbook.write(out);
out.close();
System.out.println("
createworkbook.xlsx written successfully");
让我们将上面的Java代码保存为CreateWorkBook.java,然后从命令提示符编译并执行如下:
$javac CreateWorkBook.java
$java CreateWorkBook
如果您的系统环境配置了POI库,它将编译并执行,以在当前目录中生成名为createworkbook.xlsx的空白Excel文件,并在命令提示符下显示以下输出。
createworkbook.xlsx written successfully
打开现有的工作簿
使用以下代码打开现有的工作簿。
import java.io.*;
import org.apache.poi.xssf.usermodel.*;
public class OpenWorkBook
public static void main(String args[])throws Exception
File file = new File("openworkbook.xlsx");
FileInputStream fIP = new FileInputStream(file);
//Get the workbook instance for XLSX file
XSSFWorkbook workbook = new XSSFWorkbook(fIP);
if(file.isFile() && file.exists())
System.out.println(
"openworkbook.xlsx file open successfully.");
System.out.println(
"Error to open openworkbook.xlsx file.");
将上述Java代码保存为OpenWorkBook.java,然后从命令提示符编译并执行如下:
$javac OpenWorkBook.java
$java OpenWorkBook
它将编译并执行以生成以下输出。
openworkbook.xlsx file open successfully.
打开工作簿后,可以对其执行读写操作。
POI - 电子表格
本章介绍如何创建电子表格并使用Java进行操作。电子表格是Excel文件中的一个页面; 它包含具有特定名称的行和列。
读完本章后,您将能够创建一个电子表格,并在其上执行读取操作。
创建电子表格
首先,让我们使用前面章节中探讨的引用类创建一个电子表格。按照前面的章节中,首先创建一个工作簿,然后我们可以去上,并创建一个表。
以下代码片段用于创建电子表格。
//Create Blank workbook
XSSFWorkbook workbook = new XSSFWorkbook();
//Create a blank spreadsheet
XSSFSheet spreadsheet = workbook.createSheet("Sheet Name");
电子表格上的行
电子表格具有网格布局。行和列用特定名称标识。列用字母和数字的行标识。
以下代码片段用于创建行。
XSSFRow row = spreadsheet.createRow((short)1);
写入电子表格
让我们考虑雇员数据的一个例子。在这里,雇员数据以表格形式给出。
以下代码用于将上述数据写入电子表格。
import java.io.File;
import java.io.FileOutputStream;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class Writesheet
public static void main(String[] args) throws Exception
//Create blank workbook
XSSFWorkbook workbook = new XSSFWorkbook();
//Create a blank sheet
XSSFSheet spreadsheet = workbook.createSheet(
" Employee Info ");
//Create row object
XSSFRow row;
//This data needs to be written (Object[])
Map < String, Object[] > empinfo =
new TreeMap < String, Object[] >();
empinfo.put( "1", new Object[] {
"EMP ID", "EMP NAME", "DESIGNATION" });
empinfo.put( "2", new Object[] {
"tp01", "Gopal", "Technical Manager" });
empinfo.put( "3", new Object[] {
"tp02", "Manisha", "Proof Reader" });
empinfo.put( "4", new Object[] {
"tp03", "Masthan", "Technical Writer" });
empinfo.put( "5", new Object[] {
"tp04", "Satish", "Technical Writer" });
empinfo.put( "6", new Object[] {
"tp05", "Krishna", "Technical Writer" });
//Iterate over data and write to sheet
Set < String > keyid = empinfo.keySet();
int rowid = 0;
for (String key : keyid)
row = spreadsheet.createRow(rowid++);
Object [] objectArr = empinfo.get(key);
int cellid = 0;
for (Object obj : objectArr)
Cell cell = row.createCell(cellid++);
cell.setCellValue((String)obj);
//Write the workbook in file system
FileOutputStream out = new FileOutputStream(
new File("Writesheet.xlsx"));
workbook.write(out);
out.close();
System.out.println(
"Writesheet.xlsx written successfully" );
将上述Java代码保存为Writesheet.java,然后从命令提示符编译并运行它,如下所示:
$javac Writesheet.java
$java Writesheet
它将编译并执行,以在当前目录中生成一个名为Writesheet.xlsx的Excel文件,您将在命令提示符下获取以下输出。
Writesheet.xlsx written successfully
Writesheet.xlsx文件如下所示。
从电子表格阅读
让我们考虑以上名为Writesheet.xslx的 excel文件作为输入。请遵守以下代码; 它用于从电子表格中读取数据。
import java.io.File;
import java.io.FileInputStream;
import java.util.Iterator;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class Readsheet
static XSSFRow row;
public static void main(String[] args) throws Exception
FileInputStream fis = new FileInputStream(
new File("WriteSheet.xlsx"));
XSSFWorkbook workbook = new XSSFWorkbook(fis);
XSSFSheet spreadsheet = workbook.getSheetAt(0);
Iterator < Row > rowIterator = spreadsheet.iterator();
while (rowIterator.hasNext())
row = (XSSFRow) rowIterator.next();
Iterator < Cell > cellIterator = row.cellIterator();
while ( cellIterator.hasNext())
Cell cell = cellIterator.next();
switch (cell.getCellType())
case Cell.CELL_TYPE_NUMERIC:
System.out.print(
cell.getNumericCellValue() + " " );
break;
case Cell.CELL_TYPE_STRING:
System.out.print(
cell.getStringCellValue() + " " );
break;
System.out.println();
fis.close();
让我们将上述代码保存在Readsheet.java文件中,然后从命令提示符编译并运行它,如下所示:
$javac Readsheet.java
$java Readsheet
如果您的系统环境配置了POI库,它将编译并执行,以在命令提示符下生成以下输出。
EMP ID EMP NAME DESIGNATION
tp01 Gopal Technical Manager
tp02 Manisha Proof Reader
tp03 Masthan Technical Writer
tp04 Satish Technical Writer
tp05 Krishna Technical Writer
POI - 细胞
您输入电子表格的任何数据始终存储在单元格中。我们使用行和列的标签来标识单元格。本章介绍如何使用Java编程来操纵电子表格中的单元格中的数据。
创建一个单元格
您需要在创建单元格之前创建一行。一行只不过是一个单元格的集合。
以下代码片段用于创建单元格。
//create new workbook
XSSFWorkbook workbook = new XSSFWorkbook();
//create spreadsheet with a name
XSSFSheet spreadsheet = workbook.createSheet("new sheet");
//create first row on a created spreadsheet
XSSFRow row = spreadsheet.createRow(0);
//create first cell on created row
XSSFCell cell = row.createCell(0);
单元格类型指定单元格是否可以包含字符string,数值或公式。字符string单元格不能保存数值,数字单元格不能保存字符string。下面给出了单元格的类型,它们的值和类型语法。
以下代码用于在电子表格中创建不同类型的单元格。
import java.io.File;
import java.io.FileOutputStream;
import java.util.Date;
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;
public class TypesofCells
public static void main(String[] args)throws Exception
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet spreadsheet = workbook.createSheet("cell types");
XSSFRow row = spreadsheet.createRow((short) 2);
row.createCell(0).setCellValue("Type of Cell");
row.createCell(1).setCellValue("cell value");
row = spreadsheet.createRow((short) 3);
row.createCell(0).setCellValue("set cell type BLANK");
row.createCell(1);
row = spreadsheet.createRow((short) 4);
row.createCell(0).setCellValue("set cell type BOOLEAN");
row.createCell(1).setCellValue(true);
row = spreadsheet.createRow((short) 5);
row.createCell(0).setCellValue("set cell type ERROR");
row.createCell(1).setCellValue(XSSFCell.CELL_TYPE_ERROR );
row = spreadsheet.createRow((short) 6);
row.createCell(0).setCellValue("set cell type date");
row.createCell(1).setCellValue(new Date());
row = spreadsheet.createRow((short) 7);
row.createCell(0).setCellValue("set cell type numeric" );
row.createCell(1).setCellValue(20 );
row = spreadsheet.createRow((short) 8);
row.createCell(0).setCellValue("set cell type string");
row.createCell(1).setCellValue("A String");
FileOutputStream out = new FileOutputStream(
new File("typesofcells.xlsx"));
workbook.write(out);
out.close();
System.out.println(
"typesofcells.xlsx written successfully");
将上述代码保存在名为TypesofCells.java的文件中,如下所示从命令提示符编译并执行。
$javac TypesofCells.java
$java TypesofCells
如果您的系统配置了POI库,那么它将编译并执行,以在当前目录中生成一个名为typesofcells.xlsx的Excel文件,并显示以下输出。
typesofcells.xlsx written successfully
typesofcells.xlsx文件如下所示。
在这里,您可以学习如何进行单元格格式化,并应用不同的样式,例如合并相邻单元格,添加边框,设置单元格对齐和填充颜色。
以下代码用于使用Java编程将不同的样式应用于单元格。
import java.io.File;
import java.io.FileOutputStream;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class CellStyle
public static void main(String[] args)throws Exception
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet spreadsheet = workbook.createSheet("cellstyle");
XSSFRow row = spreadsheet.createRow((short) 1);
row.setHeight((short) 800);
XSSFCell cell = (XSSFCell) row.createCell((short) 1);
cell.setCellValue("test of merging");
//MEARGING CELLS
//this statement for merging cells
spreadsheet.addMergedRegion(new CellRangeAddress(
1, //first row (0-based)
1, //last row (0-based)
1, //first column (0-based)
4 //last column (0-based)
//CELL Alignment
row = spreadsheet.createRow(5);
cell = (XSSFCell) row.createCell(0);
row.setHeight((short) 800);
// Top Left alignment
XSSFCellStyle style1 = workbook.createCellStyle();
spreadsheet.setColumnWidth(0, 8000);
style1.setAlignment(XSSFCellStyle.ALIGN_LEFT);
style1.setVerticalAlignment(XSSFCellStyle.VERTICAL_TOP);
cell.setCellValue("Top Left");
cell.setCellStyle(style1);
row = spreadsheet.createRow(6);
cell = (XSSFCell) row.createCell(1);
row.setHeight((short) 800);
// Center Align Cell Contents
XSSFCellStyle style2 = workbook.createCellStyle();
style2.setAlignment(XSSFCellStyle.ALIGN_CENTER);
style2.setVerticalAlignment(
XSSFCellStyle.VERTICAL_CENTER);
cell.setCellValue("Center Aligned");
cell.setCellStyle(style2);
row = spreadsheet.createRow(7);
cell = (XSSFCell) row.createCell(2);
row.setHeight((short) 800);
// Bottom Right alignment
XSSFCellStyle style3 = workbook.createCellStyle();
style3.setAlignment(XSSFCellStyle.ALIGN_RIGHT);
style3.setVerticalAlignment(
XSSFCellStyle.VERTICAL_BOTTOM);
cell.setCellValue("Bottom Right");
cell.setCellStyle(style3);
row = spreadsheet.createRow(8);
cell = (XSSFCell) row.createCell(3);
// Justified Alignment
XSSFCellStyle style4 = workbook.createCellStyle();
style4.setAlignment(XSSFCellStyle.ALIGN_JUSTIFY);
style4.setVerticalAlignment(
XSSFCellStyle.VERTICAL_JUSTIFY);
cell.setCellValue("Contents are Justified in Alignment");
cell.setCellStyle(style4);
//CELL BORDER
row = spreadsheet.createRow((short) 10);
row.setHeight((short) 800);
cell = (XSSFCell) row.createCell((short) 1);
cell.setCellValue("BORDER");
XSSFCellStyle style5 = workbook.createCellStyle();
style5.setBorderBottom(XSSFCellStyle.BORDER_THICK);
style5.setBottomBorderColor(
IndexedColors.BLUE.getIndex());
style5.setBorderLeft(XSSFCellStyle.BORDER_DOUBLE);
style5.setLeftBorderColor(
IndexedColors.GREEN.getIndex());
style5.setBorderRight(XSSFCellStyle.BORDER_HAIR);
style5.setRightBorderColor(
IndexedColors.RED.getIndex());
style5.setBorderTop(XSSFCellStyle.BIG_SPOTS);
style5.setTopBorderColor(
IndexedColors.CORAL.getIndex());
cell.setCellStyle(style5);
//Fill Colors
//background color
row = spreadsheet.createRow((short) 10 );
cell = (XSSFCell) row.createCell((short) 1);
XSSFCellStyle style6 = workbook.createCellStyle();
style6.setFillBackgroundColor(
HSSFColor.LEMON_CHIFFON.index );
style6.setFillPattern(XSSFCellStyle.LESS_DOTS);
style6.setAlignment(XSSFCellStyle.ALIGN_FILL);
spreadsheet.setColumnWidth(1,8000);
cell.setCellValue("FILL BACKGROUNG/FILL PATTERN");
cell.setCellStyle(style6);
//Foreground color
row = spreadsheet.createRow((short) 12);
cell = (XSSFCell) row.createCell((short) 1);
XSSFCellStyle style7=workbook.createCellStyle();
style7.setFillForegroundColor(HSSFColor.BLUE.index);
style7.setFillPattern( XSSFCellStyle.LESS_DOTS);
style7.setAlignment(XSSFCellStyle.ALIGN_FILL);
cell.setCellValue("FILL FOREGROUND/FILL PATTERN");
cell.setCellStyle(style7);
FileOutputStream out = new FileOutputStream(
new File("cellstyle.xlsx"));
workbook.write(out);
out.close();
System.out.println("cellstyle.xlsx written successfully");
将上述代码保存在名为CellStyle.java的文件中,从命令提示符编译并执行,如下所示。
$javac CellStyle.java
$java CellStyle
它将在当前目录中生成一个名为cellstyle.xlsx的Excel文件,并显示以下输出。
cellstyle.xlsx written successfully
cellstyle.xlsx文件如下所示。
POI - 字体和文字方向
本章介绍如何在Excel电子表格中设置不同的字体,应用样式,并以不同的方向显示文本。
每个系统都捆绑了大量的字体集合,如Arial,Impact,Times New Roman等。如果需要,还可以使用新的字体更新该集合。类似地,可以显示字体的各种风格,例如粗体,斜体,下划线,敲击等。
字体和字体样式
以下代码用于将特定字体和样式应用于单元格的内容。
import java.io.File;
import java.io.FileOutputStream;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class FontStyle
public static void main(String[] args)throws Exception
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet spreadsheet = workbook.createSheet("Fontstyle");
XSSFRow row = spreadsheet.createRow(2);
//Create a new font and alter it.
XSSFFont font = workbook.createFont();
font.setFontHeightInPoints((short) 30);
font.setFontName("IMPACT");
font.setItalic(true);
font.setColor(HSSFColor.BRIGHT_GREEN.index);
//Set font into style
XSSFCellStyle style = workbook.createCellStyle();
style.setFont(font);
// Create a cell with a value and set style to it.
XSSFCell cell = row.createCell(1);
cell.setCellValue("Font Style");
cell.setCellStyle(style);
FileOutputStream out = new FileOutputStream(
new File("fontstyle.xlsx"));
workbook.write(out);
out.close();
System.out.println(
"fontstyle.xlsx written successfully");
让我们将上述代码保存在名为FontStyle.java的文件中。从命令提示符编译并执行如下。
$javac FontStyle.java
$java FontStyle
它在当前目录中生成一个名为fontstyle.xlsx的Excel文件,并在命令提示符下显示以下输出。
fontstyle.xlsx written successfully
fontstyle.xlsx文件如下所示。
在这里,您可以学习如何以不同的角度设置文字方向。通常,细胞内容从左到右以00角水平显示; 但是,如果需要,您可以使用以下代码旋转文本方向。
import java.io.File;
import java.io.FileOutputStream;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class TextDirection
public static void main(String[] args)throws Exception
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet spreadsheet = workbook.createSheet(
"Text direction");
XSSFRow row = spreadsheet.createRow(2);
XSSFCellStyle myStyle = workbook.createCellStyle();
myStyle.setRotation((short) 0);
XSSFCell cell = row.createCell(1);
cell.setCellValue("0D angle");
cell.setCellStyle(myStyle);
//30 degrees
myStyle=workbook.createCellStyle();
myStyle.setRotation((short) 30);
cell = row.createCell(3);
cell.setCellValue("30D angle");
cell.setCellStyle(myStyle);
//90 degrees
myStyle=workbook.createCellStyle();
myStyle.setRotation((short) 90);
cell = row.createCell(5);
cell.setCellValue("90D angle");
cell.setCellStyle(myStyle);
//120 degrees
myStyle=workbook.createCellStyle();
myStyle.setRotation((short) 120);
cell = row.createCell(7);
cell.setCellValue("120D angle");
cell.setCellStyle(myStyle);
//270 degrees
myStyle = workbook.createCellStyle();
myStyle.setRotation((short) 270);
cell = row.createCell(9);
cell.setCellValue("270D angle");
cell.setCellStyle(myStyle);
//360 degrees
myStyle=workbook.createCellStyle();
myStyle.setRotation((short) 360);
cell = row.createCell(12);
cell.setCellValue("360D angle");
cell.setCellStyle(myStyle);
FileOutputStream out = new FileOutputStream(
new File("textdirection.xlsx"));
workbook.write(out);
out.close();
System.out.println(
"textdirection.xlsx written successfully");
将上述代码保存在TextDirectin.java文件中,然后从命令提示符编译并执行如下。
$javac TextDirection.java
$java TextDirection
它将编译并执行,以在当前目录中生成一个名为textdirection.xlsx的Excel文件,并在命令提示符下显示以下输出。
textdirection.xlsx written successfully
textdirection.xlsx文件如下所示。
POI - 公式
本章将介绍使用Java编程在单元格上应用不同公式的过程。Excel应用程序的基本目的是通过在其上应用公式来维护数值数据。
在公式中,我们传递Excel表中值的动态值或位置。执行此公式时,您将获得所需的结果。下表列出了Excel中经常使用的几个基本公式。
以下代码用于将公式添加到单元格并执行它。
import java.io.File;
import java.io.FileOutputStream;
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;
public class Formula
public static void main(String[] args)throws Exception
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet spreadsheet = workbook.createSheet("formula");
XSSFRow row = spreadsheet.createRow(1);
XSSFCell cell = row.createCell(1);
cell.setCellValue("A =" );
cell = row.createCell(2);
cell.setCellValue(2);
row = spreadsheet.createRow(2);
cell = row.createCell(1);
cell.setCellValue("B =");
cell = row.createCell(2);
cell.setCellValue(4);
row = spreadsheet.createRow(3);
cell = row.createCell(1);
cell.setCellValue("Total =");
cell = row.createCell(2);
// Create SUM formula
cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula("SUM(C2:C3)" );
cell = row.createCell(3);
cell.setCellValue("SUM(C2:C3)");
row = spreadsheet.createRow(4);
cell = row.createCell(1);
cell.setCellValue("POWER =");
cell=row.createCell(2);
// Create POWER formula
cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula("POWER(C2,C3)");
cell = row.createCell(3);
cell.setCellValue("POWER(C2,C3)");
row = spreadsheet.createRow(5);
cell = row.createCell(1);
cell.setCellValue("MAX =");
cell = row.createCell(2);
// Create MAX formula
cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula("MAX(C2,C3)");
cell = row.createCell(3);
cell.setCellValue("MAX(C2,C3)");
row = spreadsheet.createRow(6);
cell = row.createCell(1);
cell.setCellValue("FACT =");
cell = row.createCell(2);
// Create FACT formula
cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula("FACT(C3)");
cell = row.createCell(3);
cell.setCellValue("FACT(C3)");
row = spreadsheet.createRow(7);
cell = row.createCell(1);
cell.setCellValue("SQRT =");
cell = row.createCell(2);
// Create SQRT formula
cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula("SQRT(C5)");
cell = row.createCell(3);
cell.setCellValue("SQRT(C5)");
workbook.getCreationHelper()
.createFormulaEvaluator()
.evaluateAll();
FileOutputStream out = new FileOutputStream(
new File("formula.xlsx"));
workbook.write(out);
out.close();
System.out.println("fromula.xlsx written successfully");
将上述代码保存为Formula.java,然后从命令提示符编译并执行,如下所示。
$javac Formula.java
$java Formula
它将在当前目录中生成一个名为formula.xlsx的Excel文件,并在命令提示符下显示以下输出。
fromula.xlsx written successfully
formula.xlsx文件如下所示。
POI - 超链接
本章介绍如何在单元格中添加超链接到内容。通常,超链接用于访问任何Web URL,电子邮件或外部文件。
以下代码显示了如何在单元格上创建超链接。
import java.io.File;
import java.io.FileOutputStream;
import org.apache.poi.common.usermodel.Hyperlink;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.CreationHelper;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFHyperlink;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class HyperlinkEX
public static void main(String[] args) throws Exception
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet spreadsheet = workbook
.createSheet("Hyperlinks");
XSSFCell cell;
CreationHelper createHelper = workbook
.getCreationHelper();
XSSFCellStyle hlinkstyle = workbook.createCellStyle();
XSSFFont hlinkfont = workbook.createFont();
hlinkfont.setUnderline(XSSFFont.U_SINGLE);
hlinkfont.setColor(HSSFColor.BLUE.index);
hlinkstyle.setFont(hlinkfont);
//URL Link
cell = spreadsheet.createRow(1)
.createCell((short) 1);
cell.setCellValue("URL Link");
XSSFHyperlink link = (XSSFHyperlink)createHelper
.createHyperlink(Hyperlink.LINK_URL);
link.setAddress("http://www.vue5.com/" );
cell.setHyperlink((XSSFHyperlink) link);
cell.setCellStyle(hlinkstyle);
//Hyperlink to a file in the current directory
cell = spreadsheet.createRow(2)
.createCell((short) 1);
cell.setCellValue("File Link");
link = (XSSFHyperlink)createHelper
.createHyperlink(Hyperlink.LINK_FILE);
link.setAddress("cellstyle.xlsx");
cell.setHyperlink(link);
cell.setCellStyle(hlinkstyle);
//e-mail link
cell = spreadsheet.createRow(3)
.createCell((short) 1);
cell.setCellValue("Email Link");
link = (XSSFHyperlink)createHelper
.createHyperlink(Hyperlink.LINK_EMAIL);
link.setAddress(
"mailto:[email protected]?"
+"subject=Hyperlink");
cell.setHyperlink(link);
cell.setCellStyle(hlinkstyle);
FileOutputStream out = new FileOutputStream(
new File("hyperlink.xlsx"));
workbook.write(out);
out.close();
System.out.println("hyperlink.xlsx written successfully");
将上述代码保存为HyperlinkEX.java。从命令提示符编译并执行如下。
$javac HyperlinkEX.java
$java HyperlinkEX
它将在当前目录中生成一个名为hyperlink.xlsx的Excel文件,并在命令提示符下显示以下输出。
hyperlink.xlsx written successfully
hyperlink.xlsx文件如下所示。
POI - 打印区域
本章介绍如何在电子表格中设置打印区域。通常的打印区域是从Excel电子表格的左上角到右下角。打印区域可根据您的要求定制。这意味着您可以从整个电子表格打印特定范围的单元格,自定义纸张尺寸,打开网格线打开内容等。
以下代码用于在电子表格上设置打印区域。
import java.io.File;
import java.io.FileOutputStream;
import org.apache.poi.xssf.usermodel.XSSFPrintSetup;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class PrintArea
public static void main(String[] args)throws Exception
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet spreadsheet = workbook
.createSheet("Print Area");
//set print area with indexes
workbook.setPrintArea(
0, //sheet index
0, //start column
5, //end column
0, //start row
5 //end row
//set paper size
spreadsheet.getPrintSetup().setPaperSize(
XSSFPrintSetup.A4_PAPERSIZE);
//set display grid lines or not
spreadsheet.setDisplayGridlines(true);
//set print grid lines or not
spreadsheet.setPrintGridlines(true);
FileOutputStream out = new FileOutputStream(
new File("printarea.xlsx"));
workbook.write(out);
out.close();
System.out.println("printarea.xlsx written successfully");
让我们将上面的代码保存为PrintArea.java。从命令提示符编译并执行如下。
$javac PrintArea.java
$java PrintArea
它将在当前目录中生成一个名为printarea.xlsx的文件,并在命令提示符下显示以下输出。
printarea.xlsx written successfully
在上面的代码中,我们还没有添加任何单元格值。因此printarea.xlsx是一个空白文件。但是,您可以在下图中看到,打印预览显示带有网格线的打印区域。
POI与数据库的互动
本章将介绍POI库如何与数据库进行交互。借助JDBC,您可以从数据库检索数据,并使用POI库将该数据插入电子表格。让我们考虑MySQL数据库的SQL操作。
写入数据库
让我们假设从MySQL数据库测试中检索名为emp_tbl的以下员工数据表。
使用以下代码从数据库中检索数据并将其插入到电子表格中。
import java.io.File;
import java.io.FileOutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
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;
public class ExcelDatabase
public static void main(String[] args) throws Exception
Class.forName("com.mysql.jdbc.Driver");
Connection connect = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/test" ,
"root" ,
"root"
Statement statement = connect.createStatement();
ResultSet resultSet = statement
.executeQuery("select * from emp_tbl");
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet spreadsheet = workbook
.createSheet("employe db");
XSSFRow row=spreadsheet.createRow(1);
XSSFCell cell;
cell=row.createCell(1);
cell.setCellValue("EMP ID");
cell=row.createCell(2);
cell.setCellValue("EMP NAME");
cell=row.createCell(3);
cell.setCellValue("DEG");
cell=row.createCell(4);
cell.setCellValue("SALARY");
cell=row.createCell(5);
cell.setCellValue("DEPT");
int i=2;
while(resultSet.next())
row=spreadsheet.createRow(i);
cell=row.createCell(1);
cell.setCellValue(resultSet.getInt("eid"));
cell=row.createCell(2);
cell.setCellValue(resultSet.getString("ename"));
cell=row.createCell(3);
cell.setCellValue(resultSet.getString("deg"));
cell=row.createCell(4);
cell.setCellValue(resultSet.getString("salary"));
cell=row.createCell(5);
cell.setCellValue(resultSet.getString("dept"));
i++;
FileOutputStream out = new FileOutputStream(
new File("exceldatabase.xlsx"));
workbook.write(out);
out.close();
System.out.println(
"exceldatabase.xlsx written successfully");
让我们将上面的代码保存为ExcelDatabase.java。从命令提示符编译并执行如下。
$javac ExcelDatabase.java
$java ExcelDatabase
它将在当前目录中生成一个名为exceldatabase.xlsx的Excel文件,并在命令提示符下显示以下输出。
exceldatabase.xlsx written successfully
exceldatabase.xlsx文件如下所示。
方法和说明
|
setAlignment(short align)
设置单元格的水平对齐类型
|
setBorderBottom(short border)
|
setBorderColor(XSSFCellBorder.BorderSide side,XSSFColor color)
设置所选边框的颜色
|
setBorderLeft(Short border)
设置单元格左边框边框的类型
|
setBorderRight(short border)
设置单元格右边框边框的类型
|
setBorderTop(short border)
设置单元格顶部边框的边框类型
|
setFillBackgroundColor(XSSFColor颜色)
设置表示为XSSFColor值的背景填充颜色。
|
setFillForegroundColor(XSSFColor颜色)
设置表示为XSSFColor值的前景填充颜色。
|
setFillPattern(short fp)
指定图案和纯色单元格填充的单元格填充信息。
|
setFont(Font font)
设置此样式的字体。
|
setRotation(短轮)
设置单元格中文本的旋转度。
|
setVerticalAlignment(short align)
设置单元格的垂直对齐方式。
|
Class名称(颜色)
|
HSSFColor.AQUA
|
HSSFColor.AUTOMATIC
|
HSSFColor.BLACK
|
HSSFColor.BLUE
|
HSSFColor.BRIGHT_GREEN
|
HSSFColor.BRIGHT_GRAY
|
HSSFColor.CORAL
|
HSSFColor.DARK_BLUE
|
HSSFColor.DARK_GREEN
|
HSSFColor.SKY_BLUE
|
HSSFColor.WHITE
|
HSSFColor.YELLOW
|
方法和说明
|
getIndex()
该方法用于获取嵌套类的索引值
|
构造函数和描述
|
XSSFColor()
创建XSSFColor的新实例。
|
XSSFColor(byte [] rgb)
使用RGB创建XSSFColor的新实例。
|
XSSFColor(java.awt.Color clr)
使用awt包中的Color类创建XSSFColor的新实例。
|
方法和说明
|
setAuto(boolean auto)
设置一个布尔值来指示ctColor是自动的,并且系统ctColor是依赖的。
|
setIndexed(int indexed)
将索引的ctColor值设置为系统ctColor。
|
构造函数和描述
|
XSSFFont()
创建一个新的XSSFont实例。
|
方法和说明
|
setBold(布尔粗体)
设置“bold”属性的布尔值。
|
setColor(短颜色)
设置字体的索引颜色。
|
setColor(XSSFColor颜色)
以标准Alpha RGB颜色值设置字体的颜色。
|
setFontHeight(short height)
设置字体高度(以点为单位)。
|
setFontName(java.lang.String name)
设置字体的名称。
|
setItalic(布尔斜体)
为"italic"属性设置一个布尔值。
|
LINK_DOCUMENT
|
用于链接任何其他文档
|
LINK_EMAIL
|
用于链接电子邮件
|
LINK_FILE
|
用于链接任何格式的其他文件
|
LINK_URL
|
用于链接网址
|
方法和说明
|
setAddress(java.lang.String address)
超链接地址。
|
方法和说明
|
createFormulaEvaluator()
创建一个XSSFFormulaEvaluator实例,即评估公式单元格的对象。
|
createHyperlink(int type)
创建一个新的XSSFHyperlink。
|
方法和说明
|
setLandscape(boolean ls)
设置布尔值以允许或阻止横向打印。
|
setLeftToRight(boolean ltor)
设置打印时在订购时是从左到右还是从上往下。
|
setPaperSize(short size)
设置纸张尺寸。
|
Emp Id
|
Emp名称
|
Gopal
|
单元格值的类型
|
空白单元格值
|
XSSFCell.CELL_TYPE_BLANK
|
布尔单元格值
|
XSSFCell.CELL.TYPE_BOOLEAN
|
错误单元格值
|
XSSFCell.CELL_TYPE_ERROR
|
数值单元格值
|
XSSFCell.CELL_TYPE_NUMERIC
|
字符string单元格值
|
XSSFCell.CELL_TYPE_STRING
|
添加多个数字
|
= SUM(Loc1:Locn)或= SUM(n1,n2,)
|
= COUNT(Loc1:Locn)或= COUNT(n1,n2,)
|
两个数字的Grav
|
= POWER(Loc1,Loc2)或= POWER(数字,功率)
|
最多的多个数字
|
= MAX(Loc1:Locn)或= MAX(n1,n2,)
|
= PRODUCT(Loc1:Locn)或= PRODUCT(n1,n2,)
|
= FACT(Locn)或= FACT(number)
|
= ABS(位置)或= ABS(数字)
|
= TODAY()
|
转换为小写
|
= LOWER(Locn)或= LOWER(文字)
|
= SQRT(locn)或= SQRT(number)
|
EMP ID
|
EMP NAME
|
Gopal
|
45000
|
45000
|
Masthanvali
|
45000
|
40000
|
人力资源部
|
30000
|