2011-08-02 93 views
1

不幸的是,OLEDB和FileUploadControl似乎都想要一条路径。没有文件系统访问的FileUploadControl

眼下,这个工作的用户提交后一个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暴露流,字节码。用这些属性遍历文件是否可能?

回答

1

有一个看看Excel Data Reader

我可以使用下面的代码从流中读取数值没有问题:

Stream myStream = MyFileUpload.FileContent; 

IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(myStream); 
DataSet result = excelReader.AsDataSet(); 

string r1c1Val = result.Tables[0].Rows[0][0].ToString(); 

显然,我的例子是非常简单的,但有数据作为DataSet应该给你你怎么看了很多的灵活性它。

1

AFAIK的OLEDB不会在流工作...

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

虽然不知道是什么ConvertToCSV呢,它是否能在记忆工作...

+0

ConvertToCSV只是使用OLEDB来遍历atm。 –