快捷搜索:  汽车  科技

用poi把数据导出excel(java导出excel之使用poi)

用poi把数据导出excel(java导出excel之使用poi)HPSF (属性设置格式) : 它用来提取MS-Office文件属性设置。XSSF (XML格式) : 它是用于MS-Excel中XLSX文件格式。Apache POI包含类和方法,来将MS Office所有OLE 2文档复合。此API组件的列表如下。POIFS (较差混淆技术实现文件系统) : 此组件是所有其他POI元件的基本因素。它被用来明确地读取不同的文件。HSSF (电子表格格式) : 它被用来读取和写入MS-Excel文件的xls格式。

很多时候,一个软件应用程序需要生成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扩展名的文件。

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把数据导出excel(java导出excel之使用poi)(1)

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

猜您喜欢: