本帖最后由 XiaoPeiyuan2020 于 2014-10-17 11:01:23 编辑

解决方案 »

  1.   


    很感谢你的回答,本地的文件时可以正常打开的,上传到项目的那个文件打开提示破损或者是只读的,所以可能就导致Sheet1 没有办法访问,关键是fileupload 上传的文件不知道为什么会破损啊
      

  2.   

    TransformData里代码是什么?
    其实执行
            string phyFileName = Path + @"\" + FileUpload1.FileName;
            this.FileUpload1.SaveAs(phyFileName);
    这个就行了,指定一个路径,然后SaveAs
      

  3.   

    你必须先save到服务器本地,然后从服务器本地再读出来啊
    不能直接把FileUpload1.FileName当本地路径去读excel,这个文件还在客户机里呢,你能直接读到才怪
      

  4.   

    2帖齐发?看了你的需求 我只能说 3个东西 一个一个来 别着急..1` 先会使用fileupload上传文件.. (当然这虽然只有2句话,但是你还是要学下.因为你基础很弱)2`使用组件(npoi)读取xls(xlsx)到内存中并显示到GridView上,(当然你也可以使用office组件.但是个人是不建议的)3`ado.net 也就是连接数据库增删改查.当然你这里面的导入只涉及到插,
        所以你还是应该看下如何循环DataTable生成很多SQL语句一起执行.上面的都玩明白了之后 在考虑导入如何优化(sqlbulkcopy) 数据有问题是否需要事务(tran)别老考虑一步登天..或者拿来主义(岂止是拿来简直就是给你工作)
      

  5.   


    这个我在本地测试 也还是不行,还是上传的Excel 有破损
      

  6.   


    很感谢你的回答,本地的文件时可以正常打开的,上传到项目的那个文件打开提示破损或者是只读的,所以可能就导致Sheet1 没有办法访问,关键是fileupload 上传的文件不知道为什么会破损啊如果你想确定是否是“上传到服务器的文件破损”了,就应该直接把服务器端保存的文件给拷贝到“本地”然后手工使用excel打开测试。不要使用你的程序去打开excel!否则你根本不知道是文件破损了,还是你的打开程序有问题。
      

  7.   


    看了一下你贴出的程序代码。你在服务器端不过是取得了文件名字,然后再服务器本地读取文件。你何时读取了客户端传来的文件了?你的上传文件程序本身就是错的,就不能读取web远程客户端的文件。先学习一个正确的“上传文件”程序编写再说吧。你应该做一个测试,使用另一台机器远程访问网站,然后上传一个客户端有、但是服务器没有的excel工作簿文件。看看你的程序的bug。先写好的上传程序,你的问题自然就改变了。
      

  8.   

    目前你的问题是,你把客户端的路径当做服务器的路径来读文件
    而且恰好你的服务器也有客户端选择的路径
    你到里面去找,恰好也找到了一个同名的excel文件,而这个文件是破损的
    你应该先确定,你上传文件到底上传成功了吗?
    从你的代码来看,你根本没有上传文件,只不过获取到了客户端的文件路径,然后就把这个路径当做服务器路径去取文件了
      

  9.   

    仔细看了下代码,在string path = Server.Map("~")。
    这一句之后请,加上FileUpload1.SaveAs(path);
    基本就可以正常运行。