`
zcw_java
  • 浏览: 303039 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java对Excel的读写详解(POI)

 
阅读更多
<!-- 配置读取excel所需 -->
        <dependency>
            <groupId>dom4j</groupId>
            <artifactId>dom4j</artifactId>
            <version>1.6.1</version>
        </dependency>
        <dependency>
            <groupId>xmlbeans</groupId>
            <artifactId>xmlbeans</artifactId>
            <version>2.3.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-stax-api_1.0_spec</artifactId>
            <version>1.0.1</version>
        </dependency>
        <dependency>
          <groupId>org.apache.poi</groupId>
          <artifactId>poi</artifactId>
          <version>3.7</version>
        </dependency>
        <dependency>
          <groupId>org.apache.poi</groupId>
          <artifactId>poi-ooxml-schemas</artifactId>
          <version>3.7</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.7</version>
        </dependency>

读取Excel
//excel文件批量导入短信
    @RequestMapping("/importToContent.ca")
    public void importToContent(HttpServletRequest request,HttpServletResponse response,@RequestParam("excelFile") MultipartFile file,@RequestParam("categoryId") String categoryId){
        try {
            scm.readExcelWriteData(file.getInputStream(),categoryId);
            this.initCpRegisterData(request);
        } catch (Exception e) {
            log.debug("batch upload smsContent Exception");
            e.printStackTrace();
        }
        out = this.getOut(response);
        out.print(200);
        //return new ModelAndView("/frames/so_Groupsms_mainpage");
    }

public int readExcelWriteData(InputStream inp,String categoryId) throws Exception{
        Workbook wb = WorkbookFactory.create(inp);
        int numberRow;
        //获取第一张表
        Sheet st = wb.getSheetAt(0);
        //获取行数   st.getLastRowNum();
        //存储读取的短信
        List smsContentList = new ArrayList();
        String smsCon = null;
        //遍历第一张表的所有行
        for(int i=0;i<=st.getLastRowNum();i++){
        	//第一行一般为title不读取
        	if(i!=0){
        		Row row = st.getRow(i);	//获取第一行数据
        		//遍历第一行所有的列(单元格)
        		for(int j=0;j<row.getLastCellNum();j++){
        			Cell cell = row.getCell(j);  //获取第一个单元格
        			//获取单元格类型
        			switch (cell.getCellType()) {
	                    case Cell.CELL_TYPE_STRING:		//字符串
	                    	System.out.println(cell.getRichStringCellValue().getString());
	                        smsCon = cell.getRichStringCellValue().getString();
	                        break;
	                    case Cell.CELL_TYPE_NUMERIC:	//数字
	                        if (DateUtil.isCellDateFormatted(cell)) {	//判断是否包含日期
	                            System.out.println(cell.getDateCellValue());
	                        } else {
	                            System.out.println(cell.getNumericCellValue());
	                        	smsCon = String.valueOf(cell.getNumericCellValue());
	                        }
	                        break;
	                    case Cell.CELL_TYPE_BOOLEAN:	//布尔
	                        //System.out.println(cell.getBooleanCellValue());
	                        break;
	                    case Cell.CELL_TYPE_FORMULA:	//公式
	                        //System.out.println(cell.getCellFormula());
	                        break;
	                    default:
	                        System.out.println();
	                }
        		}
        	}
        	if(smsCon!=null&&!smsCon.equals("")){
        		smsContentList.add(smsCon);
        	}
        }
        return smsContentDao.batchImportSmsContentByList(smsContentList,categoryId,st.getLastRowNum());
    }

导出Excel
跨第1行第1个到第2个单元格的操作为
sheet.addMergedRegion(new Region(0,(short)0,0,(short)1));

跨第1行第1个到第2行第1个单元格的操作为
sheet.addMergedRegion(new Region(0,(short)0,1,(short)0));
//请求处理controller
@RequestMapping("/outputExcelByActivity.ca")                      
    public void outputExcelByActivity(HttpServletRequest request,HttpServletResponse response,
                                      @RequestParam("ids") String ids) throws Exception{
        response.addHeader("Content-Disposition", "attachment;filename=" + "outputExcel.xls");
        response.setContentType("application/octet-stream");
        String[] nums = ids.split(",");
        Long[] ids1 = new Long[nums.length];
        for (int i = 0; i < nums.length; ++i) {
            ids1[i] = Long.valueOf(nums[i]);
        }
        List<MerchantOrder> list = activityManager.getOutputExcelOrder(ids1);
        OrderExcelHelper.export(response.getOutputStream(),list);
    }

public class OrderExcelHelper {
    public static void export(OutputStream os,List<MerchantOrder> list) throws IOException {

        HSSFWorkbook workbook = new HSSFWorkbook();
        HSSFSheet worksheet = workbook.createSheet("雨果科技");
        formatHeader(worksheet);
        workbook.write(os);
    }
    private static void formatHeader(HSSFSheet worksheet) {
        String[] str = new String[]{"****科技有限公司","单位名称全称(发票抬头):",
                "联系人:,电话:18201815572,邮件:zchangwen@sina.cn",
        "地址:上海市,邮编:201100","订期:2012年报刊","报价人:张三","订单号:20120517"};
        for(int i=0;i<6;i++){
            HSSFRow row = worksheet.createRow((short) i);  //创建一个行
            if(i==0){
                worksheet.addMergedRegion(new Region(i,(short)0,i,(short)14));
                HSSFCell cellA1 = row.createCell((short) 0);
                cellA1.setCellValue("抬头***");
            }else if(i==1){
                worksheet.addMergedRegion(new Region(i,(short)0,i,(short)3));
                worksheet.addMergedRegion(new Region(i,(short)4,i,(short)14));
                HSSFCell cellA1 = row.createCell((short) 0);
                HSSFCell cellA2 = row.createCell((short) 4);
                cellA1.setCellValue("单位名称全称(发票抬头):");
                cellA2.setCellValue("xxxx");
            }else if(i==2){
                for(int j=0;j<10;j++){
                    if(j==0){
                        HSSFCell cellA1 = row.createCell((short) 0);
                        cellA1.setCellValue("联系人:");
                    }else if(j==1){
                        HSSFCell cellA1 = row.createCell((short) 1);
                        cellA1.setCellValue("xxx");
                    }else if(j==2){
                        HSSFCell cellA1 = row.createCell((short) 2);
                        cellA1.setCellValue("性别:");
                    }else if(j==3){
                        HSSFCell cellA1 = row.createCell((short) 3);
                        cellA1.setCellValue("男");
                    }else if(j==4){
                        HSSFCell cellA1 = row.createCell((short) 4);
                        cellA1.setCellValue("电话:");
                    }else if(j==5){
                        worksheet.addMergedRegion(new Region(i,(short)5,i,(short)7));
                        HSSFCell cellA1 = row.createCell((short) 5);
                        cellA1.setCellValue("0931-7361342");
                    }else if(j==6){
                        HSSFCell cellA1 = row.createCell((short) 8);
                        cellA1.setCellValue("手机:");
                    }else if(j==7){
                        worksheet.addMergedRegion(new Region(i,(short)9,i,(short)10));
                        HSSFCell cellA1 = row.createCell((short) 9);
                        cellA1.setCellValue("18201815572");
                    }else if(j==8){
                        HSSFCell cellA1 = row.createCell((short) 11);
                        cellA1.setCellValue("Email");
                    }else if(j==9){
                        worksheet.addMergedRegion(new Region(i,(short)12,i,(short)14));
                        HSSFCell cellA1 = row.createCell((short) 12);
                        cellA1.setCellValue("zchangwen@sina.cn");
                    }
                }
            }else if(i==3){
                HSSFCell cellA1 = row.createCell((short) 0);
                cellA1.setCellValue("地址:");
                worksheet.addMergedRegion(new Region(i,(short)1,i,(short)2));
                HSSFCell cellA2 = row.createCell((short) 1);
                cellA2.setCellValue("闵行区");
                HSSFCell cellA3 = row.createCell((short) 3);
                cellA3.setCellValue("邮编:");
                worksheet.addMergedRegion(new Region(i,(short)3,i,(short)14));
                HSSFCell cellA4 = row.createCell((short) 1);
                cellA1.setCellValue("730060");
            }else if(i==4){
                HSSFCell cellA1 = row.createCell((short) 0);
                cellA1.setCellValue("报价人:");
                HSSFCell cellA3 = row.createCell((short) 1);
                cellA3.setCellValue("张三");
                worksheet.addMergedRegion(new Region(i,(short)2,i,(short)14));
                HSSFCell cellA2 = row.createCell((short) 2);
                cellA2.setCellValue("***");
            }else if(i==5){
                worksheet.addMergedRegion(new Region(i,(short)0,i,(short)14));
            }
        }
    }
}
分享到:
评论
2 楼 zcw_java 2012-06-27  
xuskyline 写道
谢谢 分享,研究研究

不客气,共同努力提高
1 楼 xuskyline 2012-06-18  
谢谢 分享,研究研究

相关推荐

    java poi导出图片到excel示例代码

    Java POI导出图片到Excel示例代码详解 Java POI是Java开发中常用的开源库,用于读写Microsoft Office文件格式,包括Excel、Word、PowerPoint等。今天,我们将介绍如何使用Java POI将图片导出到Excel中。 标题解释 ...

    POI实战-java开发excel详解

    ### POI实战-java开发excel详解 #### 1. POI入门 ##### 1.1 Excel基本知识 在Java开发中,处理Excel文件是一项常见的任务。理解Excel的基本结构是使用Apache POI库进行开发的基础。 - **Excel文件结构**:一个...

    java POI 详解

    Java POI 详解 Java POI 详解是 Java 软件工程师教育系列教程中的一个重要章节,旨在讲述 Java 中 POI 包的使用详解。...Java POI 详解为 Java 开发者提供了一个强大的工具,可以轻松地实现 Excel 文件的读写操作。

    Java POI 生成Excel时显示货币格式

    Java POI是一个开源的API,用于读写Microsoft Office格式的文件,包括Excel、Word和PowerPoint等。它由Apache Software Foundation维护,广泛应用于各种企业级项目中。对于Excel操作,Java POI提供了HSSF(对应.xls...

    Excel操作工具poi3.8

    《使用Apache POI 3.8进行Excel操作的详解》 Apache POI 是一个流行的开源项目,它允许Java开发者创建、修改和显示Microsoft Office格式的文件,尤其是Excel工作簿(.xlsx和.xls)。在给定的标题“Excel操作工具poi...

    poi,用java读写Excel

    ### POI:Java读写Excel详解 #### 一、POI简介及背景 Apache POI是Apache Jakarta项目下的一个开源项目,它为Java开发者提供了在Java应用中读写Microsoft Office格式文件的功能。其中,HSSF组件是POI的一个子项目...

    Java通过POI和JXL给Excel动态添加水印

    - **JXL**: 是一个用于读写Excel文件的Java库,支持多种Excel版本,包括.xls格式。 - **Apache POI**: 同样是处理Excel文件的强大Java库,除了支持.xls外还支持.xlsx等新版本格式,并且提供了更多的功能,如图表、...

    java操作Excel_详解

    ### Java操作Excel详解:jExcelAPI与POI的对比及应用实例 在IT领域,特别是企业级应用开发中,处理电子表格数据是一项常见的需求。Java作为企业级开发的主流语言之一,提供了多种库来实现这一功能,其中最知名的莫...

    java使用POI操作excel (支持excel2007)

    Java 使用Apache POI库操作Excel 2007文件详解 在Java开发中,处理Excel文件是一项常见的任务,特别是对于数据分析、数据导入导出或报表生成等场景。Apache POI是一个流行的开源库,它允许开发者读写Microsoft ...

    java实现excel地导入导出(poi详解).docx

    ### Java实现Excel的导入与导出(POI详解) #### 一、引言 在日常工作中,Excel文件的处理是一项常见的需求,特别是在数据管理和报告生成方面。Apache POI 是一个非常流行的 Java API,用于处理 Microsoft Office ...

    详解JAVA_POI导出EXCEL报表的操作(包括各种格式及样式的实现)

    ### JAVA POI 导出 EXCEL 报表的操作详解(含格式及样式实现) #### 一、概述 在日常工作中,我们经常会遇到需要将数据导出到 Excel 的情况,尤其是在处理大量的报表数据时。Java POI 库为 Java 开发者提供了一种...

    Java中利用POI优雅的导出Excel文件详解

    Java 中利用 POI 优雅的导出 Excel 文件详解 POI(Poor Obfuscation Implementation)是一个开源的 Java 库,由 Apache 软件基金会提供,用于读写 Microsoft Office 格式的文档,包括 Excel、Word、PowerPoint 等。...

    Java+Excel+Api及详细教程

    2. JExcelApi:另一个Java库,虽然没有POI那么强大,但对基本的Excel操作支持良好。它可以读写Biff8格式的Excel文件,适合对旧版Excel文件进行处理。 二、Apache POI详解 1. 创建工作簿:首先,我们需要创建一个`...

    java_poi操作excel

    ### Java POI 操作 Excel 的知识点详解 #### 一、POI 介绍及结构说明 **1. Apache POI 简介** - **定义**:Apache POI 是一个由 Apache 软件基金会提供的开源项目,它提供了一组 API,使 Java 程序能够读写 ...

    POI生成excel报表

    ### POI生成Excel报表知识点详解 #### 一、Apache POI简介 Apache POI是Apache软件基金会的一个开源项目,主要用于处理Microsoft Office格式的文件。它提供了API来读写Word、Excel等Office文档格式。其中,处理...

    Java读取Excel表格中的日期

    为了实现上述功能,通常会选择使用Apache POI库,这是一个非常强大的用于读写Microsoft Office格式文件的Java库。其中,HSSF和XSSF分别用于处理`.xls`和`.xlsx`文件。 ##### 2. 自动判断单元格类型 在处理Excel...

    Java实现Excel导入导出操作详解.pptx.pptx

    通过Apache POI的API,开发者可以轻松读取Excel文件,将数据转化为Java对象,同时也可以添加、修改和删除单元格数据,实现对Excel文件的完全控制。JXL库则是一个较简单的选项,适合小型项目和简单的Excel操作。另外...

    java poi导出大量数据到Excel

    ### Java POI 大量数据导出到Excel详解 #### 一、背景介绍 在日常工作中,经常需要处理大量的数据并将其导出为Excel文件,特别是在金融、电商等行业。Java POI库作为一款强大的用于读写Microsoft Office文档的Java ...

Global site tag (gtag.js) - Google Analytics