`
西北小强
  • 浏览: 344770 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

poi读写Excel表格Demo

    博客分类:
  • Java
 
阅读更多

一、导入poi需要的jar包,最新jar包下载地址http://poi.apache.org/download.html导入导出Excel表所需的jar包如图所示。



 二、导入导出Excel 例子:

 

 

package com.util.excel;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

import org.apache.poi.ss.usermodel.Sheet;

import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ExcelUtil {
	
	public static final String HEADERINFO="headInfo";
	public static final String DATAINFON="dataInfo";
	
	/**
	 * 
	 * @Title: getWeebWork
	 * @Description: TODO(根据传入的文件名获取工作簿对象(Workbook))
	 * @param filename
	 * @return
	 * @throws IOException 
	 */
	public static Workbook getWeebWork(String filename) throws IOException{
		Workbook workbook=null;
		if(null!=filename){
			String fileType=filename.substring(filename.lastIndexOf("."),filename.length());
			FileInputStream fileStream = new FileInputStream(new File(filename));
			if(".xls".equals(fileType.trim().toLowerCase())){
				workbook = new HSSFWorkbook(fileStream);// 创建 Excel 2003 工作簿对象
			}else if(".xlsx".equals(fileType.trim().toLowerCase())){
				workbook = new XSSFWorkbook(fileStream);//创建 Excel 2007 工作簿对象
			}
		}
		return workbook;
	}
	/**
	 * 
	 * @Title: writeExcel
	 * @Description: TODO(导出Excel表)
	 * @param pathname:导出Excel表的文件路径
	 * @param map:封装需要导出的数据(HEADERINFO封装表头信息,DATAINFON:封装要导出的数据信息,此处需要使用TreeMap)
	 * 例如: map.put(ExcelUtil.HEADERINFO,List<String> headList);
	 * 		 map.put(ExcelUtil.DATAINFON,List<TreeMap<String,Object>>  dataList);
	 * @param wb
	 * @throws IOException
	 */
	public static void writeExcel(String pathname,Map<String,Object> map,Workbook wb) throws IOException{
		if(null!=map && null!=pathname){
			List<Object> headList = (List<Object>) map.get(ExcelUtil.HEADERINFO);
			List<TreeMap<String,Object>> dataList =  (List<TreeMap<String, Object>>) map.get(ExcelUtil.DATAINFON);
			CellStyle style = getCellStyle(wb);
			Sheet sheet = wb.createSheet();
			/**
			 * 设置Excel表的第一行即表头
			 */
			Row row =sheet.createRow(0);
			for(int i=0;i<headList.size();i++){
				Cell headCell = row.createCell(i);
				headCell.setCellType(Cell.CELL_TYPE_STRING);
				headCell.setCellStyle(style);//设置表头样式
				headCell.setCellValue(String.valueOf(headList.get(i)));
			}
			
			for (int i = 0; i < dataList.size(); i++) {
				Row rowdata = sheet.createRow(i+1);//创建数据行
				TreeMap<String, Object> mapdata =dataList.get(i);
				Iterator it = mapdata.keySet().iterator();
				int j=0;
				while(it.hasNext()){
					String strdata = String.valueOf(mapdata.get(it.next()));
					Cell celldata = rowdata.createCell(j);
					celldata.setCellType(Cell.CELL_TYPE_STRING);
					celldata.setCellValue(strdata);
					j++;
				}
			}
			File file = new File(pathname);
			OutputStream os = new FileOutputStream(file);
			os.flush();
			wb.write(os);
			os.close();
		}
	}
	/**
	 * 
	 * @Title: getCellStyle
	 * @Description: TODO(设置表头样式)
	 * @param wb
	 * @return
	 */
	public static CellStyle getCellStyle(Workbook wb){
		CellStyle style = wb.createCellStyle();
		Font font = wb.createFont();
		font.setFontName("宋体");
		font.setFontHeightInPoints((short)12);//设置字体大小
		font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//加粗
		style.setFillForegroundColor(HSSFColor.LIME.index);// 设置背景色
		style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
		style.setAlignment(HSSFCellStyle.SOLID_FOREGROUND);//让单元格居中
		//style.setWrapText(true);//设置自动换行
		style.setFont(font);
		return style;
	}
	
	/**
	 * 
	 * @Title: readerExcelDemo
	 * @Description: TODO(读取Excel表中的数据)
	 * @throws IOException
	 */
	public static void readerExcelDemo() throws IOException{
		/**
		 * 读取Excel表中的所有数据
		 */
		Workbook workbook=getWeebWork("E:/结算单503411妥投结算数据.xlsx");
		System.out.println("总表页数为:"+workbook.getNumberOfSheets());//获取表页数
		Sheet sheet =workbook.getSheetAt(0);
		int rownum=sheet.getLastRowNum();//获取总行数
		for (int i = 0; i < rownum; i++) {
			Row row =sheet.getRow(i);
			Cell orderno = row.getCell(2);//获取指定单元格中的数据
			System.out.println(orderno.getCellType());
			short cellnum=row.getLastCellNum(); //获取单元格的总列数
			for(int j=row.getFirstCellNum();j< row.getLastCellNum();j++){
				Cell celldata = row.getCell(j);
				System.out.print(celldata+"\t");
			}
			System.out.println();
		}
		
		/**
		 * 读取指定位置的单元格
		 */
		Row row1 = sheet.getRow(1);
		Cell cell1 = row1.getCell(2);
		System.out.print("(1,2)位置单元格的值为:"+cell1);
		BigDecimal big = new BigDecimal(cell1.getNumericCellValue());//将科学计数法表示的数据转化为String类型
		System.out.print("\t"+String.valueOf(big));
		
	}
	
	public static void main(String[] args) throws IOException {
		readerExcelDemo();
		
		Workbook wb = new XSSFWorkbook();
		Map<String,Object> map = new HashMap<String,Object>();
		List headList = new ArrayList();//表头数据
		headList.add("下单时间");
		headList.add("结账时间");
		headList.add("订单编号");
		headList.add("订单金额");
		headList.add("用户名");
		
		List dataList = new ArrayList();//表格内的数据
		for (int i = 0; i < 15; i++) {
			TreeMap<String,Object> treeMap = new TreeMap<String, Object>();//此处的数据必须为有序数据,所以使用TreeMap进行封装
			treeMap.put("m1", "2013-10-"+i+1);
			treeMap.put("m2", "2013-11-"+i+1);
			treeMap.put("m3", "20124"+i+1);
			treeMap.put("m4", 23.5+i+1);
			treeMap.put("m5", "张三_"+i);
			dataList.add(treeMap);
		}
		TreeMap<String,Object> treeMap1 = new TreeMap<String, Object>();
		treeMap1.put("asd", null);
		treeMap1.put("猪头", "zhutou");
		dataList.add(treeMap1);
		map.put(ExcelUtil.HEADERINFO, headList);
		map.put(ExcelUtil.DATAINFON, dataList);
		writeExcel("E:/test.xlsx", map, wb);
	}
}

 导出结果:



 

 

  • 大小: 133.9 KB
  • 大小: 92.7 KB
分享到:
评论

相关推荐

    java的poi生成excel图表demo

    在Java中,它允许开发者创建、修改和读取Excel工作簿、工作表以及单元格的数据。POI库不仅支持基本的文本和数字操作,还支持更高级的功能,如公式计算、样式设置和图表创建。 2. **创建Excel图表** 要生成Excel图表...

    poi生成excel表格

    在这个场景中,我们关注的是如何使用POI库在Java中生成Excel表格。以下是对标题、描述和标签所涉及知识点的详细说明: 1. **Apache POI 简介** Apache POI 是Java平台上的一个库,它允许开发者读写Microsoft ...

    JXL 和 POI 操作Excel 表格

    在IT行业中,处理数据时Excel表格经常被用作数据存储和分析的工具。JXL和Apache POI是两个Java库,专门设计用于读取、写入和操作Excel文件。这两个库为开发者提供了便利,使他们能够在Java应用程序中无缝地与Excel...

    ExcelDemo_Excel导出_下载_POI读excel_JXL读写excel_java读写excel_列宽_读取合并或拆分单元格内容

    以下是一个简单的POI读取Excel文件的例子: ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.File; import java.io.FileInputStream; import ...

    Android自定义excel表格demo下载

    本示例"Android自定义excel表格demo"提供了一个解决方案,它不仅能够生成Excel表格,还支持用户左右滑动查看更多的数据。下面将详细解释这个Demo中涉及的关键知识点。 1. **使用库**: 在Android中,由于原生SDK并不...

    使用PoI读取Excel插入库的Demo

    本Demo——"使用PoI读取Excel插入库的Demo"专注于演示如何利用Apache POI库来读取Excel文件,并将这些数据有效地存入MySQL数据库中。Apache POI是Java社区开发的一个开源项目,它提供了对Microsoft Office格式(如...

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

    2. **读取模板**: 使用POI的XSSFWorkbook类打开模板文件,这将返回一个Workbook对象,代表整个Excel文件。然后,通过工作簿获取对应的Sheet对象,这对应Excel中的工作表。 ```java FileInputStream fis = new ...

    poi操作Excel表格基本操作

    本文将深入探讨如何使用POI库中的XSSFWorkbook类进行Excel表格的基本操作。 一、XSSFWorkbook简介 XSSFWorkbook是Apache POI库中处理.xlsx(Excel 2007及以上版本)文件的核心类。它基于OOXML(Office Open XML)...

    读取EXCEL Demo&Servlet DEMO

    本项目“读取Excel Demo&Servlet Demo”提供了一个实例,演示了如何利用Java技术栈实现从Excel文件中读取数据,并通过Servlet框架将数据动态展示在网页上。以下将详细介绍其中涉及的关键知识点: 1. **Eclipse**:...

    poi导出world、excel的demo

    在这个"poi导出world、excel的demo"中,我们将探讨如何使用Apache POI库来创建和导出Word与Excel文档。 首先,让我们关注Excel文件的导出。Apache POI提供了HSSF和XSSF两个API,分别用于处理老版本的.BIFF8格式(....

    C#中读取Excel表格数据实例

    本示例将深入探讨如何在C#中不依赖Microsoft Office组件来读取Excel表格数据,这通常通过使用第三方库或者.NET Framework提供的System.Data.OleDb组件实现。 首先,我们介绍最常用的方法之一,即使用`System.Data....

    java操作excel表格的demo

    本示例("java操作excel表格的demo")将教你如何使用Java来读取、修改和创建Excel文件,主要涉及Apache POI库,这是一个强大的开源库,专门用于处理Microsoft Office格式的文件。 **Apache POI简介** Apache POI 是...

    Excel表格操作依赖包poi-3.9.jar和使用Demo

    5. **读取数据**:对于读取Excel文件,你需要先打开文件,然后遍历工作簿、工作表、行和单元格来获取数据。 ```java Workbook workbook = WorkbookFactory.create(new File("input.xlsx")); Sheet sheet = workbook...

    adnroid 终端Excel表格操作的demo

    本Demo主要展示了如何在Android设备上实现二维码扫描并结合Excel表格的读写功能。以下是对这个主题的详细阐述。 首先,我们需要理解的是,Android系统本身并不支持直接处理Excel文件,因此需要借助第三方库或者服务...

    poi导入导出DEMO

    在“poi导入导出DEMO”这个示例中,我们将聚焦于如何使用Java POI来实现Excel文件的导出功能,并且在浏览器中弹出下载对话框。 首先,我们需要引入POI相关的依赖库。在Maven项目中,可以在pom.xml文件中添加以下...

    poiDemo_Excel下载

    Apache POI是Java平台上的一个开源库,主要用于读取和写入Microsoft Office格式的文件,如Excel(.xlsx, .xls)。 在描述中提到的“一个小demo”,暗示了这是一个简单的应用实例,其主要功能是提供一个直接下载...

    android解析excel表格的完整Demo

    导入项目如果不能正常运行,请按下面步骤:项目右键-&gt;properties-&gt;java build path-&gt;order and export-&gt;把poi-3.9-20121203.jar打钩,然后确定!运行项目,看控制台打印信息。

    读取excel表格数据,实现批量插入数据的功能

    读取excel表格数据,实现批量插入数据的功能,资源包括:读取excel表格的工具类、导入excel表格的示例demo、pom文件的引用等,支持多级表头等多种excel表格形式,可拓展复用性强。欢迎大家评论下载~

    安卓Excelwordppt文档读写相关-adnroid二维码扫描机终端Excel表格操作的demo.rar

    这个压缩包“安卓Excelwordppt文档读写相关-adnroid二维码扫描机终端Excel表格操作的demo.rar”提供了一个示例项目,帮助开发者了解如何在Android应用中实现这些功能。 首先,对于Excel文档的读写,Android开发者...

    java POI完整示例,POI将word转HTML,数据库倒出数据到Excel等

    "POI将word转HTML.zip"和"demo1.zip"可能包含具体的Java代码示例,用于演示如何实现Word到HTML的转换以及数据库数据导出到Excel的操作。解压后,开发者可以查看源代码并根据自己的需求进行调整和应用。 总结,Java...

Global site tag (gtag.js) - Google Analytics