[英]ODBC driver cannot read rows added in Excel
我使用ODBC(使用Provider=Microsoft.ACE.OLEDB.12.0
)從C#創建xls/xlsx
文件。 結果表有4行(例如)。 我用Excel打開文件,添加第5行並保存文件。 當嘗試使用SELECT * FROM [table]
ODBC通過C#讀取它時,我只得到原始的4行,而不是5行。 似乎ODBC在XLS文件中的某處存儲了行數,以后只讀取它們,而沒有從Excel或LibreOffice輸入新數據。 這是已知問題,我可以解決嗎? 如果我在Excel中創建新的電子表格,則其所有行均從C#中讀取。
編輯:我發現了一些有用的信息。 首次從C#/ ODBC創建XLS文件時,有2個表(表格)。 如果表名是TABLE,則DataTable sheets = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null)
將包含sheets.Rows[0]
==“ TABLE”和sheets.Rows[1]
==“ TABLE $”。 Excel將僅顯示一張工作表“ TABLE”。 編輯后,更改(第5行)僅存在於“ TABLE $”表中。
如果是,您是否按代碼添加第五行,請您分享用於執行此操作的代碼行。 您的代碼中可能存在以下問題。
我想我找到了問題。 似乎由Excel創建的內部電子表格名稱的末尾帶有“ $”符號。 ODBC生成的工作表名稱是CREATE TABLE
給出的確切字符串。 另一方面,Excel(和LibreOffice)對於TABLE
和TABLE$
表僅顯示一個工作TABLE
。 如果我在Excel中編輯表,則保存后所做的更改僅在TABLE$
。 另一張TABLE
保持不變。 當我執行SELECT * FROM [TABLE]
,結果來自原始ODBC生成的表,而沒有Excel更改。 現在,我枚舉XLS文件中的可用工作表,如果第一個工作表名稱不以“ $”結尾並且工作表大於1,則在第一個工作表名稱中添加“ $”並打開正確的表。 我想ODBC連接字符串可能包括用於以“ $”結尾的表的選項...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.