`

poi 导出Excel 2003 和 2007 版本

 
阅读更多
package utils;
import java.io.OutputStream;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
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.ss.usermodel.Font;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFDataFormat;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFRichTextString;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class PoiExportExcel {



public static void PoiWriteExcel_To2007(String title, String[][] head,String[][]body, OutputStream os){

XSSFWorkbook xssf_w_book=new XSSFWorkbook();
XSSFSheet  xssf_w_sheet=xssf_w_book.createSheet(title);
XSSFRow xssf_w_row=null;//创建一行
XSSFCell xssf_w_cell=null;//创建每个单元格
int col_count = 0;
int row_count = 0;
  row_count = body.length;
col_count = head.length;


XSSFCellStyle head_cellStyle=xssf_w_book.createCellStyle();//创建一个单元格样式
XSSFFont  head_font=xssf_w_book.createFont();
head_font.setFontName("宋体");//设置头部字体为宋体
head_font.setBoldweight(Font.BOLDWEIGHT_BOLD); //粗体
head_font.setFontHeightInPoints((short) 12);
head_cellStyle.setFont(head_font);//单元格样式使用字体





    int titleRows = 0; //标题占据的行数
    xssf_w_row=xssf_w_sheet.createRow(0+titleRows);//第一行写入标题行
  for(int i = 0; i < col_count; i++){
   xssf_w_cell = xssf_w_row.createCell((short)i);  
 
   String type=head[i][2];

   if(type==null){
    type="";
   }
   else if(type.equals("DATE")){
                     System.out.println("走格式化日期这步了");
        XSSFDataFormat  head_format=xssf_w_book.createDataFormat();
        head_cellStyle.setDataFormat(head_format.getFormat("m/d/yy"));
        xssf_w_cell.setCellType(XSSFCell.CELL_TYPE_STRING);
        XSSFRichTextString xssfString =new XSSFRichTextString(head[i][0]);
     xssf_w_cell.setCellValue(xssfString);
     xssf_w_cell.setCellStyle(head_cellStyle);
     xssf_w_sheet.autoSizeColumn((short)i);
      }else{
           XSSFDataFormat  head_format=xssf_w_book.createDataFormat();
           head_cellStyle.setDataFormat(head_format.getFormat("@")); 
        xssf_w_cell.setCellType(XSSFCell.CELL_TYPE_STRING);
        XSSFRichTextString xssfString =new XSSFRichTextString(head[i][0]);
     xssf_w_cell.setCellValue(xssfString);
     xssf_w_cell.setCellStyle(head_cellStyle);
     xssf_w_sheet.autoSizeColumn((short)i);
      }
  }

 
 
  
  XSSFCellStyle cellStyle_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(int i = 1; i <= row_count; i++){
   xssf_w_row = xssf_w_sheet.createRow(i+titleRows);
  
   for(int j = 0; j < col_count; j++){
    String val=head[j][1];
    xssf_w_cell = xssf_w_row.createCell((short)j);
       if(val==null || val.trim().equals(""))
       val="0";
    
       String type=head[j][2];
    
       if(type==null)
       type="";
       //判断类型为数字类型
       else if(type.equals("NUM")){
            xssf_w_cell.setCellType(XSSFCell.CELL_TYPE_STRING);
         String value=body[i-1][Integer.parseInt(val)];
       if(value==null || value.trim().equals(""))
         value="0";
       xssf_w_cell.setCellValue(Double.parseDouble(value));
       }
       //判断类型为日期类型
       else if(type.equals("DATE")){
          xssf_w_cell.setCellType(XSSFCell.CELL_TYPE_STRING);//设置单元格为字符串类型
          XSSFDataFormat  format=xssf_w_book.createDataFormat();
          cellStyle_CN.setDataFormat(format.getFormat("yyyy/MM/dd"));       
          String value=body[i-1][Integer.parseInt(val)];
          XSSFRichTextString xssfString =new XSSFRichTextString(value);
          xssf_w_cell.setCellStyle(cellStyle_CN);
          xssf_w_cell.setCellValue(xssfString);
       
       }else{
          xssf_w_cell.setCellType(XSSFCell.CELL_TYPE_STRING);//设置单元格为字符串类型
       
           String value=body[i-1][Integer.parseInt(val)];
         if(value==null )
               value="";
               XSSFDataFormat  format=xssf_w_book.createDataFormat();
               cellStyle_CN.setDataFormat(format.getFormat("@"));
         xssf_w_cell.setCellStyle(cellStyle_CN);
         XSSFRichTextString xssfString =new XSSFRichTextString(value);
            xssf_w_cell.setCellValue(xssfString);
       }
   
  
   }
 
  }
 
 
 
  try{
   xssf_w_book.write(os);
   os.flush();
   os.close();
  
  }
  catch(Exception e){
   e.printStackTrace();
  }

}


public static void PoiWriteExcel_To2003(String title, String[][] head, String[][] body, OutputStream os){
  HSSFWorkbook hssf_w_wk = new HSSFWorkbook();//创建excel
  HSSFSheet hssf_w_s = hssf_w_wk.createSheet(title);//创建一个工作空间
  HSSFRow hssf_w_r = null;//创建一行
  HSSFCell hssf_w_c = null;//每个单元格
  //填写内容
  int col_count = 0;
  int row_count = 0;
  row_count = body.length;
  col_count = head.length;
 
  HSSFCellStyle cellStyle = hssf_w_wk.createCellStyle();
  HSSFFont font = hssf_w_wk.createFont();
  font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
   font.setFontHeightInPoints((short) 10); 
   font.setFontName("宋体");//设置标题字体
  cellStyle.setFont(font);
 
//标题
  int titleRows = 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(int i = 0; i < col_count; i++){
   hssf_w_c = hssf_w_r.createCell((short)i);  
   String type=head[i][2];
   System.out.println("类型为"+type);
   if(type==null){
    type="";
   }
   else if(type.equals("DATE")){
    HSSFDataFormat format1= hssf_w_wk.createDataFormat();
         cellStyle.setDataFormat(format1.getFormat("m/d/yy"));
         hssf_w_c.setCellType(HSSFCell.CELL_TYPE_STRING); 
    HSSFRichTextString hssfString = new HSSFRichTextString(head[i][0]); 
    hssf_w_c.setCellValue(hssfString);
    hssf_w_c.setCellStyle(cellStyle);
    hssf_w_s.autoSizeColumn((short)i);  
      }else{
           HSSFDataFormat format = hssf_w_wk.createDataFormat(); 
        cellStyle.setDataFormat(format.getFormat("@")); 
     hssf_w_c.setCellType(HSSFCell.CELL_TYPE_STRING);
     HSSFRichTextString hssfString = new HSSFRichTextString(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(int i = 1; i <= row_count; i++){
   hssf_w_r = hssf_w_s.createRow(i+titleRows);
  
   for(int j = 0; j < col_count; j++){
    String val=head[j][1];
    hssf_w_c = hssf_w_r.createCell((short)j);
       if(val==null || val.trim().equals(""))
       val="0";
    
       String type=head[j][2];
    
       if(type==null)
       type="";
       //判断类型为数字类型
       else if(type.equals("NUM")){
         hssf_w_c.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
         String value=body[i-1][Integer.parseInt(val)];
       if(value==null || value.trim().equals(""))
         value="0";
         hssf_w_c.setCellValue(Double.parseDouble(value));
       }
       //判断类型为日期类型
       else if(type.equals("DATE")){
        HSSFDataFormat format1= hssf_w_wk.createDataFormat();
          cellStyle.setDataFormat(format1.getFormat("yyyy/m/d/"));    
        String value=body[i-1][Integer.parseInt(val)];
        HSSFRichTextString hssfString = new HSSFRichTextString(value);    
        hssf_w_c.setCellStyle(cellStyle);
        hssf_w_c.setCellValue(hssfString);
       }else{
           hssf_w_c.setCellType(HSSFCell.CELL_TYPE_STRING);
           String value=body[i-1][Integer.parseInt(val)];
         if(value==null )
              value="";
               HSSFDataFormat format2 = hssf_w_wk.createDataFormat(); 
         cellStyle.setDataFormat(format2.getFormat("@"));
         hssf_w_c.setCellStyle(cellStyle);
            HSSFRichTextString hssfString = new HSSFRichTextString(value);
      hssf_w_c.setCellValue(hssfString);
       } 
   }
  }
  try{
   hssf_w_wk.write(os);
   os.flush();
   os.close();
  
  }
  catch(Exception e){
   e.printStackTrace();
  }

}

}
分享到:
评论

相关推荐

    POI导出Excel文件

    以下是一个简化的示例,演示了如何使用POI导出Excel: ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.FileOutputStream; import java.io....

    java使用POI导出 Excel工具类

    java使用POI导出 Excel+图片工具类 ,里面含有poi jar包,只调用接口即可直接保存Excel。使用的时候需先把数据封装,具体包装需根据实际导出数据进行处理。文件demo中只提供包装格式。

    poi导出根据模板导出excel和简单列表导出excel源码

    对于 Excel,它支持 HSSF(Horrible Spreadsheet Format)用于处理 .xls 文件(Excel 97-2007 格式),以及 XSSF(XML Spreadsheet Format)用于处理 .xlsx 文件(Excel 2007 及更高版本格式)。这两个接口允许...

    POI导出Excel表格

    在这个“POI导出Excel表格”的实例中,我们将深入探讨如何利用Apache POI进行Excel文件的导入与导出操作。 首先,我们需要在项目中集成Apache POI库。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```...

    POI导出 POI导出 POI导出

    POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI...

    POI 生成EXCEL2007【含例子】

    标题 "POI 生成EXCEL2007【含例子】" 涉及到的知识点主要集中在Apache POI库的使用上,这是一个强大的Java API,用于读取、写入和修改Microsoft Office格式的文件,特别是Excel文件。在这个场景中,重点是创建和操作...

    java poi导出excel

    以上就是使用Java POI导出Excel的基本步骤。你可以根据实际需求调整代码,例如添加数据遍历、样式设置、图表生成等功能。确保正确管理资源,避免内存泄漏,特别是在服务器端处理大量数据时。记得在完成后关闭工作簿...

    poi导出excel需要的jar

    "poi导出excel需要的jar"指的是在使用Apache POI进行Excel导出时,你需要包含特定的JAR依赖文件。 首先,要实现POI导出Excel的功能,你需要下载Apache POI相关的JAR文件。这些文件通常包括以下核心组件: 1. **poi...

    poi导出excel生成下拉列表

    poi作为导出excel常用的工具,方便快捷。对于excel指定下拉列表的列,如何生成呢?本文提供如何生成下拉列表的excel列

    Java实现POI导出Excel

    Java实现POI导出Excel是Java开发者常用的一种技术,用于生成和操作Microsoft Office Excel文件。在Java中,Apache POI库提供了对微软Office文档格式的支持,包括读取和写入Excel文件。这篇博客文章...

    poi导出excel表格

    本教程将详细讲解如何使用Apache POI在Web环境中导出Excel表格,避免生成不必要的临时文件,从而优化系统资源管理。 一、Apache POI简介 Apache POI 是一个开源项目,它提供了Java API来处理Microsoft的Office格式...

    POI的EXCEL导出,自动换行

    通过以上步骤,我们成功地实现了使用Apache POI在Java中导出Excel文件,并实现了自动换行的功能。这种方式不仅可以提高工作效率,还能确保数据的准确性和完整性。 #### 六、注意事项与优化建议 - **兼容性问题**:...

    springboot+poi导出指定格式Excel模板

    springboot+poi导出指定格式Excel模板,完整项目,导出即用。springboot+poi导出指定格式Excel模板,完整项目,导出即用。springboot+poi导出指定格式Excel模板,完整项目,导出即用。springboot+poi导出指定格式...

    poi导出excel参考方法

    POI导出Excel参考方法 POI(Poor Obfuscation Implementation)是一个Java的API,用于操作Microsoft Office文档,包括Excel、Word、PowerPoint等。下面是POI导出Excel参考方法的相关知识点: 1. POI的基本概念 ...

    基于SpringBoot和POI实现单线程和多线程导出Excel.zip

    基于SpringBoot和POI实现单线程和多线程导出Excel.zip基于SpringBoot和POI实现单线程和多线程导出Excel.zip基于SpringBoot和POI实现单线程和多线程导出Excel.zip基于SpringBoot和POI实现单线程和多线程导出Excel.zip...

    java导出excel POI jar包

    这个链接提供了一个详细的Java代码示例,演示了如何使用POI导出Excel。在实际开发中,你可以根据这个示例调整代码以满足自己的需求,比如添加更多的数据处理逻辑或自定义样式。记得在导入项目时,确保包含上述提到的...

    使用POI,实现excel文件导出,图片url导出文件,图片和excel文件导出压缩包

    使用POI导出Excel文件** 导出Excel文件主要涉及以下几个步骤: - **创建Workbook对象**:这是Excel文件的容器,可以使用`XSSFWorkbook`(针对.xlsx)或`HSSFWorkbook`(针对.xls)创建。 - **创建Sheet对象**:...

    poi导出excel demo

    在本示例中,"poi导出excel demo"指的是使用Apache POI库创建和导出Excel文件的演示。这个项目可能包含了一个或多个Java源代码文件,展示了如何使用POI API来生成Excel工作簿、工作表、单元格等内容。 Apache POI ...

    使用POI导入导出Excel2003、2007poi jar包文件

    在这个场景中,我们关注的是如何使用POI库来导入和导出Excel 2003及2007版本的数据。以下是对POI库以及相关jar包的详细解释: 1. **Apache POI**:这是由Apache软件基金会开发的一个Java库,它允许Java应用程序创建...

Global site tag (gtag.js) - Google Analytics