java 导出导入poi_java poi导入导出

package

IO.file;

/**

* 所需jar包从 http://apache.mirror.phpchina.com/poi/release/bin/下载

*

*

*

* 一个Excel文档从大到小可以分成如下几个要素:工作簿、工作表、行、单元格,在poi的类库中用不同的类描述。

*

*

org.apache.poi.hssh.usernodel.HSSFWorkbook表示一个Excel文档。它的createSheet()方法为文档

*

创建新工作表;getSheet()方法获取工作簿的工作表;write()方法将文档对象保存到文件中。

*

*

org.apache.poi.hssf.usermodel.HSSFSheet表示Excel文档中的工作表,它的createRow()方法为当前

*

工作表创建新行,getRow()方法获得当前工作表的某行。

*

*

org.apache.poi.hssf.usermodel.HSSFRow表示Excel文档中的行,它的createCell()方法为当前行创建

*

一个单元格,getCell()方法获得当前行的某单元格。

*

*

org.apache.poi.hssf.usermodel.HSSFCell表示Excel文档中的单元格,它的setCellType()方法设置单元格

*

的字符类型,如日期类型、数字类型等;setEncoding()方法设置单元格的字符编码方式;setCellStyle()设置单元格

*

的格式,如字体、居中对齐等;setCellValue()方法设置单元格的值。

*

*/

import

java.io.File;

import java.io.FileInputStream;

import

java.io.FileNotFoundException;

import

java.io.FileOutputStream;

import java.io.IOException;

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.Region;

public class ExcelFile {

public void writeExcel(String fileName)

{

// 目标文件

File file = new File(fileName);

FileOutputStream fOut =

null;

// 创建excel工作簿

HSSFWorkbook workbook = new HSSFWorkbook();

//

在excel工作簿中创建一个工作表,其名是默认

// 也可以指定工作表的名字

HSSFSheet sheet =

workbook.createSheet("Test_Table");

// 创建字体,红色、粗体

HSSFFont font =

workbook.createFont();

font.setColor(HSSFFont.COLOR_RED);

font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);

// 设置字体

HSSFFont font = workbook.createFont();

font.setFontHeightInPoints(( short ) 20 ); // 字体高度

font.setColor(HSSFFont.COLOR_RED); // 字体颜色

font.setFontName( " 黑体 " );

// 字体

font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); // 宽度

font.setItalic( true ); // 是否使用斜体

font.setStrikeout(true); // 是否使用划线

// 设置单元格类型

HSSFCellStyle cellStyle = workbook.createCellStyle();

cellStyle.setFont(font);

cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水平布局:居中

cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

//垂直居中

cellStyle.setWrapText( true );

// 添加单元格注释

// 创建HSSFPatriarch对象,HSSFPatriarch是所有注释的容器.

HSSFPatriarch patr =

sheet.createDrawingPatriarch();

// 定义注释的大小和位置,详见文档

HSSFComment comment =

patr.createComment( new HSSFClientAnchor( 0 , 0 , 0 , 0 , ( short ) 4 , 2 , (

short ) 6 , 5 ));

// 设置注释内容

comment.setString( new HSSFRichTextString( "

可以在POI中添加注释! " ));

// 设置注释作者. 当鼠标移动到单元格上是可以在状态栏中看到该内容.

comment.setAuthor( " Xuys. " );

// 创建单元格

HSSFCell cell =

row.createCell(( short ) 1 );

HSSFRichTextString hssfString = new

HSSFRichTextString( " Hello World! " );

cell.setCellValue(hssfString); //

设置单元格内容

cell.setCellStyle(cellStyle); // 设置单元格样式

cell.setCellType(HSSFCell.CELL_TYPE_STRING); // 指定单元格格式:数值、公式或字符串

cell.setCellComment(comment); // 添加注释

// 格式化数据

row =

sheet.createRow(( short ) 2 );

cell = row.createCell(( short ) 2 );

cell.setCellValue( 11111.25 );

cellStyle = workbook.createCellStyle();

cellStyle.setDataFormat(format.getFormat( " 0.0 " ));

cell.setCellStyle(cellStyle);

row = sheet.createRow(( short ) 3 );

cell = row.createCell(( short ) 3 );

cell.setCellValue( 9736279.073 );

cellStyle = workbook.createCellStyle();

cellStyle.setDataFormat(format.getFormat( " #,##0.0000 " ));

cell.setCellStyle(cellStyle);

sheet.autoSizeColumn(( short ) 0

); // 调整第一列宽度

sheet.autoSizeColumn(( short ) 1 ); // 调整第二列宽度

sheet.autoSizeColumn(( short ) 2 ); // 调整第三列宽度

sheet.autoSizeColumn((

short ) 3 ); // 调整第四列宽度

// 创建单元格的格式,如居中、左对齐等

HSSFCellStyle cellStyle

= workbook.createCellStyle();

//

水平方向居中对齐

cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);

//

垂直方向居中对齐

cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

//

设置字体

cellStyle.setFont(font);

// 下面将建立一个4行3列的表,第一行是表头

int rowNum =

0; // 行标

int colNum = 0; // 列标

// 设置表头信息

HSSFRow row =

sheet.createRow(rowNum);

HSSFCell cell = null; // 创建单元格

for(colNum =

0; colNum < 5; colNum++) {

// 在当前行的colNum列上创建单元格

cell =

row.createCell((short)colNum);

//

定义单元格为字符类型,也可以指定为日期类型、数字类型等

cell.setCellType(HSSFCell.CELL_TYPE_STRING);

//

定义编码方面,为了支持中文,这里使用utf-16

cell.setEncoding(HSSFCell.ENCODING_UTF_16);

cell.setCellStyle(cellStyle);

cell.setCellValue("表头名"

+ colNum);

}

rowNum++;

for(; rowNum < 5; rowNum++) {

//

新建第rowNum行

row = sheet.createRow(rowNum);

for(colNum = 0; colNum < 5;

colNum++) {

cell =

row.createCell((short)colNum);

cell.setEncoding(HSSFCell.ENCODING_UTF_16);

cell.setCellStyle(cellStyle);

cell.setCellValue("值-"

+ rowNum + "-" + colNum);

}

}

// 合并单元格

//

先创建2行5列的单元格,然后将这些单元格合并成2个大的单元格

rowNum = 5;

for(; rowNum < 7; rowNum++)

{

row = sheet.createRow((short)rowNum);

for(colNum = 0; colNum < 5;

colNum++)

cell = row.createCell((short)colNum);

}

//

建立第一个大单元格,高度是2,宽度也是2

rowNum = 5;

colNum = 0;

Region region = new

Region(rowNum, (short)colNum, (rowNum + 1), (short)(colNum +

1));

sheet.addMergedRegion(region);

// 获得第一个大单元格

cell =

sheet.getRow(rowNum).createCell((short)colNum);

cell.setEncoding(HSSFCell.ENCODING_UTF_16);

cell.setCellStyle(cellStyle);

cell.setCellValue("第一个大单元格");

//

建立第二个大单元格,高度是2,宽度是3

colNum = 2;

region = new Region(rowNum, (short)colNum,

(rowNum + 1), (short)(colNum + 2));

sheet.addMergedRegion(region);

//

获得第二个大单元格

cell =

sheet.getRow(rowNum).createCell((short)colNum);

cell.setEncoding(HSSFCell.ENCODING_UTF_16);

cell.setCellStyle(cellStyle);

cell.setCellValue("第二个大单元格");

//

工作簿建立完成,下面将工作簿存入文件

// 建立一个文件输出流

try {

fOut = new

FileOutputStream(file);

workbook.write(fOut);

fOut.flush();

System.out.println("Excel文件生成成功!文件名:"

+ file.getAbsolutePath());

} catch (FileNotFoundException e)

{

e.printStackTrace();

} catch (IOException e)

{

e.printStackTrace();

} finally {

try {

if (fOut !=

null)

fOut.close();

} catch (IOException e)

{

e.printStackTrace();

}

}

}

public void readExcel(String

fileName) {

File file = new File(fileName);

FileInputStream in =

null;

try {

// 创建Excel工作簿文件的引用

in = new

FileInputStream(file);

HSSFWorkbook workbook = new

HSSFWorkbook(in);

// 创建对工作表的引用

// 这里使用按名引用

HSSFSheet sheet =

workbook.getSheet("Test_Table");

// 也可以使用getSheetAt(int index)按索引引用

//

在Excel文档中,第一张工作表的默认引用是0,其语句是

// HSSFSheet sheet =

workbook.getSheetAt(0);

HSSFRow row = null;

HSSFCell cell =

null;

int rowNum = 0;

int colNum = 0;

for(; rowNum < 5; rowNum++)

{

row = sheet.getRow(rowNum);

for(colNum = 0; colNum < 5; colNum++)

{

cell = row.getCell(colNum);

System.out.print(cell.getStringCellValue() +

"\t");

}

System.out.println();

}

} catch (FileNotFoundException e)

{

e.printStackTrace();

} catch (IOException e)

{

e.printStackTrace();

} finally {

try {

if (in !=

null)

in.close();

} catch (IOException e)

{

e.printStackTrace();

}

}

}

public static void main(String[]

args) {

ExcelFile excel = new ExcelFile();

String fileName =

"c:/temp.xls";

excel.writeExcel(fileName);

excel.readExcel(fileName);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值