poi 导出Excel 2003 和 2007 版本
packageutils;
importjava.io.OutputStream;
importorg.apache.poi.hssf.usermodel.HSSFCell;
importorg.apache.poi.hssf.usermodel.HSSFCellStyle;
importorg.apache.poi.hssf.usermodel.HSSFDataFormat;
importorg.apache.poi.hssf.usermodel.HSSFFont;
importorg.apache.poi.hssf.usermodel.HSSFRichTextString;
importorg.apache.poi.hssf.usermodel.HSSFRow;
importorg.apache.poi.hssf.usermodel.HSSFSheet;
importorg.apache.poi.hssf.usermodel.HSSFWorkbook;
importorg.apache.poi.ss.usermodel.Font;
importorg.apache.poi.xssf.usermodel.XSSFCell;
importorg.apache.poi.xssf.usermodel.XSSFCellStyle;
importorg.apache.poi.xssf.usermodel.XSSFDataFormat;
importorg.apache.poi.xssf.usermodel.XSSFFont;
importorg.apache.poi.xssf.usermodel.XSSFRichTextString;
importorg.apache.poi.xssf.usermodel.XSSFRow;
importorg.apache.poi.xssf.usermodel.XSSFSheet;
importorg.apache.poi.xssf.usermodel.XSSFWorkbook;
publicclassPoiExportExcel{
publicstaticvoidPoiWriteExcel_To2007(Stringtitle,String[][]head,String[][]body,OutputStreamos){
XSSFWorkbookxssf_w_book=newXSSFWorkbook();
XSSFSheetxssf_w_sheet=xssf_w_book.createSheet(title);
XSSFRowxssf_w_row=null;//创建一行
XSSFCellxssf_w_cell=null;//创建每个单元格
intcol_count=0;
introw_count=0;
row_count=body.length;
col_count=head.length;
XSSFCellStylehead_cellStyle=xssf_w_book.createCellStyle();//创建一个单元格样式
XSSFFonthead_font=xssf_w_book.createFont();
head_font.setFontName("宋体");//设置头部字体为宋体
head_font.setBoldweight(Font.BOLDWEIGHT_BOLD);//粗体
head_font.setFontHeightInPoints((short)12);
head_cellStyle.setFont(head_font);//单元格样式使用字体
inttitleRows=0;//标题占据的行数
xssf_w_row=xssf_w_sheet.createRow(0+titleRows);//第一行写入标题行
for(inti=0;i<col_count;i++){
xssf_w_cell=xssf_w_row.createCell((short)i);
Stringtype=head[i][2];
if(type==null){
type="";
}
elseif(type.equals("DATE")){
System.out.println("走格式化日期这步了");
XSSFDataFormathead_format=xssf_w_book.createDataFormat();
head_cellStyle.setDataFormat(head_format.getFormat("m/d/yy"));
xssf_w_cell.setCellType(XSSFCell.CELL_TYPE_STRING);
XSSFRichTextStringxssfString=newXSSFRichTextString(head[i][0]);
xssf_w_cell.setCellValue(xssfString);
xssf_w_cell.setCellStyle(head_cellStyle);
xssf_w_sheet.autoSizeColumn((short)i);
}else{
XSSFDataFormathead_format=xssf_w_book.createDataFormat();
head_cellStyle.setDataFormat(head_format.getFormat("@"));
xssf_w_cell.setCellType(XSSFCell.CELL_TYPE_STRING);
XSSFRichTextStringxssfString=newXSSFRichTextString(head[i][0]);
xssf_w_cell.setCellValue(xssfString);
xssf_w_cell.setCellStyle(head_cellStyle);
xssf_w_sheet.autoSizeColumn((short)i);
}
}
XSSFCellStylecellStyle_CN=xssf_w_book.createCellStyle();//创建数据单元格样式(数据库数据样式)
cellStyle_CN.setBorderBottom(XSSFCellStyle.BORDER_THIN);
cellStyle_CN.setBorderLeft(XSSFCellStyle.BORDER_THIN);
cellStyle_CN.setBorderRight(XSSFCellStyle.BORDER_THIN);
cellStyle_CN.setBorderTop(XSSFCellStyle.BORDER_THIN);
for(inti=1;i<=row_count;i++){
xssf_w_row=xssf_w_sheet.createRow(i+titleRows);
for(intj=0;j<col_count;j++){
Stringval=head[j][1];
xssf_w_cell=xssf_w_row.createCell((short)j);
if(val==null||val.trim().equals(""))
val="0";
Stringtype=head[j][2];
if(type==null)
type="";
//判断类型为数字类型
elseif(type.equals("NUM")){
xssf_w_cell.setCellType(XSSFCell.CELL_TYPE_STRING);
Stringvalue=body[i-1][Integer.parseInt(val)];
if(value==null||value.trim().equals(""))
value="0";
xssf_w_cell.setCellValue(Double.parseDouble(value));
}
//判断类型为日期类型
elseif(type.equals("DATE")){
xssf_w_cell.setCellType(XSSFCell.CELL_TYPE_STRING);//设置单元格为字符串类型
XSSFDataFormatformat=xssf_w_book.createDataFormat();
cellStyle_CN.setDataFormat(format.getFormat("yyyy/MM/dd"));
Stringvalue=body[i-1][Integer.parseInt(val)];
XSSFRichTextStringxssfString=newXSSFRichTextString(value);
xssf_w_cell.setCellStyle(cellStyle_CN);
xssf_w_cell.setCellValue(xssfString);
}else{
xssf_w_cell.setCellType(XSSFCell.CELL_TYPE_STRING);//设置单元格为字符串类型
Stringvalue=body[i-1][Integer.parseInt(val)];
if(value==null)
value="";
XSSFDataFormatformat=xssf_w_book.createDataFormat();
cellStyle_CN.setDataFormat(format.getFormat("@"));
xssf_w_cell.setCellStyle(cellStyle_CN);
XSSFRichTextStringxssfString=newXSSFRichTextString(value);
xssf_w_cell.setCellValue(xssfString);
}
}
}
try{
xssf_w_book.write(os);
os.flush();
os.close();
}
catch(Exceptione){
e.printStackTrace();
}
}
publicstaticvoidPoiWriteExcel_To2003(Stringtitle,String[][]head,String[][]body,OutputStreamos){
HSSFWorkbookhssf_w_wk=newHSSFWorkbook();//创建excel
HSSFSheethssf_w_s=hssf_w_wk.createSheet(title);//创建一个工作空间
HSSFRowhssf_w_r=null;//创建一行
HSSFCellhssf_w_c=null;//每个单元格
//填写内容
intcol_count=0;
introw_count=0;
row_count=body.length;
col_count=head.length;
HSSFCellStylecellStyle=hssf_w_wk.createCellStyle();
HSSFFontfont=hssf_w_wk.createFont();
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
font.setFontHeightInPoints((short)10);
font.setFontName("宋体");//设置标题字体
cellStyle.setFont(font);
//标题
inttitleRows=0;//标题占据的行数
hssf_w_r=hssf_w_s.createRow(0);
//第一行写入标题行
hssf_w_r=hssf_w_s.createRow(0+titleRows);
cellStyle=hssf_w_wk.createCellStyle();
cellStyle.setFont(font);//设置列标题样式
cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
for(inti=0;i<col_count;i++){
hssf_w_c=hssf_w_r.createCell((short)i);
Stringtype=head[i][2];
System.out.println("类型为"+type);
if(type==null){
type="";
}
elseif(type.equals("DATE")){
HSSFDataFormatformat1=hssf_w_wk.createDataFormat();
cellStyle.setDataFormat(format1.getFormat("m/d/yy"));
hssf_w_c.setCellType(HSSFCell.CELL_TYPE_STRING);
HSSFRichTextStringhssfString=newHSSFRichTextString(head[i][0]);
hssf_w_c.setCellValue(hssfString);
hssf_w_c.setCellStyle(cellStyle);
hssf_w_s.autoSizeColumn((short)i);
}else{
HSSFDataFormatformat=hssf_w_wk.createDataFormat();
cellStyle.setDataFormat(format.getFormat("@"));
hssf_w_c.setCellType(HSSFCell.CELL_TYPE_STRING);
HSSFRichTextStringhssfString=newHSSFRichTextString(head[i][0]);
hssf_w_c.setCellValue(hssfString);
hssf_w_c.setCellStyle(cellStyle);
hssf_w_s.autoSizeColumn((short)i);
}
}
//第二行开始写入数据
cellStyle=hssf_w_wk.createCellStyle();
cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
for(inti=1;i<=row_count;i++){
hssf_w_r=hssf_w_s.createRow(i+titleRows);
for(intj=0;j<col_count;j++){
Stringval=head[j][1];
hssf_w_c=hssf_w_r.createCell((short)j);
if(val==null||val.trim().equals(""))
val="0";
Stringtype=head[j][2];
if(type==null)
type="";
//判断类型为数字类型
elseif(type.equals("NUM")){
hssf_w_c.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
Stringvalue=body[i-1][Integer.parseInt(val)];
if(value==null||value.trim().equals(""))
value="0";
hssf_w_c.setCellValue(Double.parseDouble(value));
}
//判断类型为日期类型
elseif(type.equals("DATE")){
HSSFDataFormatformat1=hssf_w_wk.createDataFormat();
cellStyle.setDataFormat(format1.getFormat("yyyy/m/d/"));
Stringvalue=body[i-1][Integer.parseInt(val)];
HSSFRichTextStringhssfString=newHSSFRichTextString(value);
hssf_w_c.setCellStyle(cellStyle);
hssf_w_c.setCellValue(hssfString);
}else{
hssf_w_c.setCellType(HSSFCell.CELL_TYPE_STRING);
Stringvalue=body[i-1][Integer.parseInt(val)];
if(value==null)
value="";
HSSFDataFormatformat2=hssf_w_wk.createDataFormat();
cellStyle.setDataFormat(format2.getFormat("@"));
hssf_w_c.setCellStyle(cellStyle);
HSSFRichTextStringhssfString=newHSSFRichTextString(value);
hssf_w_c.setCellValue(hssfString);
}
}
}
try{
hssf_w_wk.write(os);
os.flush();
os.close();
}
catch(Exceptione){
e.printStackTrace();
}
}
}