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);
}


}

你可能感兴趣的:(java poi导入导出)