Udostępnij za pośrednictwem


Programowe przechowywanie i pobieranie wartości dat w zakresach programu Excel

Wartości można przechowywać i pobierać w kontrolce NamedRange lub natywnym obiekcie zakresu programu Excel.

Dotyczy: informacje w tym temacie dotyczą projektów na poziomie dokumentu i projektów dodatków VSTO dla programu Excel. Aby uzyskać więcej informacji, zobacz Funkcje dostępne przez aplikacja pakietu Office lication i typ projektu.

Jeśli przechowujesz wartość daty, która mieści się w zakresie lub po 1/1/1900 przy użyciu narzędzi programistycznych pakietu Office w programie Visual Studio, jest ona przechowywana w formacie OA (OLE Automation). Należy użyć FromOADate metody , aby pobrać wartość dat automatyzacji OLE (OA). Jeśli data jest wcześniejsza niż 1/1/1900, jest przechowywana jako ciąg.

Uwaga

Daty programu Excel różnią się od dat automatyzacji OLE w ciągu pierwszych dwóch miesięcy 1900 roku. Istnieją również różnice, jeśli jest zaznaczona opcja systemu daty 1904. Poniższe przykłady kodu nie dotyczą tych różnic.

Używanie kontrolki NamedRange

  • Ten przykład dotyczy dostosowań na poziomie dokumentu. Poniższy kod musi zostać umieszczony w klasie arkusza, a nie w ThisWorkbook klasie.

Aby zapisać wartość daty w nazwanym zakresie

  1. Utwórz kontrolkę NamedRange w komórce A1.

    Microsoft.Office.Tools.Excel.NamedRange NamedRange1 =
        this.Controls.AddNamedRange(this.get_Range("A1"), "NamedRange1");
    
  2. Ustaw bieżącą datę jako wartość .NamedRange1

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

Aby pobrać wartość daty z nazwanego zakresu

  1. Pobierz wartość daty z NamedRange1.

    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());
    

Używanie natywnych zakresów programu Excel

Aby zapisać wartość daty w natywnym obiekcie zakresu programu Excel

  1. Utwórz obiekt reprezentujący komórkę Range A1.

    Excel.Range rng = this.Application.get_Range("A1");
    
  2. Ustaw bieżącą datę jako wartość .rng

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

Aby pobrać wartość daty z natywnego obiektu zakresu programu Excel

  1. Pobierz wartość daty z rng.

    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());