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;
php
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;java
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);node
// 設置字體
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); // 水平佈局:居中apache
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);
}ssh
}佈局