java实现赋值excel模板,并在新文件中写入数据,并且下载

2022-12-11,,,,

/**
* 生成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();
}
}
}

  

出处:https://www.cnblogs.com/kisstear/p/5461494.html

java实现赋值excel模板,并在新文件中写入数据,并且下载的相关教程结束。

《java实现赋值excel模板,并在新文件中写入数据,并且下载.doc》

下载本文的Word格式文档,以方便收藏与打印。