JAVA通过poi实现引入Excel,修改后写入另一个Excel功能

1.本文是用jsp+servlet技术实现该功能。

2.该功能的本质是使用poi对Excel进行读取和写入功能,流程为:读取Excel文件->修改数据->将修改过的Excel导入到一个新的Excel。

3.本文需要引入Apache的  poi-3.15.jar 包,官网下载地址为:http://poi.apache.org/download.html。

       本实例包含3个java类及一个jsp。

       首先创建一个jsp,用来上传excel,页面只有一个文件上传框,使用post方法上传,body部分代码如下,

  
    

      创建servlet类,代码如下:

package com.servlet;

import java.io.File;
import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.util.ExcelUtil;

public class ExcelServlet extends HttpServlet {

	public ExcelServlet() {
		super();
	}

	public void destroy() {
		super.destroy(); 

	}

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//获取文件路径
		String path = request.getParameter("excelText");
		//创建文件
		File file = new File(path);
		//调用自定义的工具类完成整个功能
		ExcelUtil.readExcel(file);
	}

	public void init() throws ServletException {
		// Put your code here
	}

}

       以下代码为本实例的关键代码,本实例的主要功能在以下类中实现,代码如下:

 

package com.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.UUID;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
public class ExcelUtil {
	public static void readExcel(File file) throws IOException {
		//创建输入流
		FileInputStream fis = new FileInputStream(file);
		//用POIFSFileSystem来解析文件
		POIFSFileSystem ts = new POIFSFileSystem(fis);
		//将一个Excel读入到workbook中
		HSSFWorkbook workbook = new HSSFWorkbook(ts);
		//读取第一个sheet页(sheet页编号从0开始)
		HSSFSheet sh = workbook.getSheetAt(0);

		//改变一个单元个中的值(以下例子改变的是第5行,第3列的值)
		sh.getRow(4).getCell(2).setCellValue("20");

		
		//用UUID生成随机数,作为新excel文件的名字
		String name = UUID.randomUUID().toString();
		//创建一个向指定位置写入文件的输出流
		FileOutputStream os = new FileOutputStream("D:\\"+name+".xls");
		//向指定的文件写入excel
		workbook.write(os);
		
		//关闭流
		fis.close();
		os.close();
		workbook.close();
	}

}

 

 

 

 

 

        第三个类是中文过滤器类,防止文件名为中文时出现乱码,代码较简单,为缩减篇幅,源码就不粘贴了。



 

 

 

 



你可能感兴趣的:(其他)