Aracılığıyla paylaş


Excel aralıklarında program aracılığıyla tarih değerlerini depolama ve alma

Değerleri bir denetimde veya yerel bir NamedRange Excel aralık nesnesinde depolayabilir ve alabilirsiniz.

Şunlar için geçerlidir: Bu konudaki bilgiler, Excel için belge düzeyi projeler ve VSTO Eklenti projeleri için geçerlidir. Daha fazla bilgi için bkz. Office uygulaması ve proje türüne göre kullanılabilen özellikler.

Visual Studio'da Office geliştirme araçlarını kullanarak 1/1/1900 veya sonrasındaki bir tarih değerini bir aralıkta depolarsanız, bu değer OLE Otomasyonu (OA) biçiminde depolanır. OLE Otomasyonu (OA) tarihlerinin değerini almak için yöntemini kullanmanız FromOADate gerekir. Tarih 1/1/1900'den önceyse dize olarak depolanır.

Not

Excel tarihleri, 1900'ün ilk iki ayı için OLE Otomasyonu tarihlerinden farklıdır. 1904 tarih sistemi seçeneği işaretliyse farklılıklar da vardır. Aşağıdaki kod örnekleri bu farkları ele almaz.

NamedRange denetimi kullanma

  • Bu örnek, belge düzeyi özelleştirmeleri içindir. Aşağıdaki kod sınıfa değil, bir sayfa sınıfına ThisWorkbook yerleştirilmelidir.

Tarih değerini adlandırılmış aralıkta depolamak için

  1. A1 hücresinde bir NamedRange denetim oluşturun.

    Microsoft.Office.Tools.Excel.NamedRange NamedRange1 =
        this.Controls.AddNamedRange(this.get_Range("A1"), "NamedRange1");
    
  2. Bugünün tarihini değeri NamedRange1olarak ayarlayın.

    DateTime dt = DateTime.Now;
    NamedRange1.Value2 = dt;
    

Adlandırılmış aralıktan tarih değeri almak için

  1. 'den NamedRange1tarih değerini alın.

    object value = NamedRange1.Value2;
    
    if (value != null)
    {
        if (value is double)
        {
            dt = DateTime.FromOADate((double)value);
        }
        else
        {
            DateTime.TryParse((string)value, out dt);
        }
    }
    MessageBox.Show(dt.ToString());
    

Yerel Excel aralıklarını kullanma

Yerel bir Excel aralık nesnesinde tarih değeri depolamak için

  1. A1 hücreyi temsil eden bir Range oluşturun.

    Excel.Range rng = this.Application.get_Range("A1");
    
  2. Bugünün tarihini değeri rngolarak ayarlayın.

    DateTime dt = DateTime.Now;
    rng.Value2 = dt;
    

Yerel bir Excel aralık nesnesinden tarih değeri almak için

  1. 'den rngtarih değerini alın.

    object value = rng.Value2;
    
    if (value != null)
    {
        if (value is double)
        {
            dt = DateTime.FromOADate((double)value);
        }
        else
        {
            DateTime.TryParse((string)value, out dt);
        }
    }
    System.Windows.Forms.MessageBox.Show(dt.ToString());