我写了一段JXL读EXCEL再写入数据库的程序.在服务器端可以读数据,但是在客户段读就提示系统找不到指定的文件。
问如何才能读客户端机器上的文件
public void ExcelInfo(String url,String userid,String rolenum,String cmanagerour) throws BiffException, IOException {
String path = url;//Excel文件URL
InputStream is = new FileInputStream (path);//写入到FileInputStream
Workbook wb = Workbook.getWorkbook (is); //得到工作薄
Sheet st = wb.getSheet (0);//得到工作薄中的第一个工作表 String companyname;//客户名
String linkmanname;//联系人名
String ctaxnum;
String ccredit;
DealString ds = new DealString();
int RightRows = ds.getRightRows(st);
for (int i = 1; i < RightRows; i++) {
Cell[] cell = st.getRow (i);//得到工作表的第一个单元格,即A1
if(cell[0].getType()==CellType.EMPTY){
companyname = "";
}else{
companyname = cell[0].getContents (); }
if(cell[1].getType()==CellType.EMPTY){
linkmanname = "";
}else{
linkmanname = cell[1].getContents (); }
if(cell[2].getType()==CellType.EMPTY){
linkmandepartment = "";
}else{
linkmandepartment = cell[2].getContents ();}
if(cell[3].getType()==CellType.EMPTY){
linkmanjob = "";
}else{
linkmanjob = cell[3].getContents ();}
}else{
ccredit = cell[37].getContents ();}
GetExcelAction ace = new GetExcelAction();
ace.addCustomerExcel(companyname,getaddress, ctel,cweb,
cfax,cothertel, employees,cemail, leadsource,cotheremail, rating,
cgrade,cownership, cindustry, annualrevenue, accounttype,
cnexttime, ccreattime, paycountry,payprovince, paycity,
payaddress,payzip, getcountry, getprovince, getcity,
getzip, cbank, caccount,cpaytype, cbname, ctaxnum, ccredit, cmanagerour, rolenum, userid);
ace.addLinkmanExcel(companyname,linkmanname,linkmandepartment, linkmanjob,linkmanfone, linkmancell, userid,cmanagerour);
}
wb.close ();//关闭工作薄
is.close ();//关闭输入流
}
由于限制每个帖子的字数,关于添加进数据库的字段我省去很多
问如何才能读客户端机器上的文件
public void ExcelInfo(String url,String userid,String rolenum,String cmanagerour) throws BiffException, IOException {
String path = url;//Excel文件URL
InputStream is = new FileInputStream (path);//写入到FileInputStream
Workbook wb = Workbook.getWorkbook (is); //得到工作薄
Sheet st = wb.getSheet (0);//得到工作薄中的第一个工作表 String companyname;//客户名
String linkmanname;//联系人名
String ctaxnum;
String ccredit;
DealString ds = new DealString();
int RightRows = ds.getRightRows(st);
for (int i = 1; i < RightRows; i++) {
Cell[] cell = st.getRow (i);//得到工作表的第一个单元格,即A1
if(cell[0].getType()==CellType.EMPTY){
companyname = "";
}else{
companyname = cell[0].getContents (); }
if(cell[1].getType()==CellType.EMPTY){
linkmanname = "";
}else{
linkmanname = cell[1].getContents (); }
if(cell[2].getType()==CellType.EMPTY){
linkmandepartment = "";
}else{
linkmandepartment = cell[2].getContents ();}
if(cell[3].getType()==CellType.EMPTY){
linkmanjob = "";
}else{
linkmanjob = cell[3].getContents ();}
}else{
ccredit = cell[37].getContents ();}
GetExcelAction ace = new GetExcelAction();
ace.addCustomerExcel(companyname,getaddress, ctel,cweb,
cfax,cothertel, employees,cemail, leadsource,cotheremail, rating,
cgrade,cownership, cindustry, annualrevenue, accounttype,
cnexttime, ccreattime, paycountry,payprovince, paycity,
payaddress,payzip, getcountry, getprovince, getcity,
getzip, cbank, caccount,cpaytype, cbname, ctaxnum, ccredit, cmanagerour, rolenum, userid);
ace.addLinkmanExcel(companyname,linkmanname,linkmandepartment, linkmanjob,linkmanfone, linkmancell, userid,cmanagerour);
}
wb.close ();//关闭工作薄
is.close ();//关闭输入流
}
由于限制每个帖子的字数,关于添加进数据库的字段我省去很多
楼主【Cupid1945】截止到2008-07-25 11:29:31的历史汇总数据(不包括此帖):
发帖的总数量:5 发帖的总分数:90 每贴平均分数:18
回帖的总数量:3 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:4 结贴的总分数:70
无满意结贴数:1 无满意结贴分:20
未结的帖子数:1 未结的总分数:20
结贴的百分比:80.00 % 结分的百分比:77.78 %
无满意结贴率:25.00 % 无满意结分率:28.57 %
楼主加油
我知道和 InputStream is = new FileInputStream (path);//写入到FileInputStream 有关.
因为在客户端选择的文件比如是"12.xls"当程序运行到InputStream is = new FileInputStream (path);//的时候,PATH还在寻找服务器上的12.xls这样肯定是找不到的
所以希望有操作过JXL的朋友告知,如果是客户段访问如何读取文件的数据流
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.io.*,java.lang.*"%>
<html>
<head>
<title>读取所有的文件数据</title>
</head>
<body>
<%
String path=request.getRealPath(".");
FileReader fr=new FileReader(path + "\\ReadData.txt");//关键在于读取过程中,要判断所读取的字符是否已经到了文件的末尾,并且这个字符是不是文件中的断行符,即判断该字符值是否为13。
int c=fr.read();//从文件中读取一个字符
//判断是否已读到文件结尾
while(c!=-1){
out.print((char)c);//输出读到的数据
c=fr.read();//从文件中继续读取数据
if(c==13){//判断是否为断行字符
out.print("<br>");//输出分行标签
fr.skip(1);//略过一个字符
//c=fr.read();//读取一个字符
}
}
fr.close();
%>
</body>
</html>
这段代码可以测试的
大家运行的结果是如果你把ReadData.txt放在客户端的任何一台计算机上,如何读出里面的内容.现在这段代码只能将ReadData.txt放在服务器的项目路径下才能读.
后来我的解决办法是先 将要读的文件上传的服务器,再读,读完后删除.谢谢大家的关注.