try {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
// 得到所有的表单域,它们目前都被当作FileItem
List<FileItem> fileItems = upload.parseRequest(request);
Iterator<FileItem> iter = fileItems.iterator();
// 依次处理每个表单域
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if(item.isFormField()){
// 如果item是正常的表单域
String name = item.getFieldName();
String value = item.getString();
System.out.print("表单域名为:"+name+"表单域值为:"+value);
}
else{
// 如果item是文件上传表单域
// 获得文件名及路径
String fileName = item.getName();
if (fileName != null) {
File fullFile = new File(item.getName());
// 如果文件存在则上传
if(fullFile.exists()){
File fileOnServer = new File("D:/file",
fullFile.getName());
item.write(fileOnServer);
System.out.println("文件"+fileOnServer.getName()+"上传成功");
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
//上传代码
response.setContentType("text/html");
// PrintWriter out = response.getWriter();
List<User> users=new ArrayList();
users=(List<User>) session.getAttribute("us");
request.setCharacterEncoding("utf-8");
// 禁止数据缓存。
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
// 创建Excel文档
HSSFWorkbook wb = new HSSFWorkbook() ;
// sheet 对应一个工作页
HSSFSheet sheet = wb.createSheet("test_table表中的数据") ;//创建第一个工作页的表格的名字
// sheet.addMergedRegion(new Region(0,(short)0,0,(short) 4));
HSSFRow firstrow = sheet.createRow(0); //下标为0的行开始
String[] names = new String[3];
names[0] = "ID";
names[1] = "姓名";
names[2] = "密码";
for(int i=0;i<3;i++){
HSSFCell hssfcell = firstrow.createCell((short)i);
hssfcell.setCellValue(names[i]);
}
// User user=new User();
// user=(User) session.getAttribute("user");
// String[] u = new String[3];
// int abc=user.getId()+1;
// u[0] = Integer.toString(abc);
// u[1] = user.getName();
// u[2] = user.getPassWord();
// HSSFRow hssfrow = sheet.createRow(1);
// for(int i=0;i<3;i++){
// HSSFCell hssfcell = hssfrow.createCell((short)i);
// hssfcell.setCellValue(u[i]);
// }
// System.out.print(users.size());
for(int j=1;j<users.size()+1;j++){
User u=new User();
u=users.get(j-1);
HSSFRow hssfrow = sheet.createRow(j);
String[] user = new String[3];
int abc=u.getId();
user[0] = Integer.toString(abc);
user[1] =u.getName();
user[2] = u.getPassWord();
for(int i=0;i<3;i++){
HSSFCell hssfcell = hssfrow.createCell((short)i);
hssfcell.setCellValue(user[i]);
}
}
//
//
// for(int j= 0 ;j<3; j++){
// firstcell[j] = firstrow.createCell(j);
// firstcell[j].setCellValue(new HSSFRichTextString(names[j]));
// }
// Iterator<User> it=users.iterator();
/* while(i<4){
HSSFRow row = sheet.createRow(i) ; // 下标为1的行开始
for(int j=0;j<3;j++)
{
// 在一行内循环
HSSFCell cell = row.createCell(j) ;
// 设置表格的编码集,使支持中文
//
// 先判断数据库中的数据类型
// 将结果集里的值放入电子表格中
cell.setCellValue(new HSSFRichTextString("ad")) ;
}
i++ ;
}*/
// 创建文件输出流,准备输出电子表格
OutputStream os = new FileOutputStream("E:\\test.xls") ;
wb.write(os) ;
File file=new File("E:\\test.xls");
//设置response的编码方式
response.setContentType("application/x-msdownload");
//写明要下载的文件的大小
response.setContentLength((int)file.length());
//设置附加文件名
// response.setHeader("Content-Disposition","attachment;filename="+filename);
//解决中文乱码
response.setHeader("Content-Disposition","attachment;filename=test.xls");
//读出文件到i/o流
FileInputStream fis=new FileInputStream(file);
BufferedInputStream buff=new BufferedInputStream(fis);
byte [] b=new byte[1024];//相当于我们的缓存
long k=0;//该值用于计算当前实际下载了多少字节
//从response对象中得到输出流,准备下载
OutputStream myout=response.getOutputStream();
//开始循环下载
while(k<file.length()){
int j=buff.read(b,0,1024);
k+=j;
//将b中的数据写到客户端的内存
myout.write(b,0,j);
}
myout.flush();
myout.close();
//excel文件导入数据和下载代码