xlsx ファイルを開こうとしていますが、アプリの特定の領域から開いたときにのみ、外部テーブルが期待される形式ではありません。したがって、1 つの領域から呼び出すと問題なく動作しますが、アプリの別の部分から同じコード ブロックを呼び出して同じことを行うと、その例外がスローされます。同じコードブロック。同じエクセルファイルです。
string connectionString = "Provider="+ GetProvider(fileName) +"; data source=" + fileName + "; " + GetExtendedProperties(fileName);
using (var connection = new OleDbConnection(connectionString))
{
connection.Open();
using (DataTable schemaTable = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,
new object[] { null, null, null, "TABLE" }))
{
if (schemaTable != null && schemaTable.Rows != null)
{
List<string> validTables = schemaTable.Rows.OfType<DataRow>().Select(row => (string)row["TABLE_NAME"]).ToList();
validTables.ForEach(table =>
{
if (table.Contains('$'))
{
results.WorkSheets.Add(table.Trim('\'', '$'));
}
else
{
results.NamedRanges.Add(table);
}
});
}
}
}
私の接続文字列:
Provider=Microsoft.ACE.OLEDB.12.0; データソース=C:\moses\BLANKTest\Table.xlsx; 拡張プロパティ="Excel 12.0 Xml";
最後に「Xml」を取り出して接続文字列も試しました。運がない。
ここで何が起こっているのかわかりません。