web中使用poi导入导出excel文件的例子 -凯发k8网页登录

——欢迎访问rogerfan的博客,常来《java——咖啡馆》坐坐,喝杯浓香的咖啡,彼此探讨一下java技术,交流工作经验,分享java带来的快乐!本网站部分转载文章,如果有凯发k8网页登录的版权问题请与我联系。

struts1.x的例子,struts2.x可以参考自己修改

1.action的写法

 

import java.io.*;
import java.sql.*;
import java.util.arraylist;

import javax.servlet.http.httpservletrequest;
import javax.servlet.http.httpservletresponse;

import org.apache.poi.hssf.usermodel.*;
import org.apache.struts.action.*;
import org.apache.struts.upload.formfile;
import org.apache.commons.beanutils.beanutils;

public class action {
 
/*
  * 把数据库中的字段导入到excel ,并生成excel文档
  *
*/

 
public actionforward getdownload(actionmapping actionmapping,
   actionform actionform, httpservletrequest request,
   httpservletresponse response) 
throws exception {
  form fm 
= (form) actionform;
  
// excel 文件存放在服务器的相对路径下
  string outputfile = request.getrealpath("/tmp/excel.xls");
  
  
try {
   
// 创建新的excel 工作簿
   hssfworkbook workbook = new hssfworkbook();
   
// 在excel 工作簿中建一工作表
   hssfsheet sheet = workbook.createsheet("sheet1");
   
// 设置单元格格式(文本)
   hssfcellstyle cellstyle = workbook.createcellstyle();
   cellstyle.setdataformat(hssfdataformat.getbuiltinformat(
"@"));
   
   
// 在索引0的位置创建行(第一行)
   hssfrow row = sheet.createrow((short0);
   
   hssfcell cell1 
= row.createcell((short0);// 第一列
   hssfcell cell2 = row.createcell((short1);
   hssfcell cell3 
= row.createcell((short2);
   
// 定义单元格为字符串类型
   cell1.setcelltype(hssfcell.cell_type_string);
   cell2.setcelltype(hssfcell.cell_type_string);
   cell3.setcelltype(hssfcell.cell_type_string);
   
   cell1.setencoding(hssfcell.encoding_utf_16);
   cell2.setencoding(hssfcell.encoding_utf_16);
   cell3.setencoding(hssfcell.encoding_utf_16);
   
// 在单元格中输入数据
   cell1.setcellvalue("姓名");
   cell2.setcellvalue(
"性别");
   cell3.setcellvalue(
"年龄");
   
   connection connection 
= session.connection();
   
   string sql 
= "select t.name, t.sex, t.age from table t where t.sex = ?";
   
   
try {
    preparedstatement ps 
= connection.preparestatement(sql);
    ps.setstring(
1, fm.getsex());// 传入查询条件
    resultset rs = ps.executequery();// 查询结果存入rs
    connection.commit();// 执行sql
    
    
while (rs.next()) {
    
//设置j行从第二行开始
     int j = 1;
     row 
= sheet.createrow((short) j);
     
//设置i列从第二列开始
     for (int i = 1; i <= 3; i{
      hssfcell cell 
= row.createcell((short) (i-1));
      
// 设置单元格格式
      cell.setcellstyle(cellstyle);
      cell.setcelltype(hssfcell.cell_type_string);
      cell.setencoding(hssfcell.encoding_utf_16);
      cell.setcellvalue(rs.getstring(i));
     }

     
     j
;
    }

    
    request.setattribute(
"message""文件生成成功!");
   }
 catch (sqlexception e) {
    request.setattribute(
"message""创建文件失败!");
    e.printstacktrace();
   }

   
// 删除路径下同名的excel 文件
   file path = new file(outputfile);
   path.delete();
   
   
// 新建一输出文件流
   fileoutputstream fout = new fileoutputstream(outputfile);
   
// 把相应的excel 工作簿存盘
   workbook.write(fout);
   
// 操作结束,关闭文件
   fout.flush();
   fout.close();
    
//该处如果excel过大会影响效率,谁有好的想法可以提出来参考(不过从页面下载完后就会清空)
   request.getsession().setattribute("download", outputfile);
   
  }
 catch (exception ioexception) {
   request.setattribute(
"message""创建文件失败!");
   
return actionmapping.findforward("outjsp");
  }

  
  
return actionmapping.findforward("outjsp");
 }

 
 
/*
  * 从excel文件中读取数据,并导入到数据库中
  *
*/

  
public actionforward getupload(actionmapping actionmapping,
   actionform actionform, httpservletrequest request,
   httpservletresponse response) 
throws exception {
  
// 获取excel 文件
  form fm = (form) actionform;
  formfile formfile 
= fm.getuploadfile();
  inputstream inputstream 
= formfile.getinputstream();
  fm.clear();
// 清空
  session session = hibernatesession.currentsession();
  arraylist list 
= new arraylist();
  
int input = 0//导入记数
  string name = null;
  string sex 
= null;
  string age 
= null;
  
  
try {
   
//通过得到的文件输入流inputstream创建一个hssfwordbook对象
         hssfworkbook hssfworkbook = new hssfworkbook(inputstream);
         hssfsheet hssfsheet 
= hssfworkbook.getsheetat(0);//第一个工作表
   hssfrow hssfrow = hssfsheet.getrow(0);//第一行
   
   
//遍历该表格中所有的工作表,i表示工作表的数量 getnumberofsheets表示工作表的总数
            for (int i = 0; i < hssfworkbook.getnumberofsheets(); i{
             hssfsheet 
= hssfworkbook.getsheetat(i);
             
             
//遍历该行所有的行,j表示行数 getphysicalnumberofrows行的总数
                for (int j = 1; j < hssfsheet.getphysicalnumberofrows(); j{
                 hssfrow 
= hssfsheet.getrow(j);
                 
//判断是否还存在需要导入的数据
                    if (hssfrow == null{
                     system.out.println(
"这里已没有数据,在第"i"列,第"j"");
                     
break;
                    }

                    
/**将excel中的第 j 行,第一列的值插入到实例中*/
                    
if (hssfrow.getcell((short0== null{
                     name 
= "";
                    }
 else if (hssfrow.getcell((short0).getcelltype() == 0{
                     name 
= new double(hssfrow.getcell((short0).getnumericcellvalue()).tostring();
                    }

                    
//如果excel表格中的数据类型为字符串型
                    else {
                     name 
= hssfrow.getcell((short0).getstringcellvalue().trim();
                    }

                    
/**将excel中的第 j 行,第二列的值插入到实例中*/
                    
//姓名
                    if(hssfrow.getcell((short1== null){
                     sex 
= "";
                    }
 else if(hssfrow.getcell((short1).getcelltype() == 0{
                        sex 
= new double(hssfrow.getcell((short1).getnumericcellvalue()).tostring();
                    }

                    
//如果excel表格中的数据类型为字符串型
                    else {
                        sex 
= hssfrow.getcell((short1).getstringcellvalue().trim();
                    }

                    
/**将excel中的第 j 行,第三列的值插入到实例中*/
                    
//姓名
                    if(hssfrow.getcell((short1== null){
                     age 
= "";
                    }
 else if(hssfrow.getcell((short1).getcelltype() == 0{
                        age 
= new double(hssfrow.getcell((short1).getnumericcellvalue()).tostring();
                    }

                    
//如果excel表格中的数据类型为字符串型
                    else {
                        age 
= hssfrow.getcell((short1).getstringcellvalue().trim();
                    }

                    
                    name 
= name.trim();
                    sex 
= sex.touppercase();
                    
                    
if (name.equals("")) {
                     error.setname(name);
                     error.setmessage(
"姓名不能为空");
                     
                     list.add(error);
                     
continue;
                    }
 else {
                     fm.setname(name);
                     fm.setsex(sex);
                     fm.setage(age);
                     
                     session.save(fm);
                    }

                    
//导入成功加1
                    input;
                }

            }

            
            session.saveobjs(list.toarray());
        }
 catch () {
         
        }

 }

}



2.form的写法

import org.apache.struts.action.actionform;
import org.apache.struts.upload.formfile;

public class form extends actionform {
 
// 上传的文件
 private formfile _flddo;
 
 
public void setuploadfile(formfile formfile) {
  _flddo 
= formfile;
 }

 
 
public formfile getuploadfile() {
  
return _flddo;
 }

 
 
public void clear() {
  _flddo 
= null;
 }

}





3.上传页面upload.jsp



<%@ page contenttype="text/html; charset=gbk" language="java"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>

<html>
 
<html:form action="/action.do?method=getupload" method="post" enctype="multipart/form-data">
  
<html:file property="uploadfile" size="80%" />
  
<input type="button" value="导 入" onclick="upload(this.form)" class="buttongray">
 
html:form>
html>

<script language="javascript">
function upload(obj)
{
 
if(confirm("您现在选择的是xxx,您确定要导入吗?"))
 
{
  
var uploadfile = document.all.uploadfile.value;
  
if((null == uploadfile) ||"" == uploadfile))
  
{
   alert(
"上传文件没有指定!");
   
return false;
  }

     obj.action 
= '<html:rewrite page="/action.do?method=getupload"/>';
     obj.submit();
 }

}

script>


4.下载页面download.jsp



<%@ page contenttype="text/html; charset=gbk"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>

<%
//获取下载文件
 
string download = (string) request.getsession().getattribute("download");
//清空文件
 request.getsession().removeattribute(
"download");
%>

<html>
 下传文件 
<href="<%=download %>" name="下载">下载a>
html>
posted on 2008-08-27 13:41 rogerfan 阅读(13827) 评论(19)     所属分类: 【java知识】
# re: web中使用poi导入导出excel文件的例子[未登录] 2008-12-30 11:01
感谢楼主!
麻烦你把import org.apache.commons.beanutils.beanutils;
import org.apache.poi.hssf.usermodel.*;
这俩个jar包发给我好吗?邮箱luzhihua866@yahoo.com.cn  回复  
  

# re: web中使用poi导入导出excel文件的例子[未登录] 2008-12-30 11:05
还有你这个excel文件是什么样的? 三个字段吗?  回复  
  

# re: web中使用poi导入导出excel文件的例子 2009-03-04 11:19
麻烦楼主把完整的例子给我发到我的邮箱好吗?
 yuechengkun@126.com  回复  
  

# re: web中使用poi导入导出excel文件的例子[未登录] 2009-05-18 15:36
您好,麻烦楼主把完整的例子给我发到我的邮箱好吗?
hexinteng@yahoo.cn  回复  
  

# re: web中使用poi导入导出excel文件的例子 2010-05-21 19:24
大哥、 把完整的例子发我下 tanlideai@126.com 谢谢了  回复  
  

# re: web中使用poi导入导出excel文件的例子 2011-08-02 11:37
可以给itcyt123@163.com发一份例子吗,谢谢了  回复  
  

# re: web中使用poi导入导出excel文件的例子 2011-08-10 17:48
fslong0459@126.com 麻烦把完整项目传一下,非常感谢,这个缺少一些类和配置文件  回复  
  

# re: web中使用poi导入导出excel文件的例子 2012-02-05 14:44
能传个完整的项目么 121637791@qq.com 非常感谢!  回复  
  

# re: web中使用poi导入导出excel文件的例子 2012-02-06 18:15
麻烦吧例子发到我的邮箱里!谢谢你了!
yanshuailong8917@163.com  回复  
  

# re: web中使用poi导入导出excel文件的例子 2012-05-30 11:52
多谢楼主麻烦你把完整的例子发到957803796@qq.com好吗?谢谢了!  回复  
  

# re: web中使用poi导入导出excel文件的例子 2012-07-03 17:13
多谢楼主麻烦你把完整的例子发到273556298@qq.com好吗?谢谢了  回复  
  

# re: web中使用poi导入导出excel文件的例子[未登录] 2012-07-12 10:38
烦你把完整的例子发到752139325@qq.com好吗?谢谢了  回复  
  

# re: web中使用poi导入导出excel文件的例子 2012-07-14 21:56
多谢楼主麻烦你把完整的例子发到1053577162@qq.com好吗?谢谢了  回复  
  

# re: web中使用poi导入导出excel文件的例子[未登录] 2012-08-13 11:40
麻烦楼主也发给我一份完整的代码470024581@qq.com@jsp
  回复  
  

# re: web中使用poi导入导出excel文件的例子[未登录] 2012-08-13 11:41
470024581@qq.com就这么多,后面的jsp不是,  回复  
  

# re: web中使用poi导入导出excel文件的例子[未登录] 2012-10-23 14:28
能够发一份完整的项目给我吗?155363287@qq.com  回复  
  

# re: web中使用poi导入导出excel文件的例子 2012-11-02 15:25
272025694@qq.com 可以发一份完整的项目给我嘛?、谢谢。  回复  
  

# re: web中使用poi导入导出excel文件的例子 2012-11-09 09:17
iorn2002@163.com 可以发一份完整的项目嘛?谢谢  回复  
  

# re: web中使用poi导入导出excel文件的例子 2013-05-03 16:11
313585862@qq.com 麻烦lz给我发一份吧 真心谢谢了   回复  
  


只有注册用户后才能发表评论。


网站导航:
              
 
网站地图