文档章节

Java 使用POI实现execl的导入导出数据实践

涂孟超
 涂孟超
发布于 2013/08/21 13:19
字数 876
阅读 2862
收藏 21

该篇文章使用poi3.5的版本

需要导入包如下

execl导入

/**
	 * execl 数据导入
	 * @author 小涂
	 * @title : import_excel
	 * @date Aug 21, 2013 1:04:42 PM
	 * @return String
	 */
	public static String import_excel(){
		String id=null;
		String name=null;
		String  sex=null;
		String  Dormitory=null;
		String Sept=null;

		Workbook workbook = null;
		int k=0;
		int flag = 0;   //指示指针所访问的位置
		String path="C:/Users/X/Desktop/212.xls";//获取文件的路径
		try {
			InputStream is = new FileInputStream(path);
			HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);

			// 循环工作表Sheet
			for (int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++) {
				HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);
				if (hssfSheet == null) {
					continue;
				}
				// 循环行Row
				for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {
					HSSFRow hssfRow = hssfSheet.getRow(rowNum);
					if (hssfRow == null) {
						continue;
					}
					// 循环列Cell
					// "学号","姓名","性别","寝室号","所在系"};
					for (int cellNum = 0; cellNum <=4; cellNum++) {
						HSSFCell xh = hssfRow.getCell(cellNum);
						if (xh == null) {
							continue;
						}
						System.out.print(getValue(xh)+"\t");
					}
					System.out.print("\n");
				}
			}
		}catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}

		return  null;
	}

	
    /**
     * 得到Excel表中的值
     * 
     * @param hssfCell
     *            Excel中的每一个格子
     * @return Excel中每一个格子中的值
     */
    @SuppressWarnings("static-access")
    private static String getValue(HSSFCell hssfCell) {
        if (hssfCell.getCellType() == hssfCell.CELL_TYPE_BOOLEAN) {
            // 返回布尔类型的值
            return String.valueOf(hssfCell.getBooleanCellValue());
        } else if (hssfCell.getCellType() == hssfCell.CELL_TYPE_NUMERIC) {
            // 返回数值类型的值
            return String.valueOf(hssfCell.getNumericCellValue());
        } else {
            // 返回字符串类型的值
            return String.valueOf(hssfCell.getStringCellValue());
        }
    }

导出execl 文件

/**
	 * 导出execl 文件
	 * @author 小涂
	 * @title : extport
	 * @date Aug 21, 2013 12:27:38 PM
	 * @return String
	 */

	public String extport(){
		List studentList=new ArrayList<Student>();//学生LIst

		for(int i=0;i<10;i++)
		{   Student student=new Student();//学生对象
		student.setStudentId("200908110"+i);
		student.setStudentName("杨波"+i);
		student.setStudentSex("男");
		student.setStudentDormitory("14-20"+i);
		student.setStudentSept("软件工程系");
		studentList.add(student);
		}

		String []tableHeader={"学号","姓名","性别","寝室号","所在系"};

		short cellNumber=(short)tableHeader.length;//表的列数
		HSSFWorkbook workbook = new HSSFWorkbook();   //创建一个excel
		HSSFCell cell = null;                                    //Excel的列
		HSSFRow row = null;                                      //Excel的行
		HSSFCellStyle style = workbook.createCellStyle();        //设置表头的类型
		style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
		HSSFCellStyle style1 = workbook.createCellStyle();       //设置数据类型
		style1.setAlignment(HSSFCellStyle.ALIGN_CENTER);
		HSSFFont font = workbook.createFont();                 //设置字体
		HSSFSheet sheet = workbook.createSheet("sheet1");        //创建一个sheet
		HSSFHeader header = sheet.getHeader();//设置sheet的头
		try {              
			if(studentList.size() < 1 ){
				header.setCenter("查无资料");
			}else{
				header.setCenter("学生表");
				row = sheet.createRow(0);
				row.setHeight((short)400);
				for(int k = 0;k < cellNumber;k++){
					cell = row.createCell(k);//创建第0行第k列
					cell.setCellValue(tableHeader[k]);//设置第0行第k列的值
					sheet.setColumnWidth(k,8000);//设置列的宽度
					font.setColor(HSSFFont.COLOR_NORMAL);      // 设置单元格字体的颜色.
					font.setFontHeight((short)350); //设置单元字体高度
					style1.setFont(font);//设置字体风格
					cell.setCellStyle(style1);
				}

				for(int i = 0 ;i < studentList.size() ;i++){                            
					Student student1 = (Student)studentList.get(i);//获取student对象
					row = sheet.createRow((short) (i + 1));//创建第i+1行
					row.setHeight((short)400);//设置行高

					if(student1.getStudentId() != null){
						cell = row.createCell(0);//创建第i+1行第0列
						cell.setCellValue(student1.getStudentId());//设置第i+1行第0列的值
						cell.setCellStyle(style);//设置风格
					}
					if(student1.getStudentName() != null){
						cell = row.createCell(1); //创建第i+1行第1列

						cell.setCellValue(student1.getStudentName());//设置第i+1行第1列的值

						cell.setCellStyle(style); //设置风格
					}
					//由于下面的和上面的基本相同,就不加注释了
					if(student1.getStudentSex() != null){
						cell = row.createCell(2);
						cell.setCellValue(student1.getStudentSex());
						cell.setCellStyle(style);
					}
					if(student1.getStudentDormitory()!= null){
						cell = row.createCell(3);
						cell.setCellValue(student1.getStudentDormitory());
						cell.setCellStyle(style);
					}
					if(student1.getStudentSept() != null){
						cell = row.createCell(4);
						cell.setCellValue(student1.getStudentSept());
						cell.setCellStyle(style);
					}

				}

			}

		} catch (Exception e) {
			e.printStackTrace();
		}

		// HttpServletResponse response = null;//创建一个HttpServletResponse对象
		OutputStream out = null;
		try {
			out = new FileOutputStream(new File("C:/Users/X/Desktop/212.xls"));
			//response = ServletActionContext.getResponse();//初始化HttpServletResponse对象
	        //out = response.getOutputStream();//
		} catch (FileNotFoundException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		try {

//			 String headerStr ="student学生";
//			 headerStr =new String(headerStr.getBytes("gb2312"), "ISO8859-1");//headerString为中文时转码
//			 response.setHeader("Content-disposition","attachment; filename="+    headerStr+".xls");//filename是下载的xls的名,建议最好用英文
//			 response.setContentType("application/msexcel;charset=UTF-8");//设置类型
//			 response.setHeader("Pragma","No-cache");//设置头
//			 response.setHeader("Cache-Control","no-cache");//设置头
//			 response.setDateHeader("Expires", 0);//设置日期头
			
			workbook.write(out);
			out.flush();
			workbook.write(out);
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			try{
				if(out!=null){
					out.close();
				}
			}catch(IOException e){
				e.printStackTrace();
			}
		}
		return null;
	}

如果你是在web应用是使用请将Response 和out 的代码打开

测试结果

导出文件

导入数据

© 著作权归作者所有

涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
加载中

评论(1)

每天成长一点
这个写的不错哦
java poi导入excel日期处理

java导入execl常见问题 一,导入的日期为一串数字 如“320422192610161818” 1, 在java导出excel时获取到的日期或其他列是一串数字,并且不管怎么更改都为数字则可以判断为模板有问题 解决办...

菜鸟来了
2015/04/18
7.6K
1
Java Apache POI 操作 Excel 导出

版权声明:本文首发 http://asing1elife.com ,转载请注明出处。 https://blog.csdn.net/asing1elife/article/details/82655653 Java Apache POI 操作 Excel 导出 Java 可以通过 Apache POI......

asing1elife
2018/09/12
0
0
Java程序员从笨鸟到菜鸟之(一百零四)java操作office和pdf文件(二)利用POI实现数据导出excel报表

在上一篇博客中,我们简单介绍了java读取word,excel和pdf文档内容 ,但在实际开发中,我们用到最多的是把数据库中数据导出excel报表形式。不仅仅简单的读取office中的数据.尤其是在生产管理...

长平狐
2012/11/12
1K
0
GrapeCity Documents for Excel 与 Apache POI 功能对比

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 https://blog.csdn.net/powertoolsteam/article/details/95194828 GrapeCity Documents for ...

powertoolsteam
07/09
0
0
[转]Java大数据量导出Excel的问题

试共同条件: 数据总数为110011条,每条数据条数为19个字段。 电脑配置为:P4 2.67GHz,1G内存。 一、POI、JXL、FastExcel比较 POI、JXL、FastExcel均为java第三方开源导出Excel的开源项目。...

大冬
2011/07/28
4.4K
2

没有更多内容

加载失败,请刷新页面

加载更多

nettysocetio-demo1(nettysocetio通讯,两客户端聊天,群发消息改造)

前言: 网上大多数都是只能群发,或者只能发给自己.并没有一个案例完整的群发并且又可以客户端之间聊天的案例,特此改造好的案例给大家分享一下.只要是一对一聊天,一对多群发. 内容: 废话不多说...

RobertZhou
30分钟前
2
0
在Serverless Kubernetes集群中轻松运行Argo Workflow

导读 Argo是一个基于kubernetes实现的一个Workflow(工作流)开源工具,基于kubernetes的调度能力实现了工作流的控制和任务的运行。 目前阿里云容器服务ACK集群中已经支持工作流的部署和调度,...

阿里云官方博客
32分钟前
2
0
后端的轮子(三)--- 缓存

前言 前面花了一篇文章说数据库这个轮子,其实说得还很浅很浅的,真正的数据库比这复杂不少,今天我们继续轮子系列,今天说说缓存系统吧。 缓存是后端使用得最多的东西了,因为性能是后端开发...

java后端开发
39分钟前
2
0
​京交会组委会企业回访 信必优将携新产品再出发

2020年京交会将于明年5月28日至6月1日在北京举办。为给各界客商提供更多潜在合作机会,打造“永不落幕京交会”,11月12日,京交会组委会办公室举办首场会后集中采访活动,对入选“2019年京交...

symbiochina88
41分钟前
2
0
读「SOLID」的设计原则记录

阅读链接:https://xueyuanjun.com/post/9719 单一职责原则(Single Responsibility Principle) 一个类只做某一件事。 例:操作订单时我们需要查询数据进行验证 如果在订单类中直接查询MyS...

子尤-
46分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部