java读写创建excel

转载 2015年06月06日 11:03:37
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ReadWriteExcel {
	
	public static void readExcel(String fileName) throws FileNotFoundException, IOException, InvalidFormatException {
		Workbook workbook = WorkbookFactory.create(new FileInputStream(new File(fileName)));
		Sheet sheet = workbook.getSheetAt(0);
		List<Map<String, Object>> userList = new ArrayList<Map<String,Object>>();
		for(int i = 1 ; i < sheet.getPhysicalNumberOfRows(); i++) {
			Row row = sheet.getRow(i);
			Map<String, Object> user = new HashMap<String, Object>();
			Cell cell0 = row.getCell(0);	//username
			cell0.setCellType(Cell.CELL_TYPE_STRING);
			
			Cell cell1 = row.getCell(1);	//password
			cell1.setCellType(Cell.CELL_TYPE_STRING);
			
			Cell cell2 = row.getCell(2);	//register_time
			cell2.setCellType(Cell.CELL_TYPE_NUMERIC);
			
			user.put("username", cell0.toString());
			user.put("password", cell1.toString());
			user.put("register_time", cell2.toString());
			userList.add(user);
			System.out.println(user);
		}
	}
	
	public static void createExcel(String filePath) throws IOException {
		XSSFWorkbook workBook = new XSSFWorkbook();	//创建 一个excel文档对象(office 2007)
		//HSSFWorkbook workBook = new HSSFWorkbook();//创建office 2003版本的excel
		XSSFSheet sheet = workBook.createSheet();	//创建一个工作薄对象
		sheet.setColumnWidth(1, 10000);// 设置第二列的宽度
		
		XSSFRow row = sheet.createRow(1);// 创建一个行对象(此处为第2行)
		row.setHeightInPoints(23);// 设置行高23像素
		
		XSSFCellStyle style = workBook.createCellStyle();// 创建样式对象
		// 设置字体
		XSSFFont font = workBook.createFont();// 创建字体对象    
		font.setFontHeightInPoints((short)15);// 设置字体大小    
		font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 设置粗体    
		font.setFontName("黑体");// 设置为黑体字    
		style.setFont(font);// 将字体加入到样式对象    
		
		// 设置对齐方式 
		style.setAlignment(HSSFCellStyle.ALIGN_CENTER_SELECTION);// 水平居中    
		style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 垂直居中
		
		// 设置边框 
		style.setBorderTop(HSSFCellStyle.BORDER_THICK);// 顶部边框粗线    
		style.setTopBorderColor(HSSFColor.RED.index);// 设置为红色
		style.setBorderBottom(HSSFCellStyle.BORDER_DOUBLE);// 底部边框双线    
		style.setBorderLeft(HSSFCellStyle.BORDER_MEDIUM);// 左边边框    
		style.setBorderRight(HSSFCellStyle.BORDER_MEDIUM);// 右边边框
		
		XSSFCell cell1 = row.createCell(1);// 创建单元格(第二行第二列)
		SimpleDateFormat format = new SimpleDateFormat("yy/MM/dd HH:mm");
		cell1.setCellValue(format.format(new Date()));// 写入当前日期    
		cell1.setCellStyle(style);// 应用样式对象
		
		XSSFCell cell2 = row.createCell(2);// 创建单元格(第二行第三列)
		cell2.setCellValue("write excel2007 test!");
		
		// 文件输出流 
		FileOutputStream os = new FileOutputStream(filePath);
		workBook.write(os);// 将文档对象写入文件输出流    
		os.close();// 关闭文件输出流 
		System.out.println("创建成功 office 2007 excel");
	}
	
	public static void main(String[] args) throws FileNotFoundException, IOException, InvalidFormatException {
		createExcel("E:/writetest.xlsx");
		readExcel("E:/users.xls");
	}
	
}

writetest.xlsx


users.xls


output:

创建成功 office 2007 excel
{username=张三, register_time=08-八月-2014, password=123456}
{username=李四, register_time=10-一月-2015, password=654321}

使用XSSFWork创建的xlsx后缀Excel文件无法打开

使用XSSFWork创建的xlsx后缀Excel文件无法打开
  • iaiti
  • iaiti
  • 2015年04月21日 10:49
  • 7223

大数据导出POI之SXSSFWorkbook

最近要求一次性导出50W以上的数据,TMD 开始用的是XSSFWorkbook瞬间内存暴涨到2G然后内存溢出了,嘎嘎…… 查了API才知道POI还有SXSSFWorkbook专门处理大数据,爱死你了P...
  • u014363151
  • u014363151
  • 2014年07月31日 18:06
  • 14557

poi导出Excel,HSSFWorkbook与XSSFWorkbook区别

之前导出均用HSSFWorkbook,后来发现超出65536条后系统就报错, 经过网上查询资料得出,XSSFWorkbook可以导出 然后程序又报OutOfMemoryError:java...
  • lvhongfen
  • lvhongfen
  • 2015年05月25日 12:02
  • 16439

POI操作Excel详解,HSSF和XSSF两种方式

HSSF方式: package com.tools.poi.lesson1; import java.io.FileInputStream; import java.io.FileNotFound...
  • softwave
  • softwave
  • 2014年07月23日 22:51
  • 91496

POI Workbook接口和HSSFWorkbook对象和XSSFWorkbook对象操作相应excel版本

由于HSSFWorkbook只能操作excel2003一下版本,XSSFWorkbook只能操作excel2007以上版本,所以利用Workbook接口创建对应的对象操作excel来处理兼容性 @Te...
  • zb0567
  • zb0567
  • 2017年05月06日 09:56
  • 2193

利用SXSSFWorkbook导出excel

项目需要一次性导出几十万数据,于是乎就SXSSFWorkbook导出excel了,写了个导出的工具类,还能要完善它,这个只是1.0版本,但是基本需求能够满足了 package com.fnst.fr...
  • ll840768874
  • ll840768874
  • 2017年12月04日 17:53
  • 292

POI实现读写Excel2007完整示例--每分钟约处理7000行数据

流程:(跟jxl相似,只是读取逻辑有点不同) 跟jxl的两处主要区别: 1、读取和写入方式略有不同: (1)  poi 读取: FileInputStream input = new...
  • Little_Stars
  • Little_Stars
  • 2012年11月22日 08:22
  • 42313

java 后台 Excel 文件生成后转化为字节流

Java 后台 Excel 文件生成后转化为字节流java excel 使用 poi组件, HSSFWorkbook workBook = new HSSFWorkbook(); 对于workBoo...
  • u011109420
  • u011109420
  • 2016年05月06日 12:42
  • 9651

利用java创建Excel表格步骤

第一步:创建一个web project工程,建一个包,在包下建一个java文件 第二步:将Excel的四个要用的夹包导入工程中,这四个夹包是97版的和07版的 poi-3.14-20160...
  • miachen520
  • miachen520
  • 2016年07月27日 17:08
  • 6832

java使用Workbook进行excel读取和创建

public static void main(String[] args) throws Exception { //输入流。a.xls为要读取的excel文件名,不可为xlsx后缀...
  • u012012240
  • u012012240
  • 2016年12月29日 16:05
  • 5108
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java读写创建excel
举报原因:
原因补充:

(最多只允许输入30个字)