2013-11-14 100 views
1

我有一个过程,允许用户下载电子表格,进行一些更改,然后上传这些更改。将CSV导入到Web应用程序

上传方法样子 -

public DataTable ImportXLS(String SourceFilePath) { 
     string ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + 
         "Data Source=" + SourceFilePath + ";" + 
         "Extended Properties=Excel 8.0;"; 

     using (OleDbConnection cn = new OleDbConnection(ConnectionString)) { 
      cn.Open(); 

      DataTable dbSchema = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); 
      if (dbSchema == null || dbSchema.Rows.Count < 1) { 
       throw new Exception("Error: Could not determine the name of the first worksheet."); 
      } 

      string WorkSheetName = dbSchema.Rows[0]["TABLE_NAME"].ToString(); 

      OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM [" + WorkSheetName + "]", cn); 
      DataTable dt = new DataTable(WorkSheetName); 

      da.Fill(dt); 

      return dt; 
     } 
    } 

当我在本地调用该方法,它的作品,因为我可以看到我的本地驱动器。

当部署到Web服务器,并呼吁像 -

ExportImport _ei = new ExportImport(); 
DataTable dt = null; 
dt = _ei.ImportXLS("C:\Users\mike\Desktop\mike.xls"); 

我得到一个错误,“C:\用户\麦克风\桌面\ mike.xls”不是一个有效的路径,显然是因为它在Web服务器上不存在。

有没有人有任何尝试通过网络上传文件的经验,以及如何解决文件位置问题?

+0

你需要传递'_ei.ImportXLS()'到的路径上传的文件被保存。 –

+0

您也可以先将您的文件上传到服务器,让我们说一个'files'目录,然后用朝向那个URL的URL打开它。如'_ei.ImportXLS(“/ files/mike.xls”);' –

+0

使用此功能的用户将无法访问Web服务器。我如何将它上传到网络服务器? – duckmike

回答

0

您需要将FileUpload控件添加到您的Asp.Net页面。点击一个按钮,你需要将调用保存在服务器上的文件:

FileUpload1.SaveAs("C:\\Uploads\\" + FileUpload1.FileName); 

之后,您可以打电话给你的方法将文件

ExportImport _ei = new ExportImport(); 
DataTable dt = null; 
dt = _ei.ImportXLS("C:\\Uploads\\" + FileUpload1.FileName); 

这样的想法是先上传的文件处理在处理之前将其发送到服务器。

使用FileUpload控件的链接(.NET 2.0)
http://msdn.microsoft.com/en-us/library/aa479405.aspx

相关问题