C# 工作簿。打开vs OLEDB连接无法打开工作簿
我得到一个错误: Excel无法打开文件“file.xlsx”,因为文件格式或 文件扩展名无效。请验证该文件是否未被删除 已损坏,并且文件扩展名与文件格式匹配 我怀疑原因在于,在File.xlsx上,我使用了一个OLEDB连接,并且稍后在同一代码中,我在该文件上调用了Excel的Open Interop函数。有人能证实我的理论吗C# 工作簿。打开vs OLEDB连接无法打开工作簿,c#,excel,oledbconnection,C#,Excel,Oledbconnection,我得到一个错误: Excel无法打开文件“file.xlsx”,因为文件格式或 文件扩展名无效。请验证该文件是否未被删除 已损坏,并且文件扩展名与文件格式匹配 我怀疑原因在于,在File.xlsx上,我使用了一个OLEDB连接,并且稍后在同一代码中,我在该文件上调用了Excel的Open Interop函数。有人能证实我的理论吗 public ExcelWorkbook(string file) { fileName = fi
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)
私有列表GetDataTabsName(OleDbConnection workbookConnection)
{
var tabsName=新列表();
var tabName=“”;
Excel.Application excelApp=新的Excel.Application();
excelApp.Visible=false;
Excel.Workbook工作簿=excelApp.Workbooks.Open(workbookConnection.DataSource,0,false,5,“,”,false,
Microsoft.Office.Interop.Excel.XlPlatform.xlWindows,”,真,假,0,真,假,假);
……更多的代码
在这里打开失败…我最好的猜测是,因为该文件上存在OLEDB连接???经过进一步测试,结果证明我的猜测是正确的。因此,在工作表上打开OLEDB连接不能与Microsoft同时打开。InterOp第三个参数指定工作是否应在以只读模式打开。如果互操作连接仅用于读取,请尝试将该值设置为
true
。如果OleDb连接可以是只读的,请将ReadOnly=true;
添加到连接字符串中。谢谢,我会尝试的
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