1.在csdn下载的POI的三个jar包,分别是:
(1)poi-2.5.1-final-20040804.jar
(2)poi-contrib-2.5.1-final-20040804.jar
(3)poi-scratchpad-2.5.1-final-20040804.jar
是否支持excel2003?
2.在官网下载的版本是poi-3.5-beta3里面有如下几个包:
(1)poi-3.5-beta3-20080926.jar
(2)poi-contrib-3.5-beta3-20080926.jar
(3)poi-jdk14-3.5-beta3-20080926.jar
(4)poi-ooxml-3.5-beta3-20080926.jar
(5)poi-scratchpad-3.5-beta3-20080926.jar
有两个包和上面相同,还需要导入哪个包?是否支持excel2003?
请指教
如果有相关例子,请发于我邮箱[email protected]
小弟不胜感激!

解决方案 »

  1.   

    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.   

    2、ExcelWriter.javapackage 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();
      }
     }}
      

  3.   

    poi-3.0.1-FINAL-20070705.jar
    poi-scratchpad-3.0.1-FINAL-20070705.jar这两个就行,支持office2003,我的excel就是2003的