簡體   English   中英

使用OleDbDataAdapter(c#)讀取時間出錯

[英]Error reading time using OleDbDataAdapter (c#)

我有一個Excel(xlsx 2010)文檔,其中只包含兩列,一列用於DateTime,一列用於值,格式為:

DateTime                Value
01/09/2012 00:00:00     1.23456
02/09/2012 00:05:00     1.23457
03/09/2012 00:10:00     1.23458
04/09/2012 00:15:00     1.23459

日期時間列設置為自定義格式(dd / mm / yyyy hh:mm:ss),並且所有時間都明確地在5或10分鍾標記上,秒始終為00。

但是當我使用以下內容閱讀時:

connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 12.0;", filePath);
OleDbCommand sqlComm = new OleDbCommand("SELECT * FROM [Sheet1$]", new OleDbConnection(connectionString));
OleDbDataReader r = sqlComm.ExecuteReader();

前兩個DateTimes可以正確讀取,但是之后的所有DateTimes比文件實際包含的時間少一秒鍾,例如:

00:15:00    00:14:59
00:20:00    00:19:59

有誰知道為什么? 或者我可以做些什么來糾正它,而無需手動檢查並四舍五入到最近的分鍾(在這種情況下,這是一個可行的選擇-我認為)

PS。 為了簡潔起見,我剪切並粘貼了相關的代碼行,因此上述代碼示例在技術上可能無法正常工作,但在實際應用中,它確實讀取了文件

將評論轉換為答案

經過重大改進和陡峭的學習曲線后,我可以確認使用互操作庫可以正確讀取文件。

請參閱下面的示例代碼,該示例代碼基於網絡上的其他帖子

object misValue = System.Reflection.Missing.Value;
// COMM creates a wrapper for each object and they don't get cleaned up.  Never use 2 dots with comm
Excel.ApplicationClass xlApp = new Excel.ApplicationClass();
Excel.Workbooks xlWorkbooks = xlApp.Workbooks;
Excel.Workbook xlWorkbook  = xlWorkbooks.Open(fileInfo.getFileURL(), misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue);
Excel.Worksheet xlWorksheet = (Excel.Worksheet)xlWorkbook.Sheets[1];
Excel.Range xlRange, r;

try
{
    xlRange = (Excel.Range)xlWorksheet.UsedRange;

    int rowCount = xlRange.Rows.Count;
    int colCount = xlRange.Columns.Count;

    for (int col = 0; col < colCount; col++)
    {
        r = (Excel.Range)xlRange.Cells[fileInfo.columnHeaders, (col + 1)];
    }
}

暫無
暫無

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

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