我收到错误:
Excel无法打开文件'FILE.xlsx',因为文件格式或 文件扩展名无效。验证文件尚未存在 已损坏且文件扩展名与文件格式匹配。
我怀疑原因是因为在File.xlsx上我有一个OleDBConnection使用它,后来在相同的代码中我称之为该文件的Interop函数Open of Excel。有人可以证实我的理论吗?
public ExcelWorkbook(string file)
{
fileName = file;
using (var workbookConnection = new OleDbConnection(String.Format(Resource.ExcelConnectionString, file)))
{
workbookConnection.Open();
tabNames = GetDataTabsName(workbookConnection);
foreach (string tabName in tabNames)
{
var newExcelTab = new ExcelTab(workbookConnection, file, tabName);
excelTabs.Add(tabName, newExcelTab);
}
}
}
然后我的函数GetDataTabsName(workbookConnection);
private List<string> GetDataTabsName(OleDbConnection workbookConnection)
{
var tabsName = new List<string>();
var tabName = "";
Excel.Application excelApp = new Excel.Application();
excelApp.Visible = false;
Excel.Workbook workbook = excelApp.Workbooks.Open(workbookConnection.DataSource, 0, false, 5, "", "", false,
Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false);
....some more code
Open在这里失败了......我最好的猜测是因为那个文件上存在OleDBConnection?
答案 0 :(得分:0)
经过进一步测试,结果证明我的猜测是正确的。因此,无法与Microsoft.InterOp
同时打开在工作表上打开OleDBConnection答案 1 :(得分:0)
Workbooks.Open
的第三个参数指定是否应以只读模式打开作品。如果互操作连接仅用于读取,请尝试将该值设置为true
。如果OleDb连接可以是只读的,请将ReadOnly=true;
添加到连接字符串。