一、下载所需jar包
下载地址:http://poi.apache.org/download.html
http://download.csdn.net/detail/likai22/534250
二、上代码
package com.sxdx.excelpoi.action;import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException;import jxl.Cell; import jxl.CellType; import jxl.NumberCell; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException;import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; 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.HorizontalAlignment; import org.apache.poi.ss.usermodel.VerticalAlignment; import org.apache.poi.ss.util.CellRangeAddress; /*** HSSF - 提供读写Microsoft Excel XLS格式档案的功能。XSSF - 提供读写Microsoft Excel OOXML XLSX格式档案的功能。HWPF - 提供读写Microsoft Word DOC97格式档案的功能。XWPF - 提供读写Microsoft Word DOC2003格式档案的功能。HSLF - 提供读写Microsoft PowerPoint格式档案的功能。HDGF - 提供读Microsoft Visio格式档案的功能。HPBF - 提供读Microsoft Publisher格式档案的功能。HSMF - 提供读Microsoft Outlook格式档案的功能。**/ public class PoiAction {/*** 生成excel* @param args*/public static void main(String[] args) {HSSFWorkbook wb = new HSSFWorkbook();// 创建HSSFWorkbook对象HSSFSheet sheet = wb.createSheet("sheet0");// 创建HSSFSheet对象//合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, 截至列 sheet.addMergedRegion(new CellRangeAddress(0,0,0,10)); sheet.setDefaultRowHeightInPoints(20);//设置缺省列高sheet.setDefaultColumnWidth(8);//设置缺省列宽 //设置指定列的列宽,256 * 50这种写法是因为width参数单位是单个字符的256分之一 sheet.setColumnWidth(0, 256 * 30); // 设置单元格的横向和纵向对齐方式HSSFCellStyle cellStyle = wb.createCellStyle(); cellStyle.setAlignment(HorizontalAlignment.CENTER);cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);//-----------------------------------------------------------------------HSSFRow row0 = sheet.createRow(0);// 创建HSSFRow对象row0.setHeight((short) 600);//设置行高HSSFCell cell0 = row0.createCell(0);cell0.setCellValue("考勤结果表");cell0.setCellStyle(cellStyle);HSSFRow row1 = sheet.createRow(1);// 创建HSSFRow对象// 创建HSSFCell对象 HSSFCell cell = row.createCell(0)// 设置单元格的值for(int i=0;i<31;i++){HSSFCell cell1 = row1.createCell(i);cell1.setCellValue(i+1);cell1.setCellStyle(cellStyle);}HSSFRow row2 = sheet.createRow(2);for(int i=0;i<31;i++){HSSFCell cell2 = row2.createCell(i);cell2.setCellValue("正常");cell2.setCellStyle(cellStyle);}HSSFRow row3 = sheet.createRow(3);for(int i=0;i<31;i++){HSSFCell cell3 = row3.createCell(i);cell3.setCellValue("迟到");cell3.setCellStyle(cellStyle);}HSSFRow row4 = sheet.createRow(4);for(int i=0;i<31;i++){HSSFCell cell4 = row4.createCell(i);cell4.setCellValue("请假");cell4.setCellStyle(cellStyle);}try {// 输出Excel文件FileOutputStream output = new FileOutputStream("d:\\workbook.xls");wb.write(output);output.flush();} catch (IOException e) {// TODO Auto-generated catch block e.printStackTrace();}}/*** 读取excel*/public static void readExcel(){//导入已存在的Excel文件,获得只读的工作薄对象 FileInputStream fis = null;try {fis = new FileInputStream("d:\\workbook.xls");} catch (FileNotFoundException e) {// TODO Auto-generated catch block e.printStackTrace();} Workbook wk = null;try {wk = Workbook.getWorkbook(fis);} catch (BiffException e) {// TODO Auto-generated catch block e.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch block e.printStackTrace();} //获取第一张Sheet表 Sheet sheet = (Sheet) wk.getSheet(0); //获取总行数 int rowNum = sheet.getRows();//从数据行开始迭代每一行 for(int i=0;i<rowNum;i++){System.out.println(sheet.getCell(0, i).getContents());}try {fis.close();} catch (IOException e) {// TODO Auto-generated catch block e.printStackTrace();} wk.close(); } }
三、main()方法为生成excel, readExcel()为读取excel。效果图如下
1、生成文件
2、excel内容
3、读取excel