0

WindowsフォームのDatePickerから既存のExcelスプレッドシートに日付を保存しようとしています。

次のコードは、DatePickerのShortDate値を文字列に割り当てます。

if (checkupCheck.Checked)
            {
                newCheckupDate = checkupPicker.Value.Date.ToShortDateString();
            }
            else
            {
                newCheckupDate = null;
            }  

この値は、次のコードを使用してデータグリッドに配置された後に保存されます。

for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
            {
                for (int k = 0; k < dataGridView1.Columns.Count; k++)
                {
                    worksheet.Cells[i + 2, k + 1] = dataGridView1.Rows[i].Cells[k].Value.ToString();
                }
            }
workbook.Save();

ブレークポイントでnewCheckupDate文字列の値を見ると、希望どおりに表示されます"dd/mm/yyyy"

ただし、これをExcelに保存すると、セルにはが含まれます"dd/mm/yyyy 00:00:00"。時間を追加したくありません。セルは日付セルとしてフォーマットされます。

ここではExcelが問題の原因かもしれないと感じていますが、どうすれば解決できるのかわかりません。

助けてくれてありがとう!

4

1 に答える 1

0

理由を掘り下げることなく、ループ内のセルを単純にフォーマットできます。

for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
{
    for (int k = 0; k < dataGridView1.Columns.Count; k++)
    {
        worksheet.Cells[i + 2, k + 1] = dataGridView1.Rows[i].Cells[k].Value.ToString();
        worksheet.Cells[i + 2, k + 1].NumberFormat = "dd/mm/yyyy"
    }
}

workbook.Save();
于 2013-03-09T16:14:06.573 に答える