`
weigang.gao
  • 浏览: 482366 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

"java+poi+Excel模板"制作简单的报表

 
阅读更多

工程目录结构以及所需的jar包如下:


 

工具:poi-2.0-RC2-20040102.jar(注意:这里并没有使用本机自带的Excel2007制作模板)

现在很多工具都要版本对应才能使用,eg:在使用poi-2.0-RC2时 必须使用老版本的Excel新建xls文件,Excel2007

新建的Excel是".xlsx"结尾的,不能使用poi-2.0-RC2。

又比如:在使用itext1.3时,使用现在普遍存在的adobe acrobat7.0以上的版本制作的模板都不行,但使用itext2.0就可以解决中文无法显示(或乱码的问题)

如果你电脑上安装的是Excel2007的话,可能就比较麻烦啦!当然也不是必须使用Excel来建立模板

我们可以这样做:使用poi自身来建立一个.xls文件,这个文件肯定是符合poi版本的

1.fos = new FileOutputStream(file); 直接建立一个xls文档

2.用如下方式

package com.excel;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFCell;
import java.io.FileOutputStream;
/**
 * 利用POI API创建Excel文档
 * @author fshitd88
 *
 */
public class CreateXL {
	/** Excel 文件要存放的位置,假定在D盘下。
	 * 现在D盘下还没有excel文件,通过下面成程序可以创建Excel文件 
	 * */
	public static String outputFile = "D:\\test.xls";

	public static void main(String argv[]) {
		try {
			// 创建新的Excel 工作簿
			HSSFWorkbook workbook = new HSSFWorkbook();
			// 在Excel工作簿中建一工作表,其名为缺省值
			// 如要新建一名为"效益指标"的工作表,其语句为:
			// HSSFSheet sheet = workbook.createSheet("效益指标");
			HSSFSheet sheet = workbook.createSheet();
			// 在索引0的位置创建行(最顶端的行)
			HSSFRow row = sheet.createRow((short) 0);
			// 在索引0的位置创建单元格(左上端)
			HSSFCell cell = row.createCell((short) 0);
			// 定义单元格为字符串类型
			cell.setCellType(HSSFCell.CELL_TYPE_STRING);
			cell.setCellValue("高红成");//写入中文有问题
			
			//解决中文件乱码
			HSSFCell cell1 = row.createCell((short) 1);
			cell1.setEncoding((short) 1);//解决中文乱码问题
			// 在单元格中输入一些内容
			cell1.setCellValue("高伟刚");//写入中文有问题
			// 新建一输出文件流
			FileOutputStream fOut = new FileOutputStream(outputFile);
			// 把相应的Excel 工作簿存盘
			workbook.write(fOut);
			fOut.flush();
			// 操作结束,关闭文件
			fOut.close();
			System.out.println("文件生成...");
		} catch (Exception e) {
			System.out.println("已运行 xlCreate() : " + e);
		}
	}
}

 修改Excel文件第一行,就形成了一个简单的模板了

package com.excel;

import java.io.File;
import java.sql.*;
import java.util.*;

import org.apache.poi.hssf.usermodel.*;
//import com.ageon_cnooc.common.util.POIFactoryImpl;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;

import com.vo.Agentinfo;

import java.io.FileInputStream;
import java.io.FileOutputStream;

//v1.01 20070423 jasonzhu 修改职级为CA的为LP职级

public class CardExcel {
	private static final int COL_POS = 0;
	private static final int ROW_POS = 1;
	public static void read(List<Agentinfo> agentinfos) {

		// 导出的Excel 名称
		String toFileName = "D:\\report" + "\\cardreport\\"
				+ "agCard_gaoweigang" + ".xls";
        //Excel模板(即第一行添加了相应的字段的Excel)
		 String templateName = "D:/report" + "/cardreport/" +
		 "agCardTemplate.xls";
		POIFSFileSystem pfs = null;
		HSSFWorkbook workbook = null;
		HSSFSheet sheet = null;
		HSSFRow hr = null;
		HSSFCell cell = null;
		FileOutputStream fos = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		// HSSFCellStyle cs=null;
		int rowPos = ROW_POS;
		int colPos = 0;

		try {

			// xls定义
			File file = new File(templateName);
//			fos = new FileOutputStream(file); //创建一个xls文件 ,注意不是xlsx文件,新建的是xlsx文件
			FileInputStream fis = new FileInputStream(file);
			pfs = new POIFSFileSystem(fis);
			workbook = new HSSFWorkbook(pfs);

			// TM报表
			sheet = workbook.getSheetAt(0);
			rowPos = ROW_POS;

			List cardStats = agentinfos;
			for (int i = 0; i < cardStats.size(); i++) {
				colPos = COL_POS;

				hr = sheet.createRow(rowPos);
				cell = hr.createCell((short) (colPos));
				// cell.setCellStyle(cs);
				cell.setEncoding((short) 1);
				cell.setCellValue(((Agentinfo) cardStats.get(i)).getAgbegdate());

				colPos = colPos + 1;
				cell = hr.createCell((short) (colPos));
				cell.setEncoding((short) 1);
				cell.setCellValue(((Agentinfo) cardStats.get(i)).getAgentId());

				// cell.setHidden(true);

				colPos = colPos + 1;
				cell = hr.createCell((short) (colPos));
				cell.setEncoding((short) 1);
				cell.setCellValue(((Agentinfo) cardStats.get(i)).getAgentname());

				colPos = colPos + 1;
				cell = hr.createCell((short) (colPos));
				cell.setEncoding((short) 1);
				cell.setCellValue(((Agentinfo) cardStats.get(i))
						.getAgidno());

				colPos = colPos + 1;
				cell = hr.createCell((short) (colPos));
				cell.setEncoding((short) 1);
				cell.setCellValue(((Agentinfo) cardStats.get(i)).getAgentaddress());

				colPos = colPos + 1;
				cell = hr.createCell((short) (colPos));
				cell.setEncoding((short) 1);
				cell.setCellValue(((Agentinfo) cardStats.get(i)).getAgentpost());

				colPos = colPos + 1;
				cell = hr.createCell((short) (colPos));
				cell.setEncoding((short) 1);
				cell.setCellValue(((Agentinfo) cardStats.get(i))
						.getAgentphone());

				colPos = colPos + 1;
				cell = hr.createCell((short) (colPos));
				cell.setEncoding((short) 1);
				cell.setCellValue(((Agentinfo) cardStats.get(i))
						.getAgentsubphone());

				colPos = colPos + 1;
				cell = hr.createCell((short) (colPos));
				cell.setEncoding((short) 1);
				cell.setCellValue(((Agentinfo) cardStats.get(i))
						.getAgentmobile());
				
				colPos = colPos + 1;
				cell = hr.createCell((short) (colPos));
				cell.setEncoding((short) 1);
				cell.setCellValue(((Agentinfo) cardStats.get(i)).getAgentmail());

				colPos = colPos + 1;
				cell = hr.createCell((short) (colPos));
				cell.setEncoding((short) 1);
				cell.setCellValue(((Agentinfo) cardStats.get(i)).getAgarea());

				rowPos = rowPos + 1;

				cell = null;
				hr = null;
			}
			// test
			// HSSFCellStyle cs=null;
			// rowPos = rowPos + 1;
			// cell.setCellStyle(cs);
			// cs.setHidden(true);
			// test
			fos = new FileOutputStream(new File(toFileName));
			workbook.write(fos);
			fos.flush();
        
		} catch (Exception t) {
			t.printStackTrace();
		} finally {

			try {
				if (fos != null) {
					fos.close();
				}
				if (rs != null) {
					rs.close();
				}
				if (pstmt != null) {
					pstmt.close();
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
			workbook = null;
			pfs = null;
		}

	}

	/*      String agbegdate;
		this.agentId = agentId;
		this.agentname = agentname;
		this.agidno = agidno;
		this.agentaddress = agentaddress;
		this.agentpost = agentpost;
		this.agentphone = agentphone;
		this.agentsubphone = agentsubphone;
		this.agentmobile = agentmobile;
		this.agentmail = agentmail;
		this.agarea = agarea;
	}
	 */
	public static void main(String[] args) {
		List<Agentinfo> agentinfos = new ArrayList<Agentinfo>();
		Agentinfo agentinfo1 = new Agentinfo("20140108", "0000000066", "高伟刚",
				"gaoweigang","上海某某区", "20000",  "154817191469", "95814154", 
				"13817191469",  "1245508765@qq.com", "shanghai");
		agentinfos.add(agentinfo1);
		Agentinfo agentinfo2 =  new Agentinfo("20140109", "0000000067", "牛海龙",
				"liuhailong","上海某某区", "20000",  "15817191239", "9555222585", 
				"13817191469",  "138171921459@163.com", "shanghai");
		agentinfos.add(agentinfo2);
		read(agentinfos);

	}
}

 

 

 

  • 大小: 9.6 KB
分享到:
评论

相关推荐

    \"java+poi+Excel模板\"制作简单的报表

    标题中的“`java+poi+Excel模板`”指的是使用Java编程语言,结合Apache POI库来处理Microsoft Excel模板,以生成或编辑Excel报表的过程。Apache POI是一个流行的开源项目,它允许开发者使用Java读写Microsoft Office...

    springboot+poi导出指定格式Excel模板

    springboot+poi导出指定格式Excel模板,完整项目,导出即用。springboot+poi导出指定格式Excel模板,完整项目,导出即用。springboot+poi导出指定格式Excel模板,完整项目,导出即用。springboot+poi导出指定格式...

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

    因此,我们可以预先设计好Excel模板,包含所有需要的格式和样式,然后通过Java程序将数据填充到模板中,生成最终的报表。这种方法能够显著提高开发效率,同时确保报表的样式一致性。 3. 设计步骤 (1) 创建Excel报表...

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

    《使用Java+POI+模板技术生成复杂Excel报表》 在信息技术领域,数据的展示和分析是至关重要的,Excel作为一款强大的电子表格工具,被广泛应用于数据的整理和报表制作。然而,当需要自动化生成复杂的Excel报表时,...

    SpringBoot +Mybatis +POI导入、导出Excel文件

    而`导入的模板`可能是预设的Excel模板,用户按照这个模板填写数据,以便于系统正确解析和导入。 在实际开发中,可能还需要处理一些细节问题,比如数据验证、错误处理、多线程导入优化等。此外,为了提高用户体验,...

    FreeMarker+poi 模板生成word+导入图片

    FreeMarker和Apache POI是两种在Java开发中广泛使用的工具,它们在处理文档生成和操作方面各有专长。本文将详细介绍这两个库如何协同工作来创建带有图片的Word文档。 **FreeMarker** FreeMarker是一个模板引擎,...

    poi 操作excel模板

    本篇将深入探讨如何利用Apache POI来操作Excel模板,以及如何读取数据并将其填充到新生成的文件中,最终提供下载。 首先,你需要在项目中引入Apache POI的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下...

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

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

    java基于poi通过excel模板导出

    在Java编程领域,Apache POI库是一个非常流行的API,它允许开发者读取、写入以及修改Microsoft Office格式的文件,包括Excel。本篇文章将详细探讨如何利用POI库基于模板来导出Excel文档。 首先,我们需要理解Apache...

    Java POI下载Excel模板 Excel带有下拉框的模板

    Java POI下载Excel模板 Excel带有下拉框的模板,并有详细注释,生成exlcel的下拉框,必填项标红,数字栏位防止科学计数法,并设置Excel标题样式

    Java使用POI实现excel模板

    总结起来,使用Java结合Apache POI处理Excel模板,可以灵活地进行数据的填充和格式化,无论是简单的单个值设置,还是复杂的循环处理,都能满足需求。虽然代码可能不够完美,但通过不断学习和实践,我们可以逐渐优化...

    Java POI根据模板生成Excel(xlsx)文件

    这个过程涉及到对Excel模板的理解、读取、修改以及最终的保存。 首先,理解模板文件是关键。一个.xlsx模板文件实际上是由一系列XML文件组成,存储在ZIP压缩包内,这也就是.xslx文件的本质。模板中的单元格、公式、...

    springboot + poi导出指定格式Excel模板

    在本文中,我们将深入探讨如何使用SpringBoot和Apache POI库来导出指定格式的Excel模板。Apache POI是Java领域广泛使用的库,用于读写Microsoft Office格式的文件,其中包括Excel(.xlsx 和 .xls)文件。SpringBoot...

    java通过poi模板导出excel

    在Java中,我们可以创建一个Excel模板文件,然后使用POI库根据业务逻辑动态替换模板中的占位符。 1. **安装Apache POI**: 在项目中添加Apache POI依赖。如果你使用Maven,可以在pom.xml文件中加入以下依赖: ```...

    Java Struts2+poi插件 实现导出Excel

    在Java Web开发中,Struts2是一个非常流行的MVC框架,它简化了处理HTTP...总之,通过Struts2和Apache POI的结合,开发者可以方便地在Web应用中提供数据导出为Excel的功能,这对于数据分析、报表生成等场景非常实用。

    POI使用Excel模板文件循环输出行并导出Excel

    在这个特定的例子中,我们将讨论如何使用POI库基于一个Excel模板文件循环输出数据行,并将结果导出为新的Excel文件。 首先,我们需要理解POI库的基本概念。POI提供了HSSF(Horizontally SpreadSheet Format)和XSSF...

    SpringBootMybatis+poi+Thymeleaf实现excel文件数据导入到数据库以及从数据库将数据导出成excel.zip

    在本项目中,"SpringBootMybatis+poi+Thymeleaf实现excel文件数据导入到数据库以及从数据库将数据导出成excel.zip",我们主要关注的是如何利用Java技术栈来处理Excel文件,并与数据库进行交互。以下是相关知识点的...

    java使用 POI Excel模板导出数据

    这篇博客"java使用POI Excel模板导出数据"探讨了如何利用POI库在Java中创建Excel模板并填充数据。下面将详细介绍这个过程以及相关知识点。 首先,我们需要理解Apache POI的基本概念。POI是Apache软件基金会的一个...

    java的poi生成excel图表demo

    Java的Apache POI库是一个强大的工具,用于读取、创建和修改Microsoft Office格式的文件,尤其是Excel(.xlsx)文档。在本示例中,我们将深入探讨如何利用POI库来生成Excel中的图表曲线,这对于数据可视化和报告生成...

Global site tag (gtag.js) - Google Analytics