`
傻傻的聪明鬼
  • 浏览: 21965 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Excel 文档生成

    博客分类:
  • Java
阅读更多
使用Java POI 类库生成Excel文档,

public class Excel {

	/**
	 * 
	 * @Title: addMergeCellFile
	 * @Description: TODO(生成多种表格) 
	 * @param tablexml
	 * @param os
	 * @param type
	 */
    public void addMergeCellFile(String tablexml,OutputStream os,int type){
        try{
            Document doc = DocumentHelper.parseText(tablexml);
            Element root = doc.getRootElement();
            // 
            int rowNum = 0;
            // 记录条数
            List rowsList = root.elements();
            int rowmax = rowsList.size();
            int colmax = 0;
            // 最大列数
            for(int i=0;i<rowsList.size();i++){
                List tdlist = ((Element)rowsList.get(i)).elements();
                int temp  = tdlist.size();
                if(temp > colmax){
                    colmax =temp;
                }
            }
            List<int[]> megerRanges = new ArrayList<int[]>();
            // 生成工作簿
            HSSFWorkbook excel = new HSSFWorkbook();
            // 生成 sheet
            HSSFSheet sheet = excel.createSheet("Sheet1");//Excel工作表名字 
            // 依据数据条数,生成相应单元格
            for(int i=0;i<rowmax;i++) {
            	// Row
                HSSFRow row = sheet.createRow(i);
                // 单元格
                for(int j=0; j<colmax; j++) {
                    HSSFCell cell = row.createCell(j);
                }
            }
            //merge cells
            megerRanges = this.getMergeArray(type);
            if(megerRanges.size() > 0){
                for(int[] array : megerRanges) {
                      sheet.addMergedRegion(new CellRangeAddress(array[0],array[1],array[2],array[3]));
                }
            }

            // 使用数据填充表格
            int m = 0;
            HSSFCell excelCol = null;
            HSSFRow excelRow = null;
            
            for(int i= m;i<rowsList.size();i++) {
                Element row = (Element) rowsList.get(i);//get tr
                List  colsList = row.elements();
                excelRow = sheet.getRow(i);
                for(int k=0;k<colsList.size();k++) {
                    Element td = (Element) colsList.get(k);//get td
                    excelCol = excelRow.getCell(k);
                    //dom4j 解析不了 小于符号 
                    excelCol.setCellValue(new HSSFRichTextString(td.getText().replaceAll("#", "<")));
                }
            }
            excel.write(os);
            os.close();
        }catch (Exception e) {
            //e.printStackTrace();
            System.out.println("-----sax faild-----" + e.getMessage());
        }
    }
    
    /**
     * 
     * @Title: getMergeArray
     * @Description: TODO(合并单元格格式) 
     * @param type
     * @return
     */
    public List<int[]> getMergeArray(int type){
         List<int[]> megerRanges = new ArrayList<int[]>();
         if(type>0){
             megerRanges.add(new int[]{0,2,0,0});// 起始行 ---结束行   起始列 --结束列 
             for(int i=0;i<=((type-1)*8);i+=8){
                 megerRanges.add(new int[]{0,0,1+i,8+i});
                 megerRanges.add(new int[]{1,1,1+i,2+i});
                 megerRanges.add(new int[]{1,1,3+i,4+i});
                 megerRanges.add(new int[]{1,1,5+i,6+i});
                 megerRanges.add(new int[]{1,2,7+i,7+i});
                 megerRanges.add(new int[]{1,2,8+i,8+i});
             }
         }
         return megerRanges;
    }
}


测试代码如下:

	@Test
	public void test() throws IOException {
		String outputFile = "D:\\test.xls";

/*		// 创建新的Excel工作薄
		HSSFWorkbook workbook = new HSSFWorkbook();

		HSSFSheet sheet = workbook.createSheet();
		// 在索引0的地方建新行
		HSSFRow row = sheet.createRow(0);
		// 在索引0的位置创建单元格
		HSSFCell cell = row.createCell(0);
		cell.setCellType(HSSFCell.CELL_TYPE_STRING);

		// 在单元格中输入一些内容
		cell.setCellValue("增加值");*/
		
		FileOutputStream out = new FileOutputStream(outputFile);
		
/*		workbook.write(out);
		
		out.flush();
		out.close();
		System.out.println("文件生成");*/
		
		
		StringBuffer tableXml = new StringBuffer("");
		tableXml.append("<table><tr><td>序号</td><td>姓名</td><td>卡号</td></tr>");
		tableXml.append("<tr><td>1</td><td>zhangsan</td><td>2</td></tr></table>");
		
		Excel excel = new Excel();
		excel.addMergeCellFile(tableXml.toString(), out, 0);
				
				

	}
分享到:
评论

相关推荐

    根据Excel文件生成数据库insert建表sql

    1、不需要运行代码,只需要按照模板编写业务表字段即可,然后在Excel中点击生成DDL即可生成建表sql; 2、方便可视化sql表字段展示,统一维护,可放在钉钉、teams、云盘中共同维护,方便版本管理,生成最新的表结构;...

    Excel文件如何生成

    在.NET环境中,生成Excel文件通常涉及...了解这些基本操作后,你就能根据需求灵活地构建复杂的Excel文件生成程序。在实践中,不断探索和学习Excel Interop库的更多特性,可以进一步提升你生成和处理Excel文件的能力。

    java读取excel文件生成矩阵

    在Java编程中,读取...以上就是使用Java读取Excel文件生成矩阵的基本步骤。实际开发中,你可能还需要处理更多细节,如异常处理、数据验证、优化性能等。希望这个介绍能帮助你理解这个过程,并在实际项目中灵活应用。

    html,word,excel文件生成(Asp)

    - 提及的“从一个OA办公系统中提取出来”,表明这种文件生成功能可能应用于自动化办公流程,如报告生成、文档管理等。OA系统通常需要生成各种格式的文档以满足不同需求。 7. **分享与社区**: - 分享此类代码片段...

    用ruby读excel文件生成xml文件

    标题 "用ruby读excel文件生成xml文件" 描述的是一项技术任务,即使用Ruby编程语言来处理Excel文件,并将其内容转换成XML格式。这在数据迁移、格式转换或与不支持Excel格式的应用程序进行数据交换时非常有用。Ruby库...

    读取excel自动生成sql文的txt文件

    在IT行业中,自动从Excel文件生成SQL脚本是一项常见的需求,尤其在数据处理、数据库管理以及数据分析等场景中。这个“读取excel自动生成sql文的txt文件”的工具显然是为了解决这一问题而设计的。它允许用户通过Excel...

    excel文档生成的js文件

    一个把当前页面生成excel文档的js文件,为发的文章有说明使用

    java poi 根据excel模板生成excel文件

    在本文中,我们将深入探讨如何使用Java POI库根据已有的Excel模板生成新的Excel文件。 首先,理解“模板”在Excel中的概念非常重要。模板通常包含预设的格式、样式、公式和数据结构,可以作为创建新文件的基础。在...

    基于Javascript的Excel文档生成与在线编辑设计源码

    本源码是基于Javascript开发的Excel文档生成与在线编辑设计,包含306个文件,其中包括174个.xml文件,66个.java文件,以及11个.css文件。此外,还包括11个.html文件,6个.bmp文件,6个.js文件,6个.gif文件和4个.png...

    将生成的Excel文件与VC+ 将生成的Excel文件与VC+

    标题和描述中提到的"将生成的Excel文件与VC+"可能是指在Visual C++(VC++)环境中操作和处理Excel文件。这通常涉及到使用Microsoft Office的自动化接口,如Automation或COM(Component Object Model),来创建、修改...

    根据excel文件生成oracle表,并导入数据

    2&gt;:选择Excel文档,输入设置信息,创建数据库表结构; 3&gt;:点击导入数据按钮,导入数据; 4&gt;:导入成功后,查看并核对数据! 注意:使用时请确保标题列,没有重复列名,特殊字符等数据库不支持项目。

    导入Excel快速生成DTO

    "导入Excel快速生成DTO"这个标题暗示了一个工具或库,它能帮助开发者从Excel文件中快速创建对应的Java Bean类,从而提高开发效率。下面我们将深入探讨这一主题。 首先,我们需要理解什么是DTO。DTO是一种无业务逻辑...

    Excel文件生成

    在IT行业中,Excel文件生成是一项常见的任务,尤其是在数据分析、报告制作和数据导出等领域。当数据库中的大量数据需要被处理或展示时,将这些数据转化为Excel格式是一个实用的方法。本篇将详细介绍如何利用XML来...

    Excel生成Proto类、Proto管理类、Bytes文件 C#源码

    1、通过Excel生成Proto文件。 2、通过Proto文件创建Proto类。 3、通过Proto类,序列化出Bytes文件。 (1)差异化打表,加快打表...5、根据Excel文件生成C#对应枚举,加快开发。 6、单独处理网络proto文件,创建Proto类

    根据Excel生成建表语句源码.rar

    为了提高效率,自动化这个过程是必要的,这就涉及到了如何从Excel文件生成相应的数据库建表语句(SQL语句)。"根据Excel生成建表语句源码.rar"这个压缩包文件提供了一种解决方案,它包含了一段用于自动化生成SQL建表...

    Java生成excel文件

    Java生成excel文件Java生成excel文件Java生成excel文件Java生成excel文件Java生成excel文件Java生成excel文件Java生成excel文件Java生成excel文件

    从excel模版生成数据库表DDL

    想找个从设计文档直接生成DDL的工具,发现这里太少了,所以找了一个上传。 功能比较强大,支持的数据库有: DB2 MariaDB MySQL Oracle PostgreSQL SQL Server SQLite 功能有: Create Tables SQL Drop Tables SQL ...

    基于Excel文件格式的报表生成器1

    4. **报表生成器的做法**:报表生成器通过定义Excel文件模板,然后在配置文件中配置报表及其数据源信息,实现了数据生成与Excel文件生成的分离。在页面上通过调用`report.do`并传递报表名称和参数来触发报表生成。 ...

    一个可以生成excel文件的php类库.zip

    这个文件可能包含了实现Excel文件生成的所有函数和类,包括但不限于创建工作簿、工作表,添加单元格数据,设置样式等功能。开发者可以通过阅读和分析这些源代码,了解如何使用类库来创建自己的Excel文件。 在实际...

    接口开发时,利用Excel快速生成实体类

    "利用Excel快速生成实体类"是一种巧妙的方法,它能够帮助开发者高效地从接口文档中提取数据结构并自动生成对应的实体类代码。这种方法主要适用于C#等面向对象的语言,因为它们通常需要定义数据模型来与后端接口进行...

Global site tag (gtag.js) - Google Analytics