- jxl 只有excel基本的操作,代码操作比较方便,一般使用jxl就够了,对图片支持较好
- poi功能比jxl强大但是比较吃内存,支持计算公式
关于jxl具体可以参考 http://www.cnblogs.com/dashuai01/p/4776277.html
package test_poi; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.util.Date; 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; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.junit.Test; public class TestPoi { @Test public void createWorkBook() throws Exception { Workbook wb = new HSSFWorkbook(); // 创建工作簿 Sheet sheet = wb.createSheet("first sheet"); // 创建工作表并且定义工作表名称 Row createRow = sheet.createRow(0); // 定义第一行 // Row createRow2 = sheet.createRow(1);// 定义第二行 createRow.createCell(0).setCellValue("hehe"); // 第一行第一个列,并赋值 for (int i = 0; i < 10; i++) { createRow.createCell(i + 1).setCellValue("hehe" + i); // 循环第一行 // createRow2.createCell(i).setCellValue("第二行" + i); // 循环第二行 } OutputStream fileOut = new FileOutputStream("d:\poi.xls");// 输出流 wb.createSheet("two");// 创建第二个工作表并定义名称 wb.write(fileOut); // 将文件输出到文件中 fileOut.close(); // 关闭输出流,, } @Test public void readExl() throws Exception { InputStream is = new FileInputStream("d:\poi.xls"); POIFSFileSystem fs = new POIFSFileSystem(is); HSSFWorkbook wb = new HSSFWorkbook(fs); HSSFSheet sheet = wb.getSheetAt(0); // 获得总行数,第一行算标题不算在行数内,所以总的行数应该是lastRowNum+1 int lastRowNum = sheet.getLastRowNum(); System.out.println(lastRowNum); // 直接根据行号获取信息 HSSFRow row = sheet.getRow(0);// 获取第一行(标题) // 获取当前行总列数 int physicalNumberOfCells = row.getPhysicalNumberOfCells(); System.out.println("标题总列数=" + physicalNumberOfCells); // 单元格内容格式 int cellType = row.getCell(3).getCellType();// 格式是: // HSSFCell.CELL_TYPE_STRING... // 获取不同类型的值 double numericCellValue = row.getCell(0).getNumericCellValue(); boolean booleanCellValue = row.getCell(1).getBooleanCellValue(); Date dateCellValue = row.getCell(2).getDateCellValue(); System.out.println(cellType + "********"); } }