`
liuzm
  • 浏览: 100997 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

java操作Excel(轻松制作报表)

    博客分类:
  • JAVA
阅读更多
在项目中,经常要把数据写成Excel.
所以在这里将介绍java 写Excel 基础操作
想对Excel进行之前,要引进一个包(jxl.jar)。本文章已提供下载
本文章写了二个例子,一个是对静态写入Excel 二是读出数据库的数据写入Excel
代码如下:
第一步 写一个 ExcelOpt 类 
public class ExcelOpt {
    /**
      * 生成一个Excel文件 jxl
         * @param fileName  要生成的Excel文件名 
         * @jxl.jar 版本:2.6
         */  
        public static void writeExcel(String fileName){   
            WritableWorkbook wwb = null;   
            try {   
                //首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象   
                wwb = Workbook.createWorkbook(new File(fileName));
              
            } catch (IOException e) {   
                e.printStackTrace();   
            }   
            if(wwb!=null){   
                //创建一个可写入的工作表   
                //Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置   
                WritableSheet ws = wwb.createSheet("工作表名称", 0);   
                   
                //下面开始添加单元格 
               
               
               
             //静态开始  
               // 静态的插入
                for(int i=0;i<10;i++){   
                    for(int j=0;j<5;j++){   
                        //这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行   
                    Label labelC = new Label(j, i, "这是第"+(i+1)+"行,第"+(j+1)+"列");
                        try {   
                            //将生成的单元格添加到工作表中   
                            ws.addCell(labelC);   
                        } catch (RowsExceededException e) {   
                            e.printStackTrace();   
                        } catch (WriteException e) {   
                            e.printStackTrace();   
                        }   
      
                    }   
                }
               
       // 静态结束
            
      // 动态开始 如果想参考动态的,就把静态块注释点
                // 动态的插入表格
//                int j=0; //Excel中 第一行是从0开始
//                Dao dao = new Dao();// 自己写的一个dao
//                List list = dao.voteList(); // 自己写一个你要从数据库读出数据的list
//                Label a = new Label(0,0,"ID"); //这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行   
//                Label b = new Label(1,0,"标题");
//                try {
//                    ws.addCell(a);
//                    ws.addCell(b);
//                } catch (RowsExceededException e1) {
//                    // TODO Auto-generated catch block
//                    e1.printStackTrace();
//                } catch (WriteException e1) {
//                    // TODO Auto-generated catch block
//                    e1.printStackTrace();
//                }
//           
//                for(int i=0;i<list.size();i++){
//                    Hashtable table =(Hashtable) list.get(i);
//                   
//                        Label label = new Label(j,i+1,table.get("id").toString());
//                        Label labela = new Label(j+1,i+1,table.get("title").toString());
//                        try {
//                            ws.addCell(label);
//                            ws.addCell(labela);
//                        } catch (RowsExceededException e) {
//                            // TODO Auto-generated catch block
//                            e.printStackTrace();
//                        } catch (WriteException e) {
//                            // TODO Auto-generated catch block
//                            e.printStackTrace();
//                    }
//                }
//      
               
// 动态结束               
            try {   
                //从内存中写入文件中   
                    wwb.write();   
                //关闭资源,释放内存   
                wwb.close();   
                } catch (IOException e) {   
                    e.printStackTrace();   
                } catch (WriteException e) {   
             e.printStackTrace();   
                }   
        }     
        }
       
       
        /**  
         *   生成一个Excel文件POI
         *   @param   inputFile   输入模板文件路径  
         *   @param   outputFile   输入文件存放于服务器路径  
         *   @param   dataList   待导出数据  
         *   @throws   Exception  
         *   @roseuid:  
         */

public static void exportExcelFile(String inputFile,String outputFile,List dataList) throws Exception{
      //用模板文件构造poi  
      POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(inputFile));
      //创建模板工作表  
      HSSFWorkbook templatewb = new HSSFWorkbook(fs);
      //直接取模板第一个sheet对象  
      HSSFSheet templateSheet = templatewb.getSheetAt(1);
      //得到模板的第一个sheet的第一行对象   为了得到模板样式  
      HSSFRow templateRow = templateSheet.getRow(0);

      //HSSFSheet   timplateSheet   =   templatewb.getSheetAt(1);  
      //取得Excel文件的总列数  
      int columns = templateSheet.getRow((short) 0)
        .getPhysicalNumberOfCells();
    //  Debug.println("columns   is   :   " + columns);  //=========================
      //创建样式数组  
      HSSFCellStyle styleArray[] = new HSSFCellStyle[columns];

      //一次性创建所有列的样式放在数组里  
      for (int s = 0; s < columns; s++) {
       //得到数组实例  
       styleArray[s] = templatewb.createCellStyle();
      }
      //循环对每一个单元格进行赋值    
      //定位行  
      for (int rowId = 1; rowId < dataList.size(); rowId++) {
       //依次取第rowId行数据   每一个数据是valueList  
       List valueList = (List) dataList.get(rowId - 1);
       //定位列  
       for (int columnId = 0; columnId < columns; columnId++) {
        //依次取出对应与colunmId列的值  
        //每一个单元格的值  
        String dataValue = (String) valueList.get(columnId);
        //取出colunmId列的的style  
        //模板每一列的样式  
        HSSFCellStyle style = styleArray[columnId];
        //取模板第colunmId列的单元格对象  
        //模板单元格对象  
        HSSFCell templateCell = templateRow.getCell((short) columnId);
        //创建一个新的rowId行   行对象  
        //新建的行对象    
        HSSFRow hssfRow = templateSheet.createRow(rowId);
        //创建新的rowId行   columnId列   单元格对象  
        //新建的单元格对象  
        HSSFCell cell = hssfRow.createCell((short) columnId);
        //如果对应的模板单元格   样式为非锁定  
        if (templateCell.getCellStyle().getLocked() == false) {
         //设置此列style为非锁定  
         style.setLocked(false);
         //设置到新的单元格上  
         cell.setCellStyle(style);
        }
        //否则样式为锁定  
        else {
         //设置此列style为锁定  
         style.setLocked(true);
         //设置到新单元格上  
         cell.setCellStyle(style);
        }
        //设置编码  
        cell.setEncoding(HSSFCell.ENCODING_UTF_16);
        //Debug.println("dataValue   :   "   +   dataValue);  
        //设置值   统一为String  
        cell.setCellValue(dataValue);
       }
      }
      //设置输入流  
      FileOutputStream fOut = new FileOutputStream(outputFile);
      //将模板的内容写到输出文件上  
      templatewb.write(fOut);
      fOut.flush();

      //操作结束,关闭文件  
      fOut.close();

     }

}


第二步  写个main 测试



public static void main(String[] args) {
       
        String liu ="d:\\liuzm.xls";  //写入的路径
        ExcelOpt t = new ExcelOpt();
        t.writeExcel(liu);
   
    }

本篇文章来源于 :刘志猛博客 原文链接:http://www.liuzm.com/article/java/969.htm
http://www.liuzm.com
分享到:
评论

相关推荐

    Java操作Excel的开源库

    Java操作Excel的开源库在开发过程中常常被广泛使用,特别是在数据处理、报表生成以及与用户交互的场景下。JExcelAPI是一个这样的库,它允许Java开发者方便地读取、写入以及修改Microsoft Excel文件,无需依赖Excel...

    Apache POI组件操作Excel,制作报表(四)

    通过以上步骤,你可以使用Apache POI高效地操作Excel,轻松制作各种报表。无论你是要批量导入数据,还是创建复杂的计算表格,Apache POI都能提供强大的支持。结合适当的工具,如IDEA的插件,可以进一步提升开发效率...

    Java制作Excel

    总的来说,`jxl.jar`为Java程序员提供了一个简洁的接口,使他们能够轻松地与Excel文件交互,无论是进行数据导入、导出还是复杂的报表生成。熟悉这个库的使用,将极大地提高你在数据处理方面的效率。

    使用jasperreports制作报表(导出pdf excel html)

    **使用JasperReports制作报表(导出PDF, Excel, HTML)** JasperReports是一款开源的Java报表库,它允许开发者创建、设计和显示复杂的报告。这个教程将介绍如何使用JasperReports来制作报表,并将其导出为PDF、...

    使用jxls轻松制作excel报表

    在博文《使用jxls轻松制作excel报表》中,作者可能详细介绍了如何设置模板,如何创建和使用`JexlContext`,以及如何处理各种复杂的业务逻辑。此外,可能还提供了示例代码和实战案例,帮助读者更好地理解和掌握jxls的...

    使用JXLS+Excel模板制作灵活的excel导出

    在IT行业中,生成灵活的Excel导出是许多应用程序的核心需求,尤其在数据分析、报表生成以及数据交换场景下。本文将详细介绍如何使用JXLS库结合Excel模板来实现这一功能。 JXLS(Java Excel Library)是一个强大的...

    Excel之JXL 报表 java

    JXL库是一个流行的选择,它允许开发者用Java语言轻松地读写Microsoft Excel文件。本篇将深入探讨“Excel报表JXL类型”以及如何在Java中使用JXL库来从数据库读取和排列数据。 首先,JXL库提供了丰富的API,可以创建...

    iReport JAVA报表制作控件

    iReport是一款基于JAVA的开源报表设计工具,专为开发人员和数据分析师提供强大的报表制作功能。它允许用户通过直观的图形界面设计复杂的报表,并能够与Java应用程序、JasperReports库和其他基于Java的企业应用无缝...

    birt报表,很好的java报表插件

    2. **报表项目实践**:"My Reports"目录下的内容可能包含用户根据学习指南创建的示例报表项目,这些项目可以帮助学习者通过实际操作掌握BIRT的各种功能,如数据源连接、报表布局、图表制作、参数化和数据过滤等。...

    java 报表生成 工具介绍

    4. **JFreeReport**:JFreeReport是一个Java类库,用于生成报表并支持打印及输出到PDF、Excel、HTML等格式。它为Java应用程序提供了灵活的打印和报告功能。 5. **jCharts**:jCharts是一个纯Java的图表生成工具,可...

    JasperReports,iReport制作报表

    在"JasperReports,iReport制作报表"这个主题中,"功能JAR导入直接运行"意味着你需要将JasperReports库和iReport相关的JAR文件添加到你的项目类路径中。这些库包含了运行报表所需的所有组件,包括报表引擎、设计工具...

    上传一套报表导出的工具类,供需要的人使用 excel.zip

    这样的设计使得即使对Excel操作不熟悉的开发者也能轻松实现报表导出。 值得注意的是,虽然这里提到的是Excel,但类似的工具类往往也支持其他格式,如CSV、PDF等。此外,如果需要更复杂的功能,如动态图表、条件格式...

    Excel导入导及动态验证

    在IT行业中,Excel数据处理是一项常见且重要的任务,特别是在数据分析、报表制作以及数据交换等领域。JXL库是Java中用于处理Excel文件的一个流行选择,它提供了读取、写入和修改Excel文件的功能。本篇文章将深入探讨...

    导出pdf、csv、excel报表

    Excel支持丰富的数据格式、计算功能、图表制作和数据分析工具。它的文件格式通常为.xlsx或.xls。Excel报表可用于财务分析、数据可视化、项目管理等多种场景,用户可以自定义公式、样式和交互式元素,提高数据处理的...

    iReport制作报表教程

    在"JasperReports结合iReport制作报表教程.pdf"这份文档中,你将学习到以下内容: 1. **安装和配置iReport**:包括下载最新版本,配置Java环境,以及关联数据库驱动等步骤。 2. **新建报表项目**:了解如何创建一个...

    报表制作的详细流程(iReport+jasperReports)

    ### 使用iReport和JasperReport制作报表 1. 启动iReport,新建一个报表项目,可以选择不同的报表类型(如表格、图表等)。 2. 在设计视图中,通过拖放方式添加字段、文本框、图表等元素,调整它们的布局和样式。 ...

    超简单超炫的J2EE报表制作

    总结来说,"超简单超炫的J2EE报表制作"项目涵盖了J2EE应用开发、MYECLIPSE IDE使用、水晶报表设计与数据可视化、MVC模式、数据库操作以及可能的Spring框架应用等多个关键知识点。这些技术的结合使得该项目能够提供一...

    JasperReports结合iReport制作报表教程

    以下是使用JasperReports和iReport制作报表的步骤: 1. **安装和配置**:首先,你需要下载并安装JasperReports库和iReport工具。确保你的开发环境支持Java,因为两者都需要Java运行环境。 2. **创建数据源**:在...

    cognos 自定义导出PDF和Excel.doc

    ### Cognos自定义导出PDF与Excel...通过上述步骤,可以在Cognos环境中轻松实现自定义导出功能,不仅提高了用户的操作便捷性,还增加了系统的灵活性。此外,通过对导出格式的支持进行扩展,能够满足更广泛的业务需求。

Global site tag (gtag.js) - Google Analytics