您的位置:首页 > 其它

复制Excel模板,填写Excel模板,然后下载

2016-10-27 11:08 363 查看
/**

* 生成excel并下载

*/

public void exportExcel(){

File newFile = createNewFile();

//File newFile = new File("d:/ss.xls");

//新文件写入数据,并下载*****************************************************

InputStream is = null;

HSSFWorkbook workbook = null;

HSSFSheet sheet = null;

try {

is = new FileInputStream(newFile);

workbook = new HSSFWorkbook(is);

//获取第一个sheet

sheet = workbook.getSheetAt(0);

} catch (Exception e1) {

e1.printStackTrace();

}

if(sheet != null){

try {

//写数据

FileOutputStream fos = new FileOutputStream(newFile);

HSSFRow row = sheet.getRow(4);

HSSFCell cell = row.getCell(1);

System.out.println(cell.getStringCellValue());

cell.setCellValue("ssssssssssssssssssssssssssssssssssssssssssss");

workbook.write(fos);

fos.flush();

fos.close();

//下载

InputStream fis = new BufferedInputStream(new FileInputStream(newFile));

HttpServletResponse response = this.getResponse();

byte[] buffer = new byte[fis.available()];

fis.read(buffer);

fis.close();

response.reset();

response.setContentType("text/html;charset=UTF-8");

OutputStream toClient = new BufferedOutputStream(response.getOutputStream());

response.setContentType("application/x-msdownload");

String newName = URLEncoder.encode("采购合同"+System.currentTimeMillis()+".xls", "UTF-8");

response.addHeader("Content-Disposition", "attachment;filename=\""+ newName + "\"");

response.addHeader("Content-Length", "" + newFile.length());

toClient.write(buffer);

toClient.flush();

}

catch(Exception e) {

e.printStackTrace();

}finally {

try {

if (null != is) {

is.close();

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

//删除创建的新文件

//this.deleteFile(newFile);

}

/**

* 复制文件

* @param s

* 源文件

* @param t

* 复制到的新文件

*/

public void fileChannelCopy(File s, File t) {

try {

InputStream in = null;

OutputStream out = null;

try {

in = new BufferedInputStream(new FileInputStream(s),1024);

out = new BufferedOutputStream(new FileOutputStream(t),1024);

byte[] buffer = new byte[1024];

int len;

while ((len=in.read(buffer))!=-1) {

out.write(buffer,0,len);

}

} finally {

if (null != in) {

in.close();

}

if (null != out) {

out.close();

}

}

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 读取excel模板,并复制到新文件中供写入和下载

* @return

*/

public File createNewFile(){

//读取模板,并赋值到新文件************************************************************

//文件模板路径

String path = this.getRequest().getRealPath(SystemConfig.FILETEMPLATE);

String fileName="purchaseContract.xls";

File file=new File(path+"/"+fileName);

//保存文件的路径

String realPath = ServletActionContext.getServletContext().getRealPath(SystemConfig.UPLOAD_FILE_DIR);

//新的文件名

String newFileName = "采购合同"+System.currentTimeMillis() + ".xls";

//判断路径是否存在

File dir = new File(realPath);

if(!dir.exists()){

dir.mkdirs();

}

//写入到新的excel

File newFile = new File(realPath, newFileName);

try {

newFile.createNewFile();

//复制模板到新文件

fileChannelCopy(file, newFile);

} catch (Exception e) {

e.printStackTrace();

}

return newFile;

}

/**

* 下载成功后删除

*

* @param files

*/

private void deleteFile(File... files) {

for (File file : files) {

if (file.exists()) {

file.delete();

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  2003excel POI 解析