chociaż liczyłem na konkretną odpowiedź.
1. Po co są właściwości Apply* w CellFormat?
W Excelu styl komórki (CellFormat = tzw. XF – eXtended Format) może dziedziczyć formatowanie z dwóch źródeł:
- Style Index (
StyleIndex) – bazowy styl, który jest przechowywany w CellStyleFormats (np. domyślny styl nagłówka, styl tabeli itp.).
- Format komórki (
CellFormat) – który może nadpisywać tylko niektóre właściwości.
Te właściwości ApplyFont, ApplyBorder, ApplyFill, ApplyNumberFormat itd. mówią Excelowi, czy masz zastosować (nadpisać) te konkretne ustawienia, czy pozostawić domyślne/dziedziczone.
Jeśli ustawisz np.:
Kopiuj
new CellFormat
{
FontId = 2,
ApplyFont = true
}
→ Excel zastosuje czcionkę o FontId=2.
Jeśli ustawisz:
Kopiuj
new CellFormat
{
FontId = 2,
ApplyFont = false
}
→ Excel zignoruje FontId=2 i pozostawi czcionkę z domyślnego stylu (CellStyleFormat), mimo że podałeś FontId.
2. Kiedy miałbym ustawić ApplyFont = false (i analogiczne właściwości)?
Najczęściej nie musisz ustawiać ich na false, bo domyślnie Excel zakłada, że jeśli ustawiasz FontId, to chcesz, żeby było użyte (ApplyFont=true).
Jednak właściwości te mają sens w dwóch przypadkach:
(a) Dziedziczenie stylów – użycie gotowych stylów Excela
Excel ma predefiniowane style (np. "Normal", "Input", "Output"). Możesz przypisać komórce taki styl poprzez StyleIndex.
Jeśli chcesz tylko częściowo zmienić wygląd (np. zmienić kolor tła, ale zachować czcionkę ze stylu), ustawiasz:
Kopiuj
new CellFormat
{
StyleIndex = 1, // np. "Normal"
FillId = 3,
ApplyFill = true,
ApplyFont = false // zostaw czcionkę ze stylu "Normal"
}
→ Wtedy Excel bierze czcionkę i obramowanie ze stylu bazowego, a tylko wypełnienie jest nadpisywane.
(b) Optymalizacja i spójność stylów
Excel (i OpenXML) przechowuje style w osobnych kolekcjach (Fonts, Fills, Borders). Jeśli generujesz dużo danych i chcesz zmniejszyć rozmiar pliku, możesz stosować wspólne style (StyleIndex) i tylko częściowo je modyfikować, włączając/wyłączając konkretne Apply*.
3. Czy zawsze muszę ustawiać te właściwości?
- Jeśli tworzysz własny, kompletny styl od zera – zwykle ustawiasz wszystko i nie przejmujesz się
Apply* (Excel sam je ustawi na true).
- Jeśli bazujesz na istniejącym stylu (
StyleIndex) – wtedy świadomie decydujesz, które właściwości mają być nadpisane.
4. Co się stanie, jeśli je zostawię puste (null)?
W praktyce:
Więc w większości przypadków nie musisz ręcznie ustawiać tych flag.
5. TL;DR – praktyczna zasada
- Tworzysz nowy styl? → Ignoruj
Apply*, ustawiaj tylko FontId, BorderId itd.
- Bazujesz na istniejącym stylu (
StyleIndex)? → Ustawiaj Apply* tylko dla tych właściwości, które mają być nadpisane.
- Kiedy
false? → Gdy chcesz zostawić domyślne dziedziczone ustawienia ze stylu bazowego.