poi操作Excel
1.简介
通过HSSF(Horrible SpreadSheet Format),可以用纯Java代码来读取、写入、修改Excel文件。
HSSF两个API:usermodel和eventusermodel ,用户模型和事件-用户模型。
2.Excel结构
HSSFWorkbook excell的文档对象 HSSFDataFormat 日期格式
HSSFSheet excell的表单 HSSFCellStyle cell样式
HSSFRow excell的行 HSSFDateUtil 日期
HSSFCell excell的格子单元 HSSFPrintSetup 打印
HSSFFont excell字体 HSSFErrorConstants 错误信息表
HSSFName 名称
3.操作
(1) 利用poi把数据库中的数据导入到Excel中
String sql ="select * from stu" ;
// 获得结果集rs,conn就不用说了
ResultSet rs = conn.createPreparedStatement().executeQuery(sql) ;
// 结果集的总列数
int CountColumnNum = rs.getMetaData().getColumnCount() ;
// 对应数据库表的标题行
String lieNames[]={"id","name","sex","age","class"};
// 创建Excel文档
HSSFWorkbook wb = new HSSFWorkbook() ;
// sheet 对应一个sheet1表
HSSFSheet sheet = wb.createSheet("sheet1") ;
// 设置excel表中的样式1
HSSFCellStyle headCellStyle = wb.createCellStyle();
headCellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
headCellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
headCellStyle.setWrapText(true);
// 设置excel表中的字体
HSSFFont font = wb.createFont();
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
headCellStyle.setFont(font);
// 设置excel表中的样式2
HSSFCellStyle cellStyle = wb.createCellStyle();
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
cellStyle.setWrapText(true);
if(int hang = 0; hang < rs.size();hang ++){
// 声明一个新行
HSSFRow row = sheet.createRow((short) hang);
if(hang == 0){
for(int lie = 0;lie < CountColumnNum; lie ++){
// 声明一个单元格
HSSFCell cell = row.createCell((short) lie);
// 为该单元格设置值
cell.setCellValue(new HSSFRichTextString(lieNames[lie]));
// 把样式1加入到列表头
cell.setCellStyle(headCellStyle);
}
} else {
for(int j = 0;j < CountColumnNum; j++) {
HSSFCell cell = row.createCell((short) j);
cell.setCellValue(new HSSFRichTextString(rs.getString(j+1)));
// 把样式2加入到数据中
cell.setCellStyle(cellStyle);
}
}
// 创建文件输出流,输出Excel表格
OutputStream out = new FileOutputStream("D:\\stu.xls") ;
wb.write(out) ;
out.close() ;
rs.close();
conn.close();
}
(2)操作日期格式:
DataFormat df = wb.createDataFormat();
cellStyle.setDataFormat(df.getFormat("#,##0.0"));
(3)Excel版本03/07操作
Workbook wb= null;
try {
wb= new XSSFWorkbook(filePath); //支持2007
} catch (Exception ex) {
wb= new HSSFWorkbook(new FileInputStream(filePath)); //支持2003及以前
}
保存操作:07的后缀是xlsx
String filename = "d://workbook.xls";
if (wb instanceof XSSFWorkbook) {
filename = filename + "x";
}
(4)读取Excel时:
wb.getNumberOfSheets(); // 获得Excel中工作表个数
sheet.getPhysicalNumberOfRows(); // 获得行数
row.getLastCellNum();// 获得行的列数
(5)别的读取、写入Excel操作
//读取时,先获得一个Excel文件输入流
POIFSFileSystem fs=new POIFSFileSystem(new FileInputStream("d:/workbook.xls"));
HSSFWorkbook wb = new HSSFWorkbook(fs);
// 创建文件输出流,输出Excel表格保存在D:\\stu.xls
OutputStream out = new FileOutputStream("D:\\stu.xls") ;
上一篇: POI操作Excel总结
下一篇: apache POI 操作 Excel
推荐阅读
-
MATLAB怎么读取excel文件中的数据?
-
Wing FTP Server(FTP服务器管理软件)英文版使用方法(操作步骤)
-
outlook怎么导入联系人?导入excel表格中的联系人的教程
-
QQ会员免费领7天好莱坞会员活动又可以领取了 附操作方法
-
使用 Excel Services ,结合 Analysis Services 在 SharePoint 中发布报表
-
Excel Services OverView系列2 使用Excel Web Access技术在线浏览Excel工作薄
-
图解SSIS批量导入Excel文件的实现方法
-
深入SQL SERVER合并相关操作Union,Except,Intersect的详解
-
Oracle 数据库操作类
-
Excel VBA连接并操作Oracle