首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Java Struts2读取Excel 2003/2007/2010例证

2013-09-12 
Java Struts2读取Excel 2003/2007/2010例子Java读写Excel的包是Apache POI(项目地址:http://poi.apache.or

Java Struts2读取Excel 2003/2007/2010例子

Java读写Excel的包是Apache POI(项目地址:http://poi.apache.org/),因此需要先获取POI的jar包,本实验使用的是POI 3.9稳定版。

Apache POI 代码例子地址:http://poi.apache.org/spreadsheet/quick-guide.html

本例子可以读取Microsoft Office Excel 2003/2007/2010,具体代码及注释如下:

读取“.xls”格式使用  import org.apache.poi.hssf.usermodel.*;包的内容,例如:HSSFWorkbook
读取“.xlsx”格式使用 import org.apache.poi.xssf.usermodel.*; 包的内容,例如:XSSFWorkbook
读取两种格式使用    import org.apache.poi.ss.usermodel.*    包的内容,例如:Workbook

引入包如下:

     /**     * 读取Excel测试,兼容 Excel 2003/2007/2010     */    public String readExcel()    {        SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");        try {            //同时支持Excel 2003、2007            File excelFile = new File("/home/zht/test.xls"); //创建文件对象            FileInputStream is = new FileInputStream(excelFile); //文件流            Workbook workbook = WorkbookFactory.create(is); //这种方式 Excel 2003/2007/2010 都是可以处理的            int sheetCount = workbook.getNumberOfSheets();  //Sheet的数量            //遍历每个Sheet            for (int s = 0; s < sheetCount; s++) {                Sheet sheet = workbook.getSheetAt(s);                int rowCount = sheet.getPhysicalNumberOfRows(); //获取总行数                //遍历每一行                for (int r = 0; r < rowCount; r++) {                    Row row = sheet.getRow(r);                    int cellCount = row.getPhysicalNumberOfCells(); //获取总列数                    //遍历每一列                    for (int c = 0; c < cellCount; c++) {                        Cell cell = row.getCell(c);                        int cellType = cell.getCellType();                        String cellValue = null;                        switch(cellType) {                            case Cell.CELL_TYPE_STRING: //文本                                cellValue = cell.getStringCellValue();                                break;                            case Cell.CELL_TYPE_NUMERIC: //数字、日期                                if(DateUtil.isCellDateFormatted(cell)) {                                    cellValue = fmt.format(cell.getDateCellValue()); //日期型                                }                                else {                                    cellValue = String.valueOf(cell.getNumericCellValue()); //数字                                }                                break;                            case Cell.CELL_TYPE_BOOLEAN: //布尔型                                cellValue = String.valueOf(cell.getBooleanCellValue());                                break;                            case Cell.CELL_TYPE_BLANK: //空白                                cellValue = cell.getStringCellValue();                                break;                            case Cell.CELL_TYPE_ERROR: //错误                                cellValue = "错误";                                break;                            case Cell.CELL_TYPE_FORMULA: //公式                                cellValue = "错误";                                break;                            default:                                cellValue = "错误";                        }                        System.out.print(cellValue + "    ");                    }                    System.out.println();                }            }        }        catch (Exception e) {            e.printStackTrace();        }        return Action.SUCCESS;    }



热点排行