`

Us POI imp and exp Excel demo

    博客分类:
  • J2EE
阅读更多

1、ExcelWriter.java
package com.eruite.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import org.apache.poi.hssf.usermodel.HSSFCell;
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.poifs.filesystem.POIFSFileSystem;

/**
* @author caihua
*/
public class ExcelReader {
private HSSFWorkbook wb = null;// book [includes sheet]

private HSSFSheet sheet = null;

private HSSFRow row = null;

private int sheetNum = 0; // 第sheetnum个工作表

private int rowNum = 0;

private FileInputStream fis = null;

private File file = null;

public ExcelReader() {
}

public ExcelReader(File file) {
  this.file = file;
}

public void setRowNum(int rowNum) {
  this.rowNum = rowNum;
}

public void setSheetNum(int sheetNum) {
  this.sheetNum = sheetNum;
}

public void setFile(File file) {
  this.file = file;
}

/**
  * 读取excel文件获得HSSFWorkbook对象
  */
public void open() throws IOException {
  fis = new FileInputStream(file);
  wb = new HSSFWorkbook(new POIFSFileSystem(fis));
  fis.close();
}

/**
  * 返回sheet表数目
  *
  * @return int
  */
public int getSheetCount() {
  int sheetCount = -1;
  sheetCount = wb.getNumberOfSheets();
  return sheetCount;
}

/**
  * sheetNum下的记录行数
  *
  * @return int
  */
public int getRowCount() {
  if (wb == null)
   System.out.println("=============>WorkBook为空");
  HSSFSheet sheet = wb.getSheetAt(this.sheetNum);
  int rowCount = -1;
  rowCount = sheet.getLastRowNum();
  return rowCount;
}

/**
  * 读取指定sheetNum的rowCount
  *
  * @param sheetNum
  * @return int
  */
public int getRowCount(int sheetNum) {
  HSSFSheet sheet = wb.getSheetAt(sheetNum);
  int rowCount = -1;
  rowCount = sheet.getLastRowNum();
  return rowCount;
}

/**
  * 得到指定行的内容
  *
  * @param lineNum
  * @return String[]
  */
public String[] readExcelLine(int lineNum) {
  return readExcelLine(this.sheetNum, lineNum);
}

/**
  * 指定工作表和行数的内容
  *
  * @param sheetNum
  * @param lineNum
  * @return String[]
  */
public String[] readExcelLine(int sheetNum, int lineNum) {
  if (sheetNum < 0 || lineNum < 0)
   return null;
  String[] strExcelLine = null;
  try {
   sheet = wb.getSheetAt(sheetNum);
   row = sheet.getRow(lineNum);

   int cellCount = row.getLastCellNum();
   strExcelLine = new String[cellCount + 1];
   for (int i = 0; i <= cellCount; i++) {
    strExcelLine[i] = readStringExcelCell(lineNum, i);
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
  return strExcelLine;
}

/**
  * 读取指定列的内容
  *
  * @param cellNum
  * @return String
  */
public String readStringExcelCell(int cellNum) {
  return readStringExcelCell(this.rowNum, cellNum);
}

/**
  * 指定行和列编号的内容
  *
  * @param rowNum
  * @param cellNum
  * @return String
  */
public String readStringExcelCell(int rowNum, int cellNum) {
  return readStringExcelCell(this.sheetNum, rowNum, cellNum);
}

/**
  * 指定工作表、行、列下的内容
  *
  * @param sheetNum
  * @param rowNum
  * @param cellNum
  * @return String
  */
public String readStringExcelCell(int sheetNum, int rowNum, int cellNum) {
  if (sheetNum < 0 || rowNum < 0)
   return "";
  String strExcelCell = "";
  try {
   sheet = wb.getSheetAt(sheetNum);
   row = sheet.getRow(rowNum);

   if (row.getCell((short) cellNum) != null) { // add this condition
    // judge
    switch (row.getCell((short) cellNum).getCellType()) {
    case HSSFCell.CELL_TYPE_FORMULA:
     strExcelCell = "FORMULA ";
     break;
    case HSSFCell.CELL_TYPE_NUMERIC: {
     strExcelCell = String.valueOf(row.getCell((short) cellNum)
       .getNumericCellValue());
    }
     break;
    case HSSFCell.CELL_TYPE_STRING:
     strExcelCell = row.getCell((short) cellNum)
       .getStringCellValue();
     break;
    case HSSFCell.CELL_TYPE_BLANK:
     strExcelCell = "";
     break;
    default:
     strExcelCell = "";
     break;
    }
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
  return strExcelCell;
}

public static void main(String args[]) {
  File file = new File("C:\\qt.xls");
  ExcelReader readExcel = new ExcelReader(file);
  try {
   readExcel.open();
  } catch (IOException e) {
   e.printStackTrace();
  }
  readExcel.setSheetNum(0); // 设置读取索引为0的工作表
  // 总行数
  int count = readExcel.getRowCount();
  for (int i = 0; i <= count; i++) {
   String[] rows = readExcel.readExcelLine(i);
   for (int j = 0; j < rows.length; j++) {
    System.out.print(rows[j] + " ");
   }
   System.out.print("\n");
  }
}
}

2、ExcelWriter.java


package com.eruite.util;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Calendar;

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.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

/**
* 生成导出Excel文件对象
*
* @author caihua
*
*/
public class ExcelWriter {
// 设置cell编码解决中文高位字节截断
private static short XLS_ENCODING = HSSFCell.ENCODING_UTF_16;

// 定制浮点数格式
private static String NUMBER_FORMAT = "#,##0.00";

// 定制日期格式
private static String DATE_FORMAT = "m/d/yy"; // "m/d/yy h:mm"

private OutputStream out = null;

private HSSFWorkbook workbook = null;

private HSSFSheet sheet = null;

private HSSFRow row = null;

public ExcelWriter() {
}

/**
  * 初始化Excel
  *
  */
public ExcelWriter(OutputStream out) {
  this.out = out;
  this.workbook = new HSSFWorkbook();
  this.sheet = workbook.createSheet();
}

/**
  * 导出Excel文件
  *
  * @throws IOException
  */
public void export() throws FileNotFoundException, IOException {
  try {
   workbook.write(out);
   out.flush();
   out.close();
  } catch (FileNotFoundException e) {
   throw new IOException(" 生成导出Excel文件出错! ", e);
  } catch (IOException e) {
   throw new IOException(" 写入Excel文件出错! ", e);
  }

}

/**
  * 增加一行
  *
  * @param index
  *            行号
  */
public void createRow(int index) {
  this.row = this.sheet.createRow(index);
}

/**
  * 获取单元格的值
  *
  * @param index
  *            列号
  */
public String getCell(int index) {
  HSSFCell cell = this.row.getCell((short) index);
  String strExcelCell = "";
  if (cell != null) { // add this condition
   // judge
   switch (cell.getCellType()) {
   case HSSFCell.CELL_TYPE_FORMULA:
    strExcelCell = "FORMULA ";
    break;
   case HSSFCell.CELL_TYPE_NUMERIC: {
    strExcelCell = String.valueOf(cell.getNumericCellValue());
   }
    break;
   case HSSFCell.CELL_TYPE_STRING:
    strExcelCell = cell.getStringCellValue();
    break;
   case HSSFCell.CELL_TYPE_BLANK:
    strExcelCell = "";
    break;
   default:
    strExcelCell = "";
    break;
   }
  }
  return strExcelCell;
}

/**
  * 设置单元格
  *
  * @param index
  *            列号
  * @param value
  *            单元格填充值
  */
public void setCell(int index, int value) {
  HSSFCell cell = this.row.createCell((short) index);
  cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
  cell.setCellValue(value);
}

/**
  * 设置单元格
  *
  * @param index
  *            列号
  * @param value
  *            单元格填充值
  */
public void setCell(int index, double value) {
  HSSFCell cell = this.row.createCell((short) index);
  cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
  cell.setCellValue(value);
  HSSFCellStyle cellStyle = workbook.createCellStyle(); // 建立新的cell样式
  HSSFDataFormat format = workbook.createDataFormat();
  cellStyle.setDataFormat(format.getFormat(NUMBER_FORMAT)); // 设置cell样式为定制的浮点数格式
  cell.setCellStyle(cellStyle); // 设置该cell浮点数的显示格式
}

/**
  * 设置单元格
  *
  * @param index
  *            列号
  * @param value
  *            单元格填充值
  */
public void setCell(int index, String value) {
  HSSFCell cell = this.row.createCell((short) index);
  cell.setCellType(HSSFCell.CELL_TYPE_STRING);
  cell.setEncoding(XLS_ENCODING);
  cell.setCellValue(value);
}

/**
  * 设置单元格
  *
  * @param index
  *            列号
  * @param value
  *            单元格填充值
  */
public void setCell(int index, Calendar value) {
  HSSFCell cell = this.row.createCell((short) index);
  cell.setEncoding(XLS_ENCODING);
  cell.setCellValue(value.getTime());
  HSSFCellStyle cellStyle = workbook.createCellStyle(); // 建立新的cell样式
  cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat(DATE_FORMAT)); // 设置cell样式为定制的日期格式
  cell.setCellStyle(cellStyle); // 设置该cell日期的显示格式
}

public static void main(String[] args) {
  System.out.println(" 开始导出Excel文件 ");

  File f = new File("C:\\qt.xls");
  ExcelWriter e = new ExcelWriter();

  try {
   e = new ExcelWriter(new FileOutputStream(f));
  } catch (FileNotFoundException e1) {
   e1.printStackTrace();
  }

  e.createRow(0);
  e.setCell(0, "试题编码 ");
  e.setCell(1, "题型");
  e.setCell(2, "分值");
  e.setCell(3, "难度");
  e.setCell(4, "级别");
  e.setCell(5, "知识点");

  e.createRow(1);
  e.setCell(0, "t1");
  e.setCell(1, 1);
  e.setCell(2, 3.0);
  e.setCell(3, 1);
  e.setCell(4, "重要");
  e.setCell(5, "专业");

  try {
   e.export();
   System.out.println(" 导出Excel文件[成功] ");
  } catch (IOException ex) {
   System.out.println(" 导出Excel文件[失败] ");
   ex.printStackTrace();
  }
}

}

分享到:
评论

相关推荐

    SSM框架利用poi导入导出Excel文件 demo

    在本示例"SSM框架利用poi导入导出Excel文件 demo"中,我们将探讨如何在SSM项目中使用Apache POI库来实现Excel文件的导入与导出功能。 Apache POI是一个流行的开源库,它允许开发者在Java应用程序中创建、修改和显示...

    poi操作excel的Demo

    这个"poi操作excel的Demo"很可能是提供了一个使用Apache POI库来读取、写入或修改Excel文件的示例代码。下面将详细介绍Apache POI在处理Excel时的一些关键知识点。 1. **Apache POI概述**: Apache POI 是Java平台...

    poi 解析excel文件内容demo

    在这个"poi 解析excel文件内容demo"中,我们主要关注如何使用Apache POI库来读取和解析Excel文件,无论它们是2003版的.XLS还是2007以后的.XLSX格式。 首先,Apache POI提供了两种主要的接口来处理Excel文件:HSSF...

    poi导出excel demo

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

    java的poi生成excel图表demo

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

    poi excel poi excel poi excel

    ### POI Excel知识点详解 #### 一、Jakarta POI简介与Apache POI的作用 Jakarta POI 是 Apache POI 的早期项目名称,它提供了一组 API 来处理 Microsoft Office 文件格式,特别是针对 Excel(`.xls` 和 `.xlsx`)...

    POI 生成、解析excel,demo

    这个“POI 生成、解析excel,demo”很显然是一个使用 Apache POI 库创建和解析 Excel 文档的示例。Apache POI 提供了 Java API,使得开发者能够方便地在 Java 应用程序中读取、写入以及修改 Excel 文件,无论是老版本...

    poi log4j excel poi log4j excel poi log4j excel

    poi log4j excel poi log4j excel poi log4j excel poi log4j excel poi log4j excel poi log4j excel poi log4j excel

    利用POI解析excel并存入数据库demo

    在这个"利用POI解析excel并存入数据库demo"中,我们将关注如何使用 POI 库来读取 Excel 文件,并将数据有效地存入 MySQL 数据库。 首先,要开始使用 POI,你需要在你的项目中引入相应的依赖。如果你使用的是 Maven...

    poi导出world、excel的demo

    在这个"poi导出world、excel的demo"中,我们将探讨如何使用Apache POI库来创建和导出Word与Excel文档。 首先,让我们关注Excel文件的导出。Apache POI提供了HSSF和XSSF两个API,分别用于处理老版本的.BIFF8格式(....

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

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

    利用POI合并多个Excel表

    在IT领域,Apache POI是一个广泛使用的Java库,它允许开发者读取、写入和修改Microsoft Office格式的文件,特别是Excel工作簿。本教程将深入探讨如何利用Apache POI库来合并多个Excel工作表,这对于处理大量数据或者...

    java运用poi把excel导入数据库demo

    在这个“java运用poi把excel导入数据库demo”中,我们将探讨如何利用POI库将Excel数据有效地导入Oracle数据库。 首先,我们需要理解Apache POI的工作原理。POI提供了HSSF和XSSF两个API,分别用于处理旧版的BIFF8(....

    POI生成Excel POI操作Excel POI读取Excel POI类库

    Apache POI是一个强大的Java库,专门用于处理Microsoft Office格式的文件,尤其是Excel。在这个场景中,我们关注的是如何使用POI来创建、读取和操作Excel文档。在Web项目中,这种功能通常用于数据导入导出,报表生成...

    基于POI的Excel导出开源Demo

    【基于POI的Excel导出开源Demo】是一个利用Apache POI库进行Excel文件生成和操作的示例项目。Apache POI是Java平台上的一个开源项目,它提供了读取和写入Microsoft Office格式文件的能力,包括Excel(.xlsx 和 .xls...

    使用POI和IText将Excel转换成PDF

    Apache POI是一个开源项目,它提供了读取和写入Microsoft Office格式文件的能力,包括Excel(.xlsx和.xls)。而iText则是一个用于创建和处理PDF文档的Java库。结合这两个库,我们可以将Excel的工作表内容导出到PDF中...

    java利用poi生成excel demo

    本篇将详细介绍如何利用Apache POI库在Java中创建一个Excel文件的DEMO。 首先,Apache POI是一个开源项目,它为Java程序员提供了API,可以处理Microsoft Office格式的数据,如Word、PowerPoint和Excel。在"java利用...

    使用poi+itext将excel转为pdf

    看到现在网上excel转pdf的代码很少,在csdn上找到一个还不能用,只能做简单的转换,只好自己写了一个,代码是一个maven工程,用eclipse创建,支持单元格合并等复杂的excel,同时能同步单元格样式到pdf中。...

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

    Apache POI 是一个开源项目,专门用于处理 Microsoft Office 格式的文件,如 Word、Excel 和 PowerPoint。在本案例中,我们关注的是如何使用 Apache POI 库来导出 Excel 文件,特别是根据模板导出和简单列表导出。...

    poi 3.10上所有的demo

    Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,如Excel、Word和PowerPoint。POI 3.10是该项目的一个版本,它提供了丰富的API来创建、读取和修改这些文件。这个“poi 3.10上所有的demo”文件...

Global site tag (gtag.js) - Google Analytics