FileUpload控件没有文件系统访问权限

时间:2011-08-02 20:43:09

标签: c# asp.net excel file-upload

不幸的是,OLEDB和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公开了一个流和一个字节码。是否可以使用这些属性遍历文件?

2 个答案:

答案 0 :(得分:1)

AFAIK OleDB不适用于流......

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

虽然不确定ConvertToCSV做了什么以及它是否可以用于记忆......

答案 1 :(得分: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可以为您提供阅读方式的灵活性。