Excel 文档生成_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Excel 文档生成

Excel 文档生成

 2014/8/14 18:35:16  傻傻的聪明鬼  程序员俱乐部  我要评论(0)
  • 摘要:使用JavaPOI类库生成Excel文档,publicclassExcel{/****@Title:addMergeCellFile*@Description:TODO(生成多种表格)*@paramtablexml*@paramos*@paramtype*/publicvoidaddMergeCellFile(Stringtablexml,OutputStreamos,inttype){try{Documentdoc=DocumentHelper.parseText(tablexml)
  • 标签:excel 文档
使用Java POI 类库生成Excel文档,

class="java" name="code">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);
				
				

	}
上一篇: java设计原则 下一篇: xml文件操作
发表评论
用户名: 匿名