没有文件系统访问的FileUploadControl

不幸的是,OLEDB和FileUploadControl似乎都想要一条path。

现在,在用户提交了一个excel文件后,这个文件就可以工作,但是由于0文件系统的访问,在我的服务器上不起作用:

FileUploadControl.SaveAs(filePath); ConvertToCSV(filePath); ... var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", filePath); var adapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", connectionString); 

我看到FileUploadControl公开一个stream和一个字节码。 是否有可能遍历与这些属性的文件?

看看Excel数据读取器

我能够使用下面的代码读取stream中的值没有问题:

 Stream myStream = MyFileUpload.FileContent; IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(myStream); DataSet result = excelReader.AsDataSet(); string r1c1Val = result.Tables[0].Rows[0][0].ToString(); 

很明显,我的例子非常简单,但是将数据作为DataSet应该会给您在读取方式上带来很大的灵活性。

AFAIK的OleDB不会在stream…

如果你真的想在上传后直接访问Excel文件,那么你将需要一些第三方组件(如Flexcel,Aspose.Cells,SpreadsheetGear …),它可以直接从内存中加载Excel文件( FileUploadControl.FileBytesFileUploadControl.FileContent )…

虽然不确定ConvertToCSV做什么以及它是否可以在内存上工作…