xlsx 文件上传无法正常工作 - 文件打开时有效,但关闭时无效
Posted
技术标签:
【中文标题】xlsx 文件上传无法正常工作 - 文件打开时有效,但关闭时无效【英文标题】:xlsx file upload not working correctly - works when file is open but not when closed 【发布时间】:2014-03-07 08:43:15 【问题描述】:我已经对这个问题进行了大约一天半的研究,但还没有找到解决问题的方法。这是我的场景:
我有一个 AsyncFileUpload 和一个按钮,该按钮配置为仅接受 xls 和 xlsx 文件 (Excel) 文件。上传的这个文件用于将信息导入到 gridview 中。旧格式的 xls 文件可以正常工作。当我想上传 xlsx 文件时,问题就来了。我已经测试了多个场景,我发现当 xlsx 文件当前/主动打开时它可以完美运行。当它关闭时,它会给我错误。我已经摆弄并探索了这个问题的解决方案,我收到的错误范围非常大。但最突出的错误如下: 1. 外部表不是预期的格式。 2. 找不到-可安装-isam
我找到了一篇与第二个错误 (Could not find installable ISAM) 相关的文章,但我还没有尝试所有建议的解决方案,因为我宁愿避免更改 Windows 注册表,因为我对这件事没有广泛的了解.
我附上了用于在 OleDb 和 excel 文件之间建立连接的代码:
protected void AsyncUpload_UploadedComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
string connString = "";
string strFileType = Path.GetExtension(e.FileName).ToLower();
string path = e.FileName;
////Connection String to Excel Workbook
if (strFileType.Trim() == ".xls")
connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\"";
else if (strFileType.Trim() == ".xlsx")
connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;HDR=Yes;IMEX=1";
string query = "SELECT * FROM [sheet1$]";
OleDbConnection conn = new OleDbConnection(connString);
if (conn.State == ConnectionState.Closed)
conn.Open();
OleDbCommand cmd = new OleDbCommand(query, conn);
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
using (OleDbDataReader dr = cmd.ExecuteReader())
_InsertWrapper.clearLists();
while (dr.Read())
var row1Col0 = dr[0];
Console.WriteLine(row1Col0);
_InsertWrapper.GenerateList(dr);
da.Dispose();
conn.Close();
conn.Dispose();
InventoryGrid.DataBind();
ErrorsGrid.DataBind();
如果有人有额外的知识或可以贡献的解释,请添加它,以便更多在同一类型问题上苦苦挣扎的人可以从这个问题中获得尽可能多的信息。我们都还在学习中。
所以,主要思想:需要找到成功上传xlsx文件的解决方案
【问题讨论】:
【参考方案1】:尝试使用第三方工具。他们高效地工作: http://code.google.com/p/excellibrary/
【讨论】:
以上是关于xlsx 文件上传无法正常工作 - 文件打开时有效,但关闭时无效的主要内容,如果未能解决你的问题,请参考以下文章
Google Apps 脚本文件上传(通过 HTML 表单)仅在脚本“绑定”时有效(测试独立脚本时,HTTP 403 错误)