0

ExcelシートをSQLServerデータベースにインポートしています。データをアップロードすることはできますが、Excelに日付形式の列がありますmm/dd/yyyyyyyy/mm/ddデータベースに送信する前にこれを変換したい:

DataTable dt7 = new DataTable();
dt7.Load(dr);
DataRow[] ExcelRows = new DataRow[dt7.Rows.Count];

// Bulk Copy to SQL Server
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConnectionString))
{
  bulkCopy.DestinationTableName = "ExcelTable";
  dt7.Rows.CopyTo(ExcelRows, 0);

  for (int i = 0; i < ExcelRows.Length; i++)
  {
    DateTime oldDate =Convert.ToDateTime(ExcelRows[i]["data"]).Date;
    DateTime newDate = Convert.ToDateTime(oldDate).Date;
    ExcelRows[i]["data"] = newDate.ToString("yyyy/MM/dd");
  }
  bulkCopy.WriteToServer(ExcelRows);

エラー:DateTime oldDate = Convert.ToDateTime(ExcelRows [i] ["data"])。Date;
エラー:オブジェクトをDBNullから他のタイプにキャストできません。

それが言っているので、それは間違った列か何かを読んでいるように私には思えますcannot be cast from DBnull。Excelシートには2つの列があります。

id | data (which is date)

に置き換えてみましExcelRows[i]["data"]ExcelRows[i][1]が、同じエラーが発生しました。

4

1 に答える 1

2

これは、ExcelRows[i]["data"]がDBNullを返すために発生します。

それが起こったときにあなたはそれを処理する必要があります

    if (ExcelRows[i]["data"] == DBNull.Value)
    {
        // Include any actions to perform if there is no date
    }
    else
    {
        DateTime oldDate = Convert.ToDateTime(ExcelRows[i]["data"]).Date;
        DateTime newDate = Convert.ToDateTime(oldDate).Date;
        ExcelRows[i]["data"] = newDate.ToString("yyyy/MM/dd");
    }
于 2012-10-30T05:39:45.190 に答える