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

poi 生成excel报表一般步骤

阅读更多

//表题

//表头

//数据

//合并区域

//是否显示网格线

//行号

//外边框加粗

//内边框普通

//设置打印区域

//打印设置

 

	public static  Workbook getWorkbook(ProjectStatReporter reporter){
		List<String> x=reporter.getX();
		List<String> f=reporter.getStatField();
		List<List<String>> y=reporter.getY();
		Workbook workbook = new HSSFWorkbook();
		Sheet sheet=workbook.createSheet();
		//x行  和度量值
		Row rowx=sheet.createRow(0);
		Row rowf=sheet.createRow(1);
		
		Font font = workbook.createFont();
	    font.setFontName("宋体");
	    font.setBoldweight(Font.BOLDWEIGHT_BOLD);

		for(int i=0;i<x.size();i++){
			//x
			RichTextString richString = new HSSFRichTextString(x.get(i));
			richString.applyFont(font);   
			createCell(workbook, rowx, i*f.size()+1, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_BOTTOM,richString);
			//度量值 
			for(int j=0;j<f.size();j++){				
				RichTextString richString2 = new HSSFRichTextString(f.get(j));
				richString2.applyFont(font);   
				createCell(workbook, rowf, i*f.size()+1+j, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_BOTTOM,richString2);
		    }
		
		}
		
		//y数据
		
		for(int i=0;i<y.size();i++){
			Row row=sheet.createRow(i+2);
			for(int j=0;j<y.get(i).size();j++){
				if(j==0){//第一列  字体加粗
					RichTextString richString = new HSSFRichTextString(y.get(i).get(j));
					richString.applyFont(font);   
					createCell(workbook, row, j, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_BOTTOM,richString);
				}else{
					createCell(workbook, row, j, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_BOTTOM,y.get(i).get(j));
				}
				
			}
		}
		//合并区域
		sheet.addMergedRegion(new CellRangeAddress(0,1,0,0));//左上角的空白
		for(int i=0;i<x.size();i++){//合并x
	      sheet.addMergedRegion(new CellRangeAddress(0,0,i*f.size()+1,i*f.size()+1+f.size()-1));
		}
		//样式:不显示网格线 居中  行号25.5  外边框加粗   内边框普通   row0 1 字体宋体加粗  col 1 字体宋体加粗
		//不显示网格线
		sheet.setDisplayGridlines(false);
		//居中   row0 1 字体宋体加粗  col 1 字体宋体加粗
		             //调用createcell()
		//行号25.5
		for(int i=0;i<2+y.size();i++){
			Row row=sheet.getRow(i);
			row.setHeightInPoints((float) 25.5);
		}
		//外边框加粗
		
		CellRangeAddress region=new CellRangeAddress(0,2+y.size()-1,0,x.size()*f.size());
		RegionUtil.setBorderBottom(CellStyle.BORDER_THICK, region, sheet, workbook);
		RegionUtil.setBorderLeft(CellStyle.BORDER_THICK, region, sheet, workbook);
		RegionUtil.setBorderRight(CellStyle.BORDER_THICK, region, sheet, workbook);
		RegionUtil.setBorderTop(CellStyle.BORDER_THICK, region, sheet, workbook);
          
		//内边框普通
		    //调用createcell() 中设置
		
		//返回
		//测试
		Sheet sheet1 = workbook.createSheet("new sheet");

	    sheet1.groupRow( 5, 14 );
	    sheet1.groupRow( 7, 14 );
	    sheet1.groupRow( 16, 19 );

	    sheet1.groupColumn( (short)4, (short)7 );
	    sheet1.groupColumn( (short)9, (short)12 );
	    sheet1.groupColumn( (short)10, (short)11 );


		return  workbook;
	}

  

   

	private static void createCell(Workbook wb, Row row, int column, short halign, short valign,String text){
        Cell cell = row.createCell(column);
        cell.setCellValue(text);
        CellStyle cellStyle = wb.createCellStyle();
        cellStyle.setAlignment(halign);
        cellStyle.setVerticalAlignment(valign);
        
        cellStyle.setBorderBottom(CellStyle.BORDER_THIN);
        cellStyle.setBorderLeft(CellStyle.BORDER_THIN);
        cellStyle.setBorderRight(CellStyle.BORDER_THIN);
        cellStyle.setBorderTop(CellStyle.BORDER_THIN);
        cell.setCellStyle(cellStyle);
    }
	
	private static void createCell(Workbook wb, Row row, int column, short halign, short valign,RichTextString richText){
        Cell cell = row.createCell(column);
        cell.setCellValue(richText);
        CellStyle cellStyle = wb.createCellStyle();
        cellStyle.setAlignment(halign);
        cellStyle.setVerticalAlignment(valign);
        cell.setCellStyle(cellStyle);
        cellStyle.setBorderBottom(CellStyle.BORDER_THIN);
        cellStyle.setBorderLeft(CellStyle.BORDER_THIN);
        cellStyle.setBorderRight(CellStyle.BORDER_THIN);
        cellStyle.setBorderTop(CellStyle.BORDER_THIN);
        cell.setCellStyle(cellStyle);
    }

 

分享到:
评论

相关推荐

    java生成excel图表

    Java生成Excel图表的步骤: 1. 导入必要的库和框架,例如JFreeChart、Apache POI等。 2. 创建一个Java类,例如CreateChartServiceImpl。 3. 在main方法中,创建一个CreateChartServiceImpl对象,并调用其方法来...

    poi导出excel参考方法

    此外,POI还可以用于生成报表、图表等。 8. POI与其他Office文档处理库的比较 POI与其他Office文档处理库,例如Apache OpenXML、JExcelApi等,具有不同的特点和优缺点。POI的优点是它可以操作多种Office文档格式,...

    java 开发excel报表

    在Java开发中,生成Excel报表是一项常见的任务,特别是在数据分析、数据导出或提供用户友好的数据展示场景下。本文将详细探讨如何使用Java技术来创建Excel报表,主要涉及两个核心部分:数据库连接和使用Apache POI库...

    java生成excel

    Java 生成 Excel 文件的步骤 1. 首先,需要引入 Apache POI 库,Apache POI 库提供了一个完整的解决方案来生成 Excel 文件。 2. 创建一个 HSSFWorkbook 对象,用于生成 Excel 文件。 3. 创建一个 HSSFSheet 对象,...

    “java+poi+模板”打造复杂excel报表.pdf

    POI提供了一套API,可以方便地操作Excel的单元格、行、列以及样式等元素,使得在Java中生成复杂的Excel报表成为可能。 2. 使用模板方法 面对复杂的报表结构,直接通过代码生成所有细节可能会变得非常繁琐且容易出错...

    “java+poi+模板”打造复杂excel报表.docx

    然而,当需要自动化生成复杂的Excel报表时,手动操作的效率就显得低下,此时,结合Java编程语言和Apache POI库,我们可以实现动态生成Excel报表的功能。本文将详细介绍如何利用Java+POI+模板的方式打造复杂Excel报表...

    poi制作报表

    【poi制作报表】是关于Java开发中利用Apache POI库创建和操作Microsoft Excel报表的技术介绍。Apache POI是一个开源项目,主要目标是处理OLE2对象,尤其是与Microsoft Office相关的文件格式,如Excel(HSSF接口)和...

    在JSP中导出pdf和excel.docx

    2. 创建 Excel 文件:使用 Apache POI 生成 Excel 文件,选择报表格式和输出路径。 3. 导出 Excel 文件:使用 Apache POI 导出 Excel 文件。 在 JSP 中可以使用多种方式来导出 PDF 和 Excel 文件。使用 iReport 和 ...

    struts2+poi实现导出Excel文件

    Struts2 和 Apache POI 的结合使用...通过以上步骤,可以成功利用 Struts2 和 Apache POI 实现 Web 应用程序中的 Excel 导出功能。这个功能广泛应用于数据分析、报表生成、数据交换等多种场景,极大地提高了工作效率。

    JAVA 无需JXL和POI用PageOffice自动生成Excel表格.pdf

    总之,PageOffice为Java开发者提供了一种高效、灵活的解决方案,可以在服务器端直接生成Excel报表,无需依赖JXL或POI。通过适当的配置和编程,你可以快速地构建起动态Excel报表系统,满足各种业务需求。

    利用Java生成Excel文件

    利用Java生成Excel文件是一项常见的需求,特别是在数据处理和报表生成的场景中。Apache POI是一个强大的库,专门用于处理Microsoft Office格式的文件,包括Excel。本文将详细介绍如何使用Java和POI库生成Excel文件,...

    Java-Excel报表开发POI(含详细的样式说明)

    【Java-Excel报表开发POI】使用Apache POI库创建和读取Excel文件是Java开发者进行数据导出或报告生成的常见任务。Apache POI是一个开源项目,它提供了API来处理Microsoft Office格式,特别是Excel(.xls和.xlsx)。...

    Java用poi读取excel文件.pdf

    Java 使用 Apache POI 读取 Excel 文件是一种常见的数据处理任务,尤其在数据分析、报表生成以及自动化测试等场景中。Apache POI 是一个流行的开源库,它允许开发者在 Java 应用程序中创建、修改和显示 Microsoft ...

    poi报表

    在本教程中,我们将深入探讨如何使用POI库生成Excel报表。 **1. POI简介** POI是Apache软件基金会Jakarta项目的一部分,提供了一个纯Java的解决方案来处理Microsoft Excel(XLS)文件。HSSF(Horrible Spreadsheet ...

    JAVA 无需JXL和POI用PageOffice自动生成Excel表格.docx

    加以下 Java 代码,以实现在空白 Excel 文件中创建出差开支预算表的功能: ```java Controller controller = new Controller(request);...这为开发者提供了一种高效、灵活的方式来处理动态生成Excel报表的需求。

    JAVA用POI读取和创建2003和2007版本Excel完美示例

    【JAVA使用POI操作Excel详解】 Apache POI 是一个开源的Java库,它允许程序员创建、修改和显示Microsoft Office格式的文件,特别是...无论是在数据分析、报表生成还是数据导入导出场景中,POI都是一个非常实用的工具。

    SSM框架使用POI技术导出Excel.pdf

    通过使用POI,开发者可以在SSM项目中生成动态的Excel报表,方便数据的导出和分析。 要将POI集成到SSM框架中,首先需要从Apache官网下载相应的jar包,这些包通常包括poi-ooxml和poi-ooxml-schemas等。将它们添加到...

    Springboot使用POI实现导出Excel文件示例

    通过以上步骤,你可以创建一个Spring Boot服务端,接收请求后生成Excel文件并返回给客户端进行下载。这种方式在需要批量导出数据或者报表时非常有用,可以提高工作效率,减少手动操作。记得在实际应用中,还需要考虑...

    java操作Excel(Jakarta_POI).pdf

    - **服务器端应用**:在 Web 应用中,POI 可用于生成报表或导出数据到 Excel,避免了在服务器端依赖本地代码或客户端插件的需求。 - **兼容性**:HSSF 提供了与 Excel 文件的高兼容性,生成的文件能被所有版本的 ...

Global site tag (gtag.js) - Google Analytics