文档章节

java操作excel

嗡嗡作响
 嗡嗡作响
发布于 2017/04/22 18:44
字数 467
阅读 29
收藏 0

主要介绍读取excel和写入excel,以及更改excel中内容(模板)

网上有很多针对03版execl写入的教程,此处不做介绍

需要的jar包如图:

文本中三个方法,分别对应读取excel,修改excel,和新建excel

 

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

/**
 * @author 嗡嗡作响
 * 仅针对07版本excel说明,03版网上有很多教程,请自行参考
 * */
public class DoExcel {
	
	//读取excel文件,放入Map中,实际一般是放在po中
	@SuppressWarnings("unchecked")
	public List<Map> read(String filepath) {
		XSSFWorkbook wb;
		List<Map> list = new ArrayList<Map>();
		try {
			wb = new XSSFWorkbook(new FileInputStream(filepath));
			XSSFSheet sheet = wb.getSheetAt(0);
			XSSFRow row;
			for (int i = sheet.getFirstRowNum(); i < sheet
					.getPhysicalNumberOfRows(); i++) {
				row = sheet.getRow(i);
				Map<String, String> map = new HashMap<String, String>();
				if (row.getCell(0) != null) {
					map.put("index0", row.getCell(0).toString());
				}
				if (row.getCell(1) != null) {
					map.put("index1", row.getCell(1).toString());
				}
				if (row.getCell(2) != null) {
					map.put("index2", row.getCell(2).toString());
				}
				list.add(map);
			}

		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		return list;
	}
	//写入新的excel中,可预设定excel模板,向模板中加数据,导出新的excel
	public void writeExcel(String filepath1) {
		Workbook wb = null;
		FileOutputStream out = null;
		try {
			wb = new XSSFWorkbook(new FileInputStream(filepath1));
			Sheet sh = wb.getSheetAt(0);
			Row row = sh.getRow(2);
			Cell cell = row.createCell(0);
			String value = "料號";
			cell.setCellValue(value);
			out = new FileOutputStream("d:\\test\\testnew.xlsx");
			//wb.write(out);
			System.out.println("OK");
		} catch (Exception e) {
			// TODO: handle exception
		} finally {
			try {
				if (out != null) {
					wb.write(out);
					out.flush();
					out.close();
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
//新建excel的demo,仅作参考
	public void writeExcelDemo() {
		Workbook wb = new SXSSFWorkbook(100);//内存保留 100 条数据,避免内存溢出,其余写入 硬盘
		Sheet sh = wb.createSheet();//创建sheet
		Row row = sh.createRow(0);//创建行
		Cell cell = row.createCell(0);//创建对应行的第几列
		String value = "料號";
		cell.setCellValue(value);
		cell = row.createCell(1);
		value = "物料名稱";
		cell.setCellValue(value);
		FileOutputStream out;
		try {
			out = new FileOutputStream("d:\\test\\username.xlsx");//输出文件路径
			try {
				wb.write(out); 
				out.close();
				System.out.println("ok");
			} catch (IOException e) {
				// 
				e.printStackTrace();
			}

		} catch (FileNotFoundException e) {
			// 
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		//List<Map> aa = new ReadExcel().read("D:\\test\\test.xlsx");
		//System.out.println(aa);
		new DoExcel().writeExcel("D:\\test\\test111.xlsx");
		System.out.println("---");
	//	new ReadExcel().writeExcelDemo();
	}
}

 

© 著作权归作者所有

上一篇: HTML布局
嗡嗡作响
粉丝 1
博文 30
码字总数 21952
作品 0
成都
程序员
私信 提问

暂无文章

解决vim打开之后乱码的问题

在Windows中的文档,传输到Linux系统中(使用rz命令),出现乱码 root@localhost ~]# rpm -qf `which iconv` glibc-common-2.17-105.el7.x86_64 [root@localhost ~]# rpm -ihv /mnt/Packages......

寰宇01
35分钟前
2
0
aldi 2017年1月记录

../../tools/CBLAS/lib/cblas_LINUX.a ../../tools/lapack-3.4.2/liblapacke.a \../../tools/lapack-3.4.2/librefblas.a -lgfortran \../../tools/lapack-3.4.2/liblapack.a \../../......

MtrS
36分钟前
2
0
Choerodon如何进行日志收集与告警

作者:董文启 应用程序日志是由软件应用程序记录的事件文件, 它一般包含错误,信息事件和警告。一个良好的日志系统有助于快速发现问题,定位问题,同时也为业务分析起到一定的作用。 传统E...

Choerodon
48分钟前
3
0
js二维码生成插件“jquery.qrcode.min.js”

<!doctype html> <html> <head> <meta charset="utf-8" /> <title>生成二维码</title> <script type='text/javascript' src='http://cdn.staticfile.org/jquery/2.1.1/jquery.min.js'></scri......

泉天下
51分钟前
1
0
Spring AOP之同一个对象方法内部自调用导致事务失效问题

对于像我这种喜欢滥用AOP的程序员,遇到坑也是习惯了,不仅仅是事务,其实只要脱离了Spring容器管理的所有对象,对于SpringAOP的注解都会失效,因为他们不是Spring容器的代理类,SpringAOP,就切入不...

xiaomin0322
57分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部