首页 新闻 会员 周边

能不能直接用流读取Excel,而不需要把Excel存在服务器端?

0
悬赏园豆:30 [已关闭问题]

如题。

需求很简单,就是用户上传Excel,校验数据的合法性之后,存在数据库中。

但是,目前知道的方法都是先把Excel存在服务器端,再用OLEDB连接的方式读取。

能否直接在上传时,直接从UploadFile控件的InputStream里面直接读Excel的数据。

我试了一下,都是乱码,不知道怎么把Excel的数据提取出来。

Cheese的主页 Cheese | 小虾三级 | 园豆:509
提问于:2008-12-15 12:31
< >
分享
其他回答(1)
0

一般都是你说的那种方法实现,没有见过直接在浏览器端处理的,估计要实现需要客户端安装Office吧,然后通过js调用Office的COM组件提取数据实现,我也没有做过,只是猜测,这种方式还不如直接上传到服务器作为临时文件好,而且需要浏览器端的环境(安装Office套件或注册相应的组件),所以推荐采用第一种方式!

这里有一个JS的简单参考:

var   obj   =   document.all;
var   oExcel; //定义Excel对象
var   oWorkbook; //定义Excel工作薄
var   strAllName;           //定义导入的文件名称
var   excelSheet; //定义Excel工作表

//建立Excel对象
oExcel   =   new   ActiveXObject( "Excel.Application ");
//读取要导入Excel的文件名及路径
strAllName=obj.file.value;

//读取导入的Excel对象中的工作薄
oWorkbook   =   oExcel.Workbooks.Open(strAllName);

//读取Excel中的工作表
excelSheet   =   oWorkbook.ActiveSheet;

问题就是如何获得excelSheet这个工作表中有多少行数据!
我是做的while循环读的,人为在表最后一行加了个“结束”

var   i   =   1;
while(excelSheet.Cells(i,1)!= "结束 ")
{
tempValue   =   excelSheet.Cells(i,1);
i++;
}

下面链接更详细些:

http://lkde.blog.sohu.com/77638287.html

GUO Xingwang | 园豆:3885 (老鸟四级) | 2008-12-15 12:47
0

Excel 2003之后的版本是一个标准的XML文件,可以直接从流中读取并进行分析,但是之前的版本是一个二进制文件,除非你非常了解其结构,不然分析这种文件是非常麻烦的

Gray Zhang | 园豆:17610 (专家六级) | 2008-12-15 17:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册