乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > 如何用<em>Apache</em> POI操作Excel文件-apache poi读取exce

如何用<em>Apache</em> POI操作Excel文件-apache poi读取exce

作者:乔山办公网日期:

返回目录:excel表格制作


完整例子如下,仅供参考:
package com.soukenan.util.filter;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;

public class POITest {
//使用POI创建excel工作簿
public static void createWorkBook() throws IOException {
//创建excel工作簿
Workbook wb = new HSSFWorkbook();
//创建第一个sheet(页),命名为 new sheet
Sheet sheet = wb.createSheet("new sheet");
//Row 行
//Cell 方格
// Row 和 Cell 都是从0开始计数的

// 创建一行,在页sheet上
Row row = sheet.createRow((short) 0);
// 在row行上创建一个方格
Cell cell = row.createCell(0);
//设置方格的显示
cell.setCellValue(1);

// Or do it on one line.
row.createCell(1).setCellValue(1.2);
row.createCell(2).setCellValue("This is a string 速度反馈链接");
row.createCell(3).setCellValue(true);

//创建一个文件 命名为workbook.xls
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
// 把上面创建的工作簿输出e799bee5baa6e59b9ee7ad94363到文件中
wb.write(fileOut);
//关闭输出流
fileOut.close();
}

//使用POI读入excel工作簿文件
public static void readWorkBook() throws Exception {
// poi读取excel
//创建要读入的文件的输入流
InputStream inp = new FileInputStream("workbook.xls");

//根据上述创建的输入流 创建工作簿对象
Workbook wb = WorkbookFactory.create(inp);
//得到第一页 sheet
//页Sheet是从0开始索引的
Sheet sheet = wb.getSheetAt(0);
//利用foreach循环 遍历sheet中的所有行
for (Row row : sheet) {
//遍历row中的所有方格
for (Cell cell : row) {
//输出方格中的内容,以空格间隔
System.out.print(cell.toString() + " ");
}
//每一个行输出之后换行
System.out.println();
}
//关闭输入流
inp.close();
}

public static void main(String[] args) throws Exception {
// POITest.createWorkBook();
POITest.readWorkBook();
}
}

POI是Apache下的一个项目,是用Java编写的开源框架,提供API供开发者直接操作Microsoft Office(Excel,Word,PowerPoint...)

POI为我们带来了什么?
在很多的企业当中,储蓄数据是使用Excel文档的,因为Excel文档的格式方便,也能套用公式,而企业程序是存储在数据库当中,这样就需要一种两者之间互相转换的方法,当企业刚开始使用信息化的管理系统时,也需要将Excel的数据录入到程序当中,这种需求是非常普遍的.

POI使用:
首先增加Maven的依赖

<!-- POI核心依赖 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.8</version>
</dependency>
<!-- 为POI支持Office Open XML -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.8</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>3.8</version>
</dependency>
<!-- 支持Word文档的操作 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>3.8</version>
</dependency>

以下为操作Excel的测试类

package com.accentrix.ray;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.junit.Before;
import org.junit.Test;

public class TestExcel {

private Workbook workbook;

/*
* 由于Excel当中的单元格Cell存在类型,若获取类型错误 就会产生错误,
* 所以通过此方法将Cell内容全部转换为String类型
*/
private String getCellValue(Cell cell) {
String str = null;
switch (cell.getCellType()) {
case Cell.CELL_TYPE_BLANK:
str = "";
break;
case Cell.CELL_TYPE_BOOLEAN:
str = String.valueOf(cell.getBooleanCellValue());
break;
case Cell.CELL_TYPE_FORMULA:
str = String.valueOf(cell.getCellFormula());
break;
case Cell.CELL_TYPE_NUMERIC:
str = String.valueOf(cell.getNumericCellValue());
break;
case Cell.CELL_TYPE_STRING:
str = String.valueOf(cell.getStringCellValue());
break;
default:
str = null;
break;
}
return str;
}

@Before
public void setUp() throws InvalidFormatException, IOException {
// 加载excel文件,自动判断是HSSF还是XSSF
workbook = WorkbookFactory.create(new File("E:/aaa.xls"));
}

/*
* 读取一个已存在的Excel
*/
@Test
public void testReadExcel() throws InvalidFormatException, IOException {

// 获取第一个工作目录,下标从0开始
Sheet sheet = workbook.getSheetAt(0);

// 获取该工作目录最后一行的行数
int lastRowNum = sheet.getLastRowNum();

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

// 获取下标为i的行
Row row = sheet.getRow(i);

// 获取该行单元格个数
int lastCellNum = row.getLastCellNum();

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

// 获取下标为j的单元格
Cell cell = row.getCell(j);

// 调用获取方法
String cellValue = this.getCellValue(cell);
}
}
}

/*
* 使用Foreach方式读取Excel
*/
@Test
public void testForeachReadExcel() {
// 根据sheet的名字获7a64e58685e5aeb9336
Sheet sheet = workbook.getSheet("test");

// 处了上面testReadExcel的方式读取以外,还支持foreach的方式读取
for (Row row : sheet) {
for (Cell cell : row) {
String cellValue = this.getCellValue(cell);
System.out.println(cellValue);
}
}
}

/*
* 创建简单的Excel
*/
@Test
public void testWriteExcel() throws IOException {
// 创建一个XSSF的Excel文件
workbook = new XSSFWorkbook();
FileOutputStream fos = new FileOutputStream("E:/test.xlsx");

// 创建名称为test的工作目录
Sheet sheet = workbook.createSheet("test");

/*
* 创建1个10行x10列的工作目录
*/
for (int i = 0; i < 10; i++) {
// 创建一行
Row row = sheet.createRow(i);
for (int j = 0; j < 10; j++) {
// 创建一个单元格
Cell cell = row.createCell(j);
// 设置单元格value
cell.setCellValue("test");

// 此处为设置Excel的样式,设置单元格内容居中,
// 但这样设置方式并不常用,请留意下面的方法
CellStyle cs = workbook.createCellStyle();
cs.setAlignment(CellStyle.ALIGN_CENTER);
cell.setCellStyle(cs);

}
}

// 将Excel写出到文件流
workbook.write(fos);
}
一般来说,需要性能的web 服务,用nginx 。如果不需要性能只求稳定,那就apache 吧。后者的各种功能模zhidao块实现得比前者,例如ssl 的模块就比前者好,可配置项多。
这里要注意一点,epoll(freebsd 上是 kqueue )网络IO 模型是nginx 处理性能高的根本理由,但并不是所有的情况下都是epoll 大获全胜的,如果本身提供静态服务的就只有寥寥几个文件,apache 的select 模型或许比epoll 更高性能。
当然,这只是根据网络IO 模型的原理作的一个假设,真正的应用还是需要实测了再说的。

ApachePOI是Apache软件基金会的开放源码函式库,POI提供API给Java程式对MicrosoftOffice格式档案读和写的功能。结构:HSSF-提供读写MicrosoftExcel格式档案的功能。XSSF-提供读写MicrosoftExcelOOXML格式档案的功能。HWPF-提供读写MicrosoftWord格式档案的功能。HSLF-提供读写MicrosoftPowerPoint格式档案的功能。HDGF-提供读写MicrosoftVisio格式档案的功能。创建Excel文档示例1将演示如何利用JakartaPOIAPI创建Excel文档。示例1程序如下:importorg.apache.poi.hssf.usermodel.HSSFWorkbook;importorg.apache.poi.hssf.usermodel.HSSFSheet;importorg.apache.poi.hssf.usermodel.HSSFRow;importorg.apache.poi.hssf.usermodel.HSSFCell;importjava.io.FileOutputStream;publicclassCreateXL{publicstaticStringoutputFile="D:\\test.xls";publicstaticvoidmain(Stringargv[]){try{//创建新的Excel工作簿HSSFWorkbookworkbook=newHSSFWorkbook();//在Excel工作簿中建一工作表,其名为缺省值//如要新建一名为"效益指标"的工作表,其语句为://HSSFSheetsheet=workbook.createSheet("效益指标");HSSFSheetsheet=workbook.createSheet();//在索引0的位置创建行(最顶端的行)HSSFRowrow=sheet.createRow((short)0);//在索引0的位置创建单元格(左上端)HSSFCellcell=row.createCell((short)0);//定义单元格为字符串类型cell.setCellType(HSSFCell.CELL_TYPE_STRING);//在单元格中输入一些内容cell.setCellValue("增加值");//新建一输出文件流FileOutputStreamfOut=newFileOutputStream(outputFile);//把相应的Excel工作簿存盘workbook.write(fOut);fOut.flush();//操作结束,关闭文件fOut.close();System.out.println("文件生成");}catch(Exceptione){System.out.println("已运行xlCreate():"+e);}}}读取Excel文档中的数据示例2将演示如何读取Excel文档中的数据。假定在e68a84e8a2ad7a64366D盘JTest目录下有一个文件名为test1.xls的Excel文件。示例2程序如下:importorg.apache.poi.hssf.usermodel.HSSFWorkbook;importorg.apache.poi.hssf.usermodel.HSSFSheet;importorg.apache.poi.hssf.usermodel.HSSFRow;importorg.apache.poi.hssf.usermodel.HSSFCell;importjava.io.FileInputStream;publicclassReadXL{publicstaticStringfileToBeRead="D:\\test1.xls";publicstaticvoidmain(Stringargv[]){try{//创建对Excel工作簿文件的引用HSSFWorkbookworkbook=newHSSFWorkbook(newFileInputStream(fileToBeRead));//创建对工作表的引用。//本例是按名引用(让我们假定那张表有着缺省名"Sheet1")HSSFSheetsheet=workbook.getSheet("Sheet1");//也可用getSheetAt(intindex)按索引引用,//在Excel文档中,第一张工作表的缺省索引是0,//其语句为:HSSFSheetsheet=workbook.getSheetAt(0);//读取左上端单元HSSFRowrow=sheet.getRow(0);HSSFCellcell=row.getCell((short)0);//输出单元内容,cell.getStringCellValue()就是取所在单元的值System.out.println("左上端单元是:"+cell.getStringCellValue());}catch(Exceptione){System.out.println("已运行xlRead():"+e);}}}设置单元格格式在这里,我们将只介绍一些和格式设置有关的语句,我们假定workbook就是对一个工作簿的引用。在Java中,第一步要做的就是创建和设置字体和单元格的格式,然后再应用这些格式:1、创建字体,设置其为红色、粗体:HSSFFontfont=workbook.createFont();font.setColor(HSSFFont.COLOR_RED);font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);2、创建格式HSSFCellStylecellStyle=workbook.createCellStyle();cellStyle.setFont(font);3、应用格式HSSFCellcell=row.createCell((short)0);cell.setCellStyle(cellStyle);cell.setCellType(HSSFCell.CELL_TYPE_STRING);cell.setCellValue("标题");处理WORD文档importjava.io.*;importorg.textmining.text.extraction.WordExtractor;importorg.apache.poi.hssf.usermodel.HSSFWorkbook;importorg.apache.poi.hssf.usermodel.HSSFSheet;importorg.apache.poi.hssf.usermodel.HSSFRow;importorg.apache.poi.hssf.usermodel.HSSFCell;publicclassTestPoi{publicTestPoi(){}publicstaticvoidmain(Stringargs[])throwsException{FileInputStreamin=newFileInputStream("D:\\a.doc");WordExtractorextractor=newWordExtractor();Stringstr=extractor.extractText(in);//System.out.println("theresultlengthis"+str.length());System.out.println(str);}}

相关阅读

  • <em>java</em> <em>poi</em> 怎么读取<e

  • 乔山办公网excel表格制作
  • 假设此合并单元格区域名为merged,那么 合并单元格的行数=merged.getLastRow()-merged.getFirstRow()JAVA利用poi如何向excel已合并的单元格中写入内容?" src="/uploads/tu/535.jpg" style="width: 400px;
关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网