それはあなたのコンピュータの設定と関係があると思います。
Excelの新しいインスタンスを開いて入力2012-07-24
し、セルから移動すると、すぐにに変わり24/07/2012
ます。これは、コードに関係する何よりも、コンピューターの地域設定です。
ただし、セルを次のようにフォーマットできるyyyy-mm-dd;@
ため、プログラムでこれを実行し、他に何も変更しないようにする必要があります。これでうまくいくと思います。
DateTime dt = Convert.ToDateTime(txtATrendStartDate.Text);
drASalesDrivers[2] = string.Format("{0:u}", dt);
drASalesDrivers[2].NumberFormat = "yyyy-mm-dd;@";
しかし、私はそれをテストしていません
私はいくつかのいじりをしていました、そしていくつかのサンプルコードは以下にあります:
using System.Runtime.InteropServices;
using Microsoft.Office.Interop.Excel;
namespace ConsoleApplication19
{
class Program
{
static void Main(string[] args)
{
Application _excelApp = new Application();
Workbook workbook = _excelApp.Workbooks.Open(@"C:\test\New Microsoft Excel Worksheet.xlsx");
Worksheet sheet = (Worksheet)workbook.Sheets[1];
Range excelRange = sheet.get_Range("A1");
//If you comment the next line of code, you get '24/07/2012', if not you get '2012-07-24'
excelRange.NumberFormat = "yyyy-mm-dd;@";
excelRange.Value2 = "2012-07-13";
workbook.Save();
workbook.Close(false, @"C:\test\New Microsoft Excel Worksheet.xlsx", null);
Marshal.ReleaseComObject(workbook);
}
}
}
また、string.Format("{0:u}", dt);
確かに日付と時刻dt.ToString("yyyy-MM-dd");
を返し、あなたの日付を返します。
Short date
別の方法は、次のようにコンピュータの設定をyyy-MM-ddに変更することです。
これにより、コンピューターのExcelでデフォルトで日付が希望どおりに表示されますが、コンピューターによって表示が異なります。