`

java 利用poi生成Excel文件

 
阅读更多
此文件已经通过测试 OK, 需要poi-3.7-20101029.jar 等日志Jar包
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.List;

import org.apache.log4j.Logger;
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.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.hssf.util.HSSFColor;
import org.apache.poi.hssf.util.Region;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;

public class ExportExcelUtil {
 private static Logger logger = Logger.getLogger(ExportExcelUtil.class);
 
 private HSSFWorkbook workbook = null;
 @SuppressWarnings("unused")
 private HSSFSheet sheet = null;
 
 public HSSFWorkbook getWorkbook() {
  return workbook;
 }

 public void setWorkbook(HSSFWorkbook workbook) {
  this.workbook = workbook;
 }

// public HSSFSheet getSheet() {
//  return sheet;
// }

// public void setSheet(HSSFSheet sheet) {
//  this.sheet = sheet;
// }
    
 public ExportExcelUtil(HSSFWorkbook workbook){
     this.workbook = workbook;
 }
 
 public ExportExcelUtil(HSSFWorkbook workbook, HSSFSheet sheet) {
  super();
  this.workbook = workbook;
  this.sheet = sheet;
 }
 
 /**
     * 创建通用的Excel空白行信息
     * @param workbook 如果为空 则没有样式
     * @param sheet (创建sheet)
     * @param rowNO 报表的单行行号(创建第几行)
     * @param rowHeight 报表的单行行高
     * @param colNum 报表的总列数 (合并)
     */
 public void createExcelRow(HSSFWorkbook workbook, HSSFSheet sheet, int rowNO, int rowHeight, int colNum) {
  createExcelRow(workbook, sheet, rowNO, -1, colNum, null, -1, null, null);
 }
 
 /**
     * 创建通用的Excel带标题行信息
     * @param workbook 如果为空 则没有样式
     * @param sheet (创建sheet)
     * @param rowNO 报表的单行行号(创建第几行)
     * @param rowHeight 报表的单行行高
     * @param colNum 报表的总列数 (合并)
     * @param fontCaption 报表行中显示的字符
     */
 public void createExcelRow(HSSFWorkbook workbook, HSSFSheet sheet, int rowNO, int rowHeight, int colNum, String fontCaption) {
  createExcelRow(workbook, sheet, rowNO, -1, colNum, fontCaption, -1, null, null);
 }
 
 /**
     * 创建通用的Excel行信息
     * @param workbook 如果为空 则没有样式
     * @param sheet (创建sheet)
     * @param rowNO 报表的单行行号(创建第几行)
     * @param rowHeight 报表的单行行高
     * @param colNum 报表的总列数 (合并)
     * @param fontCaption 报表行中显示的字符
     * @param fontSize 字体的大小 (字体大小 默认 200)
     * @param fontWeight 报表表头显示的字符
     * @param align 字体水平位置 (center中间  right右  left左)
     * @param colNum 报表的列数
     */
 @SuppressWarnings("deprecation")
 public void createExcelRow(HSSFWorkbook workbook, HSSFSheet sheet, int rowNO, int rowHeight, int colNum, String fontCaption, int fontSize, String fontWeight, String align) {
        if(colNum < 0) {
   logger.debug(this.getClass().getName() + " --> Excel column number is null");
   colNum = 100;  
  }
  
  HSSFRow row = sheet.createRow(rowNO);  //创建第一行
  row.setHeight((short) (rowHeight < 1 ? 300 : rowHeight));  //设置行高
  
     HSSFCell cell = row.createCell(0);//设置第一行
  cell.setCellType(HSSFCell.ENCODING_UTF_16); //定义单元格为字符串类型
  cell.setCellValue(new HSSFRichTextString(fontCaption));
  
  sheet.addMergedRegion(new Region(rowNO, (short) 0, rowNO, (short) (colNum - 1)));   //指定合并区域
  
  HSSFCellStyle cellStyle = createCellFontStyle(workbook, fontSize, fontWeight, align);  //设定样式
  if(cellStyle != null){
   cell.setCellStyle(cellStyle);
  }
 }
 
 /**
  * 设置报表列头
  * @param sheet (创建sheet)
     * @param rowNO 报表的单行行号(创建第几行)
     * @param rowHeight 报表的单行行高
     * @param columnHeader 报表行中显示的字符
  */
 public void createColumnHeader(HSSFSheet sheet, int rowNO, int rowHeight, String[] columnHeader) {
  createColumnHeader(sheet, rowNO, rowHeight, columnHeader, -1, null, null);
 }
 
 /**
  * 设置报表列头
  * @param sheet (创建sheet)
     * @param rowNO 报表的单行行号(创建第几行)
     * @param rowHeight 报表的单行行高
     * @param columnHeader 报表行中显示的字符
     * @param fontSize 字体的大小 (字体大小 默认 200)
  */
 public void createColumnHeader(HSSFSheet sheet, int rowNO, int rowHeight, String[] columnHeader, int fontSize) {
  createColumnHeader(sheet, rowNO, rowHeight, columnHeader, fontSize, null, null);
 } 
 
    /**
     * 设置报表列头
     * @param sheet (创建sheet)
     * @param rowNO 报表的单行行号(创建第几行)
     * @param rowHeight 报表的单行行高
     * @param columnHeader 报表行中显示的字符
     * @param fontSize 字体的大小 (字体大小 默认 200)
     * @param fontWeight 报表表头显示的字符
     * @param align 字体水平位置 (center中间  right右  left左)
     */
 public void createColumnHeader(HSSFSheet sheet, int rowNO, int rowHeight, String[] columnHeader, int fontSize, String fontWeight,
   String align) {
  if(columnHeader == null || columnHeader.length < 1){
   logger.debug(this.getClass().getName() + " --> Excel columnHeader is null");
   return ;
  }
  HSSFRow row = sheet.createRow(rowNO);
  row.setHeight((short) rowHeight);
  
  HSSFCellStyle cellStyle = createCellFontStyle(workbook, fontSize, fontWeight, align);
        if(cellStyle != null){
         // 设置单元格背景色
      cellStyle.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);
      cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
        }
         
  HSSFCell cell = null;
  for (int i = 0; i < columnHeader.length; i++) {
   sheet.setColumnWidth(i, 20 * 256);  //设置列宽,20个字符宽度。宽度参数为1/256,故乘以256
   cell = row.createCell(i);
   cell.setCellType(HSSFCell.ENCODING_UTF_16);
   if(cellStyle != null){cell.setCellStyle(cellStyle);}
   cell.setCellValue(new HSSFRichTextString(columnHeader[i]));
  }
 }
 
 /**
  * 创建数据行
  * @param sheet (创建sheet)
     * @param rowNO 报表的单行行号(创建第几行)
     * @param rowHeight 报表的单行行高
     * @param columnData 报表行中显示的数据
     * @param maxValue Excel显示的最大上限
  */
 public HSSFSheet createColumnData(HSSFSheet sheet, int rowNO,  String[][] columnData, int maxValue){
  maxValue = (maxValue < 1 || maxValue > 65535 ) ?  65535 : maxValue ; 
  int currRowNO = rowNO;
  for (int numNO = currRowNO; numNO < columnData.length + currRowNO; numNO++) {
    if (numNO% maxValue == 0) {
     sheet = workbook.createSheet();
     rowNO = 0;
    }
    createColumnDataDesc(sheet, numNO, rowNO, currRowNO, -1, columnData);
    rowNO++;
  }
  return sheet;
 }
 
 /**
  * 创建数据行
  * @param sheet (创建sheet)
  * @param numNO 序列号
     * @param rowNO 报表的单行行号(创建第几行)
     * @param currRowNO 初始行号
     * @param rowHeight 报表的单行行高
     * @param columnData 报表行中显示的数据
  */
 private void createColumnDataDesc(HSSFSheet sheet, int numNO, int rowNO, int currRowNO, int rowHeight, String[][] columnData) {
  createColumnDataDesc(sheet, numNO, rowNO, currRowNO, rowHeight, columnData, -1, null, null);
 }
 
 /**
  * 创建数据行
  * @param sheet (创建sheet)
     * @param rowNO 报表的单行行号(创建第几行)
     * @param rowHeight 报表的单行行高
     * @param columnData 报表行中显示的数据
  * @param fontSize 字体大小 默认 200
  * @param fontWeight 字体粗细 ( 值为bold 为加粗)
  * @param align 字体水平位置 (center中间  right右  left左)
  * @param maxValue Excel显示的最大上限
  */
 public HSSFSheet createColumnData(HSSFSheet sheet, int rowNO, int rowHeight, String[][] columnData, int fontSize, String fontWeight, String align, int maxValue){
  maxValue = (maxValue < 1 || maxValue > 65535 ) ?  65535 : maxValue ; 
  int currRowNO = rowNO;
  for (int numNO = currRowNO; numNO < columnData.length + currRowNO; numNO++) {
    if (numNO% maxValue == 0) {
     sheet = workbook.createSheet();
     rowNO = 0;
    }
    createColumnDataDesc(sheet, numNO, rowNO, currRowNO,  rowHeight, columnData, fontSize, fontWeight, align);
    rowNO++;
  }
  return sheet;
 }
 
 /**
  * 创建数据行
  * @param sheet (创建sheet)
  * @param numNO 序列号
     * @param rowNO 报表的单行行号(创建第几行)
     * @param currRowNO 初始行号
     * @param rowHeight 报表的单行行高
     * @param columnData 报表行中显示的数据
     * @param fontSize 字体的大小 (字体大小 默认 200)
     * @param fontWeight 报表表头显示的字符
     * @param align 字体水平位置 (center中间  right右  left左)
  */
 private void createColumnDataDesc(HSSFSheet sheet, int numNO, int rowNO, int currRowNO, int rowHeight, String[][] columnData, int fontSize, String fontWeight,
   String align) {
  if(columnData == null || columnData.length < 1){
   logger.debug(this.getClass().getName() + " --> Excel columnData is null");
//   return ;
  }
  HSSFRow row = sheet.createRow(rowNO);
  row.setHeight((short) rowHeight);
  
  HSSFCellStyle cellStyle =null;// createCellFontStyle(workbook, fontSize, fontWeight, align);
  if(cellStyle != null){
   cellStyle.setAlignment(HSSFCellStyle.ALIGN_LEFT); // 指定单元格居中对齐 
  } else {
   cellStyle = workbook.createCellStyle();
   cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER_SELECTION); // 指定单元格居中对齐
  }
  HSSFCell cell = null;
  for (int i = 0; i < columnData[numNO - currRowNO].length; i++) {
   sheet.setColumnWidth(i, 20 * 256);  //设置列宽,20个字符宽度。宽度参数为1/256,故乘以256
   cell = row.createCell(i);
   cell.setCellType(HSSFCell.ENCODING_UTF_16);
   if(cellStyle != null){cell.setCellStyle(cellStyle);}
   cell.setCellValue(new HSSFRichTextString(columnData[numNO - currRowNO][i]));
  }
 }
 
    /**
     * 创建内容单元格 
     * @param workbook  HSSFWorkbook
     * @param row  HSSFRow
     * @param columnNumber  short型的列索引
     * @param alignType  对齐方式  (默认居中对齐,如果 alignType=true 则左对齐)
     * @param value  列值
     */
 @SuppressWarnings("deprecation")
 public void cteateDataCell(HSSFWorkbook workbook, HSSFRow row, int columnNumber, boolean alignType, String value) {
  HSSFCell cell = row.createCell(((short) columnNumber));
  cell.setCellType(HSSFCell.ENCODING_UTF_16);
  cell.setCellValue(new HSSFRichTextString(value));
  
  HSSFCellStyle cellstyle = workbook.createCellStyle();
  short align = HSSFCellStyle.ALIGN_CENTER_SELECTION; 
  if(alignType){
   align = HSSFCellStyle.ALIGN_LEFT; 
  }
  cellstyle.setAlignment(align); // 指定单元格居中对齐
  cell.setCellStyle(cellstyle);
 }
 
 /**
     * 创建通用的Excel最后一行的信息 (创建合计行 (最后一行))
     * @param workbook 如果为空 则没有样式
     * @param sheet 
     * @param colNum 报表的总列数 (合并)
     * @param fontCaption 报表行中显示的字符
     * @param fontSize 字体的大小 (字体大小 默认 200)
     * @param fontWeight 报表表头显示的字符
     * @param align 字体水平位置 (center中间  right右  left左)
     * @param colNum 报表的列数 (需要合并到的列索引)
     * 
     */
 @SuppressWarnings("deprecation")
 public void createSummaryRow(HSSFWorkbook workbook, HSSFSheet sheet,
   int colNum, String fontCaption, int fontSize, String fontWeight,
   String align) {

  HSSFCellStyle cellStyle = createCellFontStyle(workbook, fontSize, fontWeight, align);

  HSSFRow lastRow = sheet.createRow((short) (sheet.getLastRowNum() + 1));
  HSSFCell sumCell = lastRow.createCell(0);

  sumCell.setCellValue(new HSSFRichTextString(fontCaption));
  if(cellStyle != null){sumCell.setCellStyle(cellStyle);}
  sheet.addMergedRegion(new Region(sheet.getLastRowNum(), (short) 0, sheet.getLastRowNum(), (short) (colNum - 1)));// 指定合并区域
 }
 
 /**
  * 设置字体样式   (字体为宋体 ,上下居中对齐,可设置左右对齐,字体粗细,字体大小 )
  * @param workbook 如果为空 则没有样式
  * @param fontSize 字体大小 默认 200
  * @param fontWeight 字体粗细 ( 值为bold 为加粗)
  * @param align 字体水平位置 (center中间  right右  left左)
  */
 public HSSFCellStyle createCellFontStyle(HSSFWorkbook workbook, int fontSize, String fontWeight, String align){
  if(workbook == null){ 
   logger.debug(this.getClass().getName() + " --> Excel HSSFWorkbook FontStyle is not set");
   return null;
  }
 
        HSSFCellStyle cellStyle = workbook.createCellStyle();
       
        cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 指定单元格居中对齐
  if(align != null && align.equalsIgnoreCase("left")){
   cellStyle.setAlignment(HSSFCellStyle.ALIGN_LEFT); // 指定单元格居中对齐
  }
  if(align != null && align.equalsIgnoreCase("right")){
   cellStyle.setAlignment(HSSFCellStyle.ALIGN_RIGHT); // 指定单元格居中对齐
  }
  
  cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 指定单元格垂直居中对齐
  cellStyle.setWrapText(true);// 指定单元格自动换行
  
  // 单元格字体
  HSSFFont font = workbook.createFont();
  if(fontWeight != null && fontWeight.equalsIgnoreCase("normal")){
   font.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
  } else{
   font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
  }
  
  font.setFontName("宋体");
  font.setFontHeight((short) (fontSize < 1 ? 200 : fontSize) );
  cellStyle.setFont(font);
  
    // 设置字体
//        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); //是否使用划线
//  // 添加单元格注释
//        // 创建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.");

  return cellStyle;
 }
 
 /**
  * 导出EXCEL文件
  * @param fileName 文件名称
  * 测试程序
  * 
  * //  private static HSSFWorkbook workbook = new HSSFWorkbook();
//      private static HSSFSheet sheet = workbook.createSheet();
  HSSFWorkbook workbook = new HSSFWorkbook();
        HSSFSheet sheet = workbook.createSheet();
  ExportExcelUtil eeu = new ExportExcelUtil(workbook, sheet);

  String[] strArr = new String[] { "序号", "姓名", "性 别", "出生年月", "民族", "籍贯", "备注" };
  int colNum = strArr.length;

  int rowNO = 0;
  //1. titleCaption
  eeu.createExcelRow(workbook, sheet, rowNO, -1, colNum, "统计报表"); // , 250, "bold", "center"
  //2.
  rowNO++;
  eeu.createExcelRow(workbook, sheet, rowNO, 200, colNum,
    " 制 表 人: 赵小明       制 表 日 期: " + new java.text.SimpleDateFormat("yyyy-MM-dd").format(new java.util.Date()), 180, "normal", "right");
  //3.columnTitleHeader
  rowNO++;
  eeu.createColumnHeader(sheet, rowNO, 300, strArr);
  
  //4.数据行     循环创建中间的单元格的各项的值
  rowNO++;
  String[][] columnData = new String[][]{{ "1", "zhangsan", "男", "1985-10-06 21:00:00", "汉族", "西安", "学生" },
    { "2", "猪猪", "女", "出生年月", "民族", "籍贯", "备注" },
    { "3", "明明", "男", "1980-07-08", "汉族", "西安", "学生" },
    { "4", "光光", "女", "1985-06-30", "汉族", "西安", "学生" },
    { "5", "先民", "男", "1987-06-06", "汉族", "西安", "学生" },
    { "6", "数据", "女", "1985-04-06", "汉族", "西安", "学生" },
    { "7", "历史", "女", "1985-06-06", "汉族", "西安", "学生" },
    { "8", "妩媚", "女", "1990-10-06", "汉族", "西安", "学生" },
    { "9", "李斯", "男", "1985-06-20", "汉族", "西安", "学生" },
    { "10", "犀利", "女", "1985-06-06", "汉族", "西安", "学生" },
    { "11", "绅士", "男", "1985-01-06", "汉族", "西安", "学生" },
    { "12", "先知", "女", "1984-06-06", "汉族", "西安", "学生" },
    { "13", "精明", "男", "1985-06-12", "汉族", "西安", "学生" },
    { "14", "科技", "男", "1972-02-03", "汉族", "西安", "学生" },
    { "15", "软件", "女", "1985-02-06", "汉族", "西安", "学生" },
    { "16", "世道", "男", "1999-03-06", "汉族", "西安", "学生" },
    { "17", "明了", "女", "1985-06-06", "汉族", "西安", "学生" },
    { "18", "小明", "男", "1984-06-09", "汉族", "西安", "学生" },
    { "19", "高娟", "女", "1985-03-06", "汉族", "西安", "学生" },
    { "20", "小莉", "女", "1987-12-25", "汉族", "西安", "学生" }} ;
  sheet = eeu.createColumnData(sheet, rowNO,  columnData, 7);
        eeu.createSummaryRow(workbook, sheet, colNum, "合计:" + columnData.length, 180, "normal", "right");
  eeu.exportExcel("f://Test2011-07-29//test.xls");
  */
 public void exportExcel(String fileName) {
  OutputStream os = null;
  try{
   os = new FileOutputStream(new File(fileName));
   workbook.write(os);
   os.close();
  }catch(Exception e){
   logger.debug(this.getClass().getName() + " --> export Excel file error :" + e.getMessage());
  }
 }

  /** 
   *   利用模板导出Excel
   *   @param   inputFile   输入模板文件路径 
   *   @param   outputFile   输入文件存放于服务器路径 
   *   @param   dataList   待导出数据 
   *   @throws   Exception 
   *   @roseuid: 
   */ 
 @SuppressWarnings("deprecation")
 public void exportExcelFile(String inputFileName, String outputFileName,
   List<?> dataList) throws Exception {
  // 用模板文件构造poi
  POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(inputFileName));
  // 创建模板工作表
  HSSFWorkbook templatewb = new HSSFWorkbook(fs);
  // 直接取模板第一个sheet对象
  HSSFSheet templateSheet = templatewb.getSheetAt(1);
  if (dataList.size()% 65535 == 0) {
   templateSheet = templatewb.createSheet();
  }
  // 得到模板的第一个sheet的第一行对象 为了得到模板样式
  HSSFRow templateRow = templateSheet.getRow(0);

  // HSSFSheet timplateSheet = templatewb.getSheetAt(1);
  // 取得Excel文件的总列数
  int columns = templateSheet.getRow((short) 0)
    .getPhysicalNumberOfCells();
  System.out.println("columns   is   :   " + columns);
  // 创建样式数组
  HSSFCellStyle styleArray[] = new HSSFCellStyle[columns];

  // 一次性创建所有列的样式放在数组里
  for (int s = 0; s < columns; s++) {
   // 得到数组实例
   styleArray[s] = templatewb.createCellStyle();
  }
  // 循环对每一个单元格进行赋值
  // 定位行
  for (int rowId = 1; rowId < dataList.size(); rowId++) {
   // 依次取第rowId行数据 每一个数据是valueList
   List<?> valueList = (List<?>) dataList.get(rowId - 1);
   // 定位列
   for (int columnId = 0; columnId < columns; columnId++) {
    // 依次取出对应与colunmId列的值
    // 每一个单元格的值
    String dataValue = (String) valueList.get(columnId);
    // 取出colunmId列的的style
    // 模板每一列的样式
    HSSFCellStyle style = styleArray[columnId];
    // 取模板第colunmId列的单元格对象
    // 模板单元格对象
    HSSFCell templateCell = templateRow.getCell((short) columnId);
    // 创建一个新的rowId行 行对象
    // 新建的行对象
    HSSFRow hssfRow = templateSheet.createRow(rowId);
    // 创建新的rowId行 columnId列 单元格对象
    // 新建的单元格对象
    HSSFCell cell = hssfRow.createCell((short) columnId);
    // 如果对应的模板单元格 样式为非锁定
    if (templateCell.getCellStyle().getLocked() == false) {
     // 设置此列style为非锁定
     style.setLocked(false);
     // 设置到新的单元格上
     cell.setCellStyle(style);
    }
    // 否则样式为锁定
    else {
     // 设置此列style为锁定
     style.setLocked(true);
     // 设置到新单元格上
     cell.setCellStyle(style);
    }
    // 设置编码
    // cell.setEncoding(HSSFCell.ENCODING_UTF_16);
    // Debug.println( "dataValue   :   " + dataValue);
    // 设置值 统一为String
    cell.setCellValue(dataValue);
   }
  }
  // 设置输入流
  FileOutputStream fOut = new FileOutputStream(outputFileName);
  // 将模板的内容写到输出文件上
  templatewb.write(fOut);
  fOut.flush();

  // 操作结束,关闭文件
  fOut.close();

 }
 
 public static void main(String[] args) {
//  private static HSSFWorkbook workbook = new HSSFWorkbook();
//      private static HSSFSheet sheet = workbook.createSheet();
  HSSFWorkbook workbook = new HSSFWorkbook();
        HSSFSheet sheet = workbook.createSheet();
  ExportExcelUtil eeu = new ExportExcelUtil(workbook, sheet);

  String[] strArr = new String[] { "序号", "姓名", "性 别", "出生年月", "民族", "籍贯", "备注" };
  int colNum = strArr.length;
  
  int rowNO = 0;
  //1. titleCaption
  eeu.createExcelRow(workbook, sheet, rowNO, -1, colNum, "统计报表"); // , 250, "bold", "center"
  //2.
  rowNO++;
  eeu.createExcelRow(workbook, sheet, rowNO, 200, colNum,
    " 制 表 人: 赵小明       制 表 日 期: " + new java.text.SimpleDateFormat("yyyy-MM-dd").format(new java.util.Date()), 180, "normal", "right");
  //3.columnTitleHeader
  rowNO++;
  eeu.createColumnHeader(sheet, rowNO, 300, strArr);
  
  //4.数据行     循环创建中间的单元格的各项的值
  rowNO++;
  String[][] columnData = new String[][]{{ "1", "zhangsan", "男", "1985-10-06 21:00:00", "汉族", "西安", "学生" },
    { "2", "猪猪", "女", "出生年月", "民族", "籍贯", "备注" },
    { "3", "明明", "男", "1980-07-08", "汉族", "西安", "学生" },
    { "4", "光光", "女", "1985-06-30", "汉族", "西安", "学生" },
    { "5", "先民", "男", "1987-06-06", "汉族", "西安", "学生" },
    { "6", "数据", "女", "1985-04-06", "汉族", "西安", "学生" },
    { "7", "历史", "女", "1985-06-06", "汉族", "西安", "学生" },
    { "8", "妩媚", "女", "1990-10-06", "汉族", "西安", "学生" },
    { "9", "李斯", "男", "1985-06-20", "汉族", "西安", "学生" },
    { "10", "犀利", "女", "1985-06-06", "汉族", "西安", "学生" },
    { "11", "绅士", "男", "1985-01-06", "汉族", "西安", "学生" },
    { "12", "先知", "女", "1984-06-06", "汉族", "西安", "学生" },
    { "13", "精明", "男", "1985-06-12", "汉族", "西安", "学生" },
    { "14", "科技", "男", "1972-02-03", "汉族", "西安", "学生" },
    { "15", "软件", "女", "1985-02-06", "汉族", "西安", "学生" },
    { "16", "世道", "男", "1999-03-06", "汉族", "西安", "学生" },
    { "17", "明了", "女", "1985-06-06", "汉族", "西安", "学生" },
    { "18", "小明", "男", "1984-06-09", "汉族", "西安", "学生" },
    { "19", "高娟", "女", "1985-03-06", "汉族", "西安", "学生" },
    { "20", "小莉", "女", "1987-12-25", "汉族", "西安", "学生" }} ;
  sheet = eeu.createColumnData(sheet, rowNO,  columnData, 7);
        eeu.createSummaryRow(workbook, sheet, colNum, "合计:" + columnData.length, 180, "normal", "right");
  eeu.exportExcel("f://Test2011-07-29//test.xls");
  /* 
  在用java 编写生成报表时发现了个问题,将行,列隐藏,将列隐藏很简单用
    this.sheet.setColumnHidden((short)12, true);将第13列隐藏注意excel的第一列用0表示

  隐藏行:

  HSSFRow row     = sheet.getRow(8); 
      row.setZeroHeight(true);

  将第8行隐藏就是将他的高度设为0也等同为隐藏
*/
 }

 
 
}

 

 

分享到:
评论
1 楼 zi_wu_xian 2016-09-02  
java 利用poi生成Excel文件还是太复杂了,用PageOffice编程的代码就比较简单,同样是生成excel文件,不会出现格式问题。

相关推荐

    java的poi生成excel图表demo

    通过这个“java的poi生成excel图表demo”,我们可以学习如何利用POI创建动态的、数据驱动的Excel曲线图,进一步提升数据的可视性和理解性。这个压缩包中的“EexcelChart”可能是示例代码、测试数据或生成的Excel文件...

    JAVA使用POI生成Excel文件

    这篇博客"JAVA使用POI生成Excel文件"主要介绍了如何利用Apache POI来创建和操作Excel文档。 首先,我们需要了解Apache POI的基本概念。Apache POI是Apache软件基金会的一个开源项目,它提供了Java API,使得开发者...

    java调用poi生成excel文件

    java代码调用poi架包, 把数据生成excel文件, 导出到文件

    java poi 根据excel模板生成excel文件

    通过以上步骤,你就可以利用Java POI库根据Excel模板生成新的Excel文件了。这个过程可以用于批量生成报告、自定义报表或者动态数据填充等场景,大大提高了工作效率。同时,POI库提供了丰富的API,可以根据具体需求...

    Java POI 生成Excel(xlsx)文件

    下面将详细介绍如何使用Java POI库来生成Excel(xlsx)文件。 首先,我们需要引入Apache POI的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;org.apache.poi &lt;artifactId&gt;poi-...

    Java 利用poi输出Excel文件

    本篇文章将详细介绍如何利用Apache POI来生成Excel文件。 首先,Apache POI是一个开源的Java API,它提供了一个接口来处理Microsoft Office的文件格式,如Word(.doc)、Excel(.xls/.xlsx)和PowerPoint(.ppt)。...

    java利用poi生成excel demo

    在"java利用poi生成excel demo"中,我们关注的是如何生成Excel文件。为了实现这个功能,你需要在项目中引入Apache POI的相关jar包。这些jar包通常包括poi-ooxml、poi-ooxml-schemas和poi-ooxml-lite等,它们提供了...

    java利用poi生成excel报表、处理word文档

    在本场景中,我们关注的是如何利用POI来生成Excel报表以及处理Word文档。 一、Java POI与Excel报表生成 1. 创建Excel工作簿(Workbook):在Java中,我们首先需要创建一个`XSSFWorkbook`对象,它代表Excel工作簿。`...

    java使用POI导出 Excel工具类

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

    Java POI 生成Excel时显示货币格式

    在使用Java POI生成Excel时,为了使数据更易读和专业,我们经常需要设置单元格的格式,特别是当涉及到金额时,使用货币格式可以使数字更加直观。以下是一段示例代码,展示了如何在Excel单元格中设置货币格式: ```...

    Java POI根据模板生成Excel(xlsx)文件

    在本示例中,我们关注的是如何利用Java POI来根据模板生成.xlsx格式的Excel文件。这个过程涉及到对Excel模板的理解、读取、修改以及最终的保存。 首先,理解模板文件是关键。一个.xlsx模板文件实际上是由一系列XML...

    JAVA用POI生成Excel并下载

    总结来说,通过Apache POI库,Java开发者可以方便地生成Excel文件,设置单元格的字体大小,并提供下载功能。这个过程包括创建工作簿、工作表、行和单元格,设置字体样式,以及将工作簿写入输出流以供下载。这些步骤...

    Java通过POI读取Excel遍历数据,批量生成word文档

    通过这种方式,你可以根据业务需求,利用Java和Apache POI库实现Excel数据的批处理,生成大量定制化的Word文档。这个过程对于报告生成、自动化数据导出或者大规模邮件合并等场景非常有用。 这个示例代码只是一个...

    java利用POI生成与解析EXCEL所需JAR

    要生成Excel文件,你需要创建一个`XSSFWorkbook`对象,这是POI库中表示Excel工作簿的类。以下是一个简单的示例: ```java import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class ExcelGenerator { ...

    使用poi生成Excel所需要的jar包

    在这个场景中,"使用poi生成Excel所需要的jar包"指的是利用Apache POI库来生成Excel文件。POI-3.9.jar是Apache POI项目的一个版本,包含了所有必要的类和方法,让我们可以处理Excel的XLS和XLSX格式。 首先,Apache ...

    Java 使用poi导入excel 并使用xml做数据验证

    Apache POI是一个流行的库,它允许开发者使用Java来读取、写入和修改Microsoft Office格式的文件,包括Excel(.xlsx, .xls)。在本项目中,我们结合了POI库和XML技术来实现Excel数据的验证与导入数据库。 首先,...

    POI导出Excel文件

    Apache POI是一个流行的Java库,用于读取和写入Microsoft Office格式的文件,尤其是Excel(.xlsx和.xls)文件。这个实例提供了两种方法来导出Excel文件:通过Servlet和通过main方法。这两种方法都是在Java环境中操作...

    java生成excel文件(poi).rar_POI java_java excel_poi EXCEL模板_poi-3.8-

    在这个“java生成excel文件(poi).rar”压缩包中,我们看到的是一个使用POI库创建Excel文件的示例代码。 Apache POI提供了API来创建、读取和修改Excel文件。在“POI java_java excel_poi EXCEL模板”这一标签中,...

    java实现poi模板生成PPT文件代码

    总结来说,使用Java和Apache POI生成PPT文件涉及理解PPT文件结构、掌握POI API、创建模板、数据绑定和错误处理等多个步骤。在给定的代码中,可能有两个不同的迭代实现,分别对应两种不同的处理方式或优化策略。通过...

    poi生成excel表格

    Apache POI 是一个开源项目...以上是Apache POI生成Excel表格的基本知识点和操作步骤。通过这些示例,你可以理解如何在Java应用中利用POI进行Excel文件的创建、读取和修改,以及如何结合数据库操作实现数据的导入导出。

Global site tag (gtag.js) - Google Analytics