簡體   English   中英

ODBC驅動程序無法讀取Excel中添加的行

[英]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 $”表中。

如果是,您是否按代碼添加第五行,請您分享用於執行此操作的代碼行。 您的代碼中可能存在以下問題。

  1. 保存提交未正確完成。
  2. 在讀取文件連接之前,刷新未完成。

我想我找到了問題。 似乎由Excel創建的內部電子表格名稱的末尾帶有“ $”符號。 ODBC生成的工作表名稱是CREATE TABLE給出的確切字符串。 另一方面,Excel(和LibreOffice)對於TABLETABLE$表僅顯示一個工作TABLE 如果我在Excel中編輯表,則保存后所做的更改僅在TABLE$ 另一張TABLE保持不變。 當我執行SELECT * FROM [TABLE] ,結果來自原始ODBC生成的表,而沒有Excel更改。 現在,我枚舉XLS文件中的可用工作表,如果第一個工作表名稱不以“ $”結尾並且工作表大於1,則在第一個工作表名稱中添加“ $”並打開正確的表。 我想ODBC連接字符串可能包括用於以“ $”結尾的表的選項...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM