1

C# を使用して Excel ファイルを読み取るときに問題が 1 つあります。私のExcelファイルでは、DateTimeの列が1つあり、Excelファイルの値は長いです。そのため、C# で同じ値を取得して C# を使用して同じ Excel を読み取ると、Excel はそれを ###### 形式に変換します。誰でも助けてください: ##### の代わりに日時の値を取得するにはどうすればよいですか?

私のコードは次のようになります:

using Excel = Microsoft.Office.Interop.Excel;
Excel.Application xlApp;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
 ExcelObj = new Microsoft.Office.Interop.Excel.Application();
             Microsoft.Office.Interop.Excel.Workbook theWorkbook =   ExcelObj.Workbooks.Open(oldg.FileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
             Type.Missing, Type.Missing, Type.Missing, Type.Missing,
             Type.Missing, Type.Missing, Type.Missing, Type.Missing,
             Type.Missing, Type.Missing);
             Microsoft.Office.Interop.Excel.Sheets sheets = theWorkbook.Worksheets;
Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)sheets.get_Item(1);
for (int i = 3; i <= worksheet.UsedRange.Rows.Count; i++)
{
    var getvalue = excel_getValue("B" + i);
}
4

3 に答える 3

4

日付列があり、値が範囲外の場合、日付変換が失敗する可能性があります。「5555555555555555555555」(たとえば)を日付列に入力すると、一連の「#####」が表示され、ツールチップには次のように表示されます。

負の値または大きすぎる日付と時刻は、###### として表示されます。

これの最も一般的な原因は、米国形式 (MM/dd/yyyy) の日付をヨーロッパ形式 (dd/MM/yyyy) の日付に変換しようとしているか、文字列を変換していないことです。まったく。

Excel が実際の列の値ではなく「######」を表示する理由の詳細については、このスーパー ユーザーの質問を参照してください。

于 2013-07-15T07:42:07.347 に答える
1

このようにしてみてください:-

var conv = DateTime.FromOADate("B"+i);
于 2013-07-15T07:37:49.647 に答える