`
suoyihen
  • 浏览: 1356766 次
文章分类
社区版块
存档分类
最新评论

Java操作Excel文件基础--Java Excel API

 
阅读更多

Java Excel API是一个成熟的、开源的Java API,主页地址:http://jexcelapi.sourceforge.net/,通过它开发人员可以动态地读取、写入或者修改Excel文件。利用这些APIJava开发人员,可以非常轻松地完成Excel读取、写入和修改,并且可以把改动写入到任何输出流中(如磁盘、HTTP、socket和数据库等等)。由于Java Excel API是完全由Java编写的,所以它可以运行在任何可以运行Java虚拟机的操作系统上。它主要的特性包括:
1、读取操作支持的Excel版本包括95、97、2000、XP和2003
2、公式的读取和编写(支持97及以后版本)
3、支持字体、数字和日期的格式化
4、图形复制
5、支持单元格的阴影、边框和颜色的设置
6、国际化
7、支持图片的插入和复制
……
上面的列举的只是一部分功能,更多的介绍可以参考其主页上的说明。
下面通过一个示例介绍读、写和合并单元格的基本操作:

importjava.io.File;
importjava.io.FileOutputStream;
importjava.io.OutputStream;

importjxl.Workbook;
importjxl.format.Alignment;
importjxl.format.VerticalAlignment;
importjxl.write.Label;
importjxl.write.Number;
importjxl.write.WritableCellFormat;
importjxl.write.WritableFont;
importjxl.write.WritableSheet;
importjxl.write.WritableWorkbook;

publicclassExcelHandler...{
privateOutputStreamreportOS;
//表头的字体格式,字体、大小和样式
privatefinalstaticWritableFontHEADER_FONT_STYLE=newWritableFont(
WritableFont.TIMES,
12,WritableFont.BOLD);
//内容的字体格式
privatefinalstaticWritableCellFormatBODY_FONT_STYLE=newWritableCellFormat(
newWritableFont(WritableFont.TIMES,
WritableFont.DEFAULT_POINT_SIZE));

publicExcelHandler(StringfilePath)...{
try...{
Filefile
=newFile(filePath);
if(!file.exists())...{
file.createNewFile();
}

this.reportOS=newFileOutputStream(filePath);
}
catch(Exceptione)...{

}

}


publicvoidgetExcelReport()...{
try...{
//创建WorkBook
WritableWorkbookworkBook=Workbook.createWorkbook(this.reportOS);
//创建Sheet(工作表)
WritableSheetsheet=workBook.createSheet("report",0);

//写表头
writeReportHeader(sheet);
//写内容
writeReportBody(sheet);

//写入内容
workBook.write();
//关闭
workBook.close();

reportOS.close();
}
catch(Exceptione)...{
e.printStackTrace();
}

}


privatevoidwriteReportHeader(WritableSheetsheet)...{
try...{
//创建表头的单元格格式
WritableCellFormatheaderFormat=newWritableCellFormat(
HEADER_FONT_STYLE);
//水平居中对齐
headerFormat.setAlignment(Alignment.CENTRE);
//竖直方向居中对齐
headerFormat.setVerticalAlignment(VerticalAlignment.CENTRE);

//建立标签,参数依次为:列索引、行索引、内容、格式
LabelseqLabel=newLabel(0,0,"序号",headerFormat);
//增加单元格
sheet.addCell(seqLabel);
//合并单元格,参数依次为:列索引、行索引、列索引+需要合并的列的个数、行索引+需要合并的行的个数
sheet.mergeCells(0,0,0,1);
//设置单元格宽度,以字符为单位
sheet.setColumnView(0,"序号".length()+10);

LabelbasicInfoLabel
=newLabel(1,0,"基本信息",headerFormat);
sheet.addCell(basicInfoLabel);
sheet.mergeCells(
1,0,3,0);

LabelnameLabel
=newLabel(1,1,"姓名",headerFormat);
sheet.addCell(nameLabel);
sheet.setColumnView(
0,"姓名".length()+10);

LabelageLabel
=newLabel(2,1,"年龄",headerFormat);
sheet.addCell(ageLabel);
sheet.setColumnView(
0,"年龄".length()+10);

LabelheightLabel
=newLabel(3,1,"身高",headerFormat);
sheet.addCell(heightLabel);
sheet.setColumnView(
0,"身高".length()+10);


}
catch(Exceptione)...{
e.printStackTrace();
}

}


privatevoidwriteReportBody(WritableSheetsheet)...{
try...{
//单元格内容位数字
Numberseq=newNumber(0,2,Double
.parseDouble(
"0"));
sheet.addCell(seq);

Labellabel
=newLabel(1,2,"张三",BODY_FONT_STYLE);
sheet.addCell(label);

Numberage
=newNumber(2,2,Double
.parseDouble(
"18"));
sheet.addCell(age);

Numberheight
=newNumber(3,2,Double
.parseDouble(
"183"));
sheet.addCell(height);

}
catch(Exceptione)...{
e.printStackTrace();
}

}


publicstaticvoidmain(String[]args)...{
ExcelHandlerhandler
=newExcelHandler("c:/test.xls");
handler.getExcelReport();
}


}

下面是运行结果:
运行结果
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics