Dienstprogramme
Tabelle hinzufügen
func (f *File) AddTable(sheet string, table *Table) error
AddTable bietet die Methode zum Hinzufügen einer Tabelle zu einem Arbeitsblatt anhand des angegebenen Arbeitsblattnamens, des Koordinatenbereichs und des Formatsatzes.
- Beispiel 1: Erstellen Sie eine Tabelle mit
A1:D5
aufSheet1
:
err := f.AddTable("Sheet1", &excelize.Table{Range: "A1:D5"})
- Beispiel 2: Erstellen Sie eine Tabelle mit
F2:H6
aufSheet2
mit dem folgenden Format:
disable := false
err := f.AddTable("Sheet2", &excelize.Table{
Range: "F2:H6",
Name: "table",
StyleName: "TableStyleMedium2",
ShowFirstColumn: true,
ShowLastColumn: true,
ShowRowStripes: &disable,
ShowColumnStripes: true,
})
Beachten Sie, dass die Tabelle mindestens zwei Zeilen einschließlich der Kopfzeile enthalten muss. Die Header-Zellen müssen Zeichenfolgen enthalten und eindeutig sein und die Header-Zeilendaten der Tabelle festlegen, bevor die AddTable-Funktion aufgerufen wird. Mehrere Tabellen koordinieren Bereiche, die keinen Schnittpunkt haben können.
Name
: Der Name der Tabelle im selben Arbeitsblattnamen der Tabelle sollte eindeutig sein.
StyleName
: Die Namen der integrierten Tabellenstile:
TableStyleLight1 - TableStyleLight21
TableStyleMedium1 - TableStyleMedium28
TableStyleDark1 - TableStyleDark11
Index | Stil | Index | Stil | Index | Stil |
---|---|---|---|---|---|
TableStyleLight1 | TableStyleLight2 | ||||
TableStyleLight3 | TableStyleLight4 | TableStyleLight5 | |||
TableStyleLight6 | TableStyleLight7 | TableStyleLight8 | |||
TableStyleLight9 | TableStyleLight10 | TableStyleLight11 | |||
TableStyleLight12 | TableStyleLight13 | TableStyleLight14 | |||
TableStyleLight15 | TableStyleLight16 | TableStyleLight17 | |||
TableStyleLight18 | TableStyleLight19 | TableStyleLight20 | |||
TableStyleLight21 | TableStyleMedium1 | TableStyleMedium2 | |||
TableStyleMedium3 | TableStyleMedium4 | TableStyleMedium5 | |||
TableStyleMedium6 | TableStyleMedium7 | TableStyleMedium8 | |||
TableStyleMedium9 | TableStyleMedium10 | TableStyleMedium11 | |||
TableStyleMedium12 | TableStyleMedium13 | TableStyleMedium14 | |||
TableStyleMedium15 | TableStyleMedium16 | TableStyleMedium17 | |||
TableStyleMedium18 | TableStyleMedium19 | TableStyleMedium20 | |||
TableStyleMedium21 | TableStyleMedium22 | TableStyleMedium23 | |||
TableStyleMedium24 | TableStyleMedium25 | TableStyleMedium26 | |||
TableStyleMedium27 | TableStyleMedium28 | TableStyleDark1 | |||
TableStyleDark2 | TableStyleDark3 | TableStyleDark4 | |||
TableStyleDark5 | TableStyleDark6 | TableStyleDark7 | |||
TableStyleDark8 | TableStyleDark9 | TableStyleDark10 | |||
TableStyleDark11 |
Holen Sie sich Tische
func (f *File) GetTables(sheet string) ([]Table, error)
GetTables bietet die Methode zum Abrufen aller Tabellen in einem Arbeitsblatt anhand des angegebenen Arbeitsblattnamens.
Tabelle löschen
func (f *File) DeleteTable(name string) error
DeleteTable bietet die Methode zum Löschen einer Tabelle anhand des angegebenen Tabellennamens.
Automatischer Filter
func (f *File) AutoFilter(sheet, rangeRef string, opts []AutoFilterOptions) error
AutoFilter bietet die Methode zum Hinzufügen eines automatischen Filters in einem Arbeitsblatt anhand des angegebenen Arbeitsblattnamens, des Koordinatenbereichs und der Einstellungen. Ein automatischer Filter in Excel ist eine Möglichkeit, einen 2D-Datenbereich anhand einiger einfacher Kriterien zu filtern.
Beispiel 1: Anwenden eines automatischen Filters auf einen Zellbereich A1:D4
in Sheet1
:
err := f.AutoFilter("Sheet1", "A1:D4", []excelize.AutoFilterOptions{})
Beispiel 2: Filtern von Daten in einem automatischen Filter:
err := f.AutoFilter("Sheet1", "A1:D4", []excelize.AutoFilterOptions{
{Column: "B", Expression: "x != blanks"},
})
Column
definiert die Filterspalten in einem automatischen Filterbereich anhand einfacher Kriterien.
Es reicht nicht aus, nur die Filterbedingung anzugeben. Sie müssen auch alle Zeilen ausblenden, die nicht der Filterbedingung entsprechen. Zeilen werden mit der Methode SetRowVisible()
ausgeblendet. Excelize kann Zeilen nicht automatisch filtern, da dies nicht Teil des Dateiformats ist.
Festlegen von Filterkriterien für eine Spalte:
Expression
definiert die Bedingungen, die folgenden Operatoren stehen zum Festlegen der Filterkriterien zur Verfügung:
==
!=
>
<
>=
<=
and
or
Ein Ausdruck kann eine einzelne Anweisung oder zwei Anweisungen umfassen, die durch die Operatoren and
und or
getrennt sind. Zum Beispiel:
x < 2000
x > 2000
x == 2000
x > 2000 and x < 5000
x == 2000 or x == 5000
Das Filtern von leeren oder nicht leeren Daten kann erreicht werden, indem ein Wert von Leer oder Nicht leer im Ausdruck verwendet wird:
x == Blanks
x == NonBlanks
Office Excel ermöglicht auch einige einfache Zeichenfolgenabgleichsvorgänge:
x == b* // beginnt mit b
x != b* // beginnt nicht mit b
x == *b // endet mit b
x != *b // endet nicht mit b
x == *b* // enthält b
x != *b* // enthält nicht b
Sie können auch *
verwenden, um mit einem beliebigen Zeichen oder einer beliebigen Zahl übereinzustimmen, und ?
, Um mit einem einzelnen Zeichen oder einer einzelnen Zahl übereinzustimmen. Kein anderer Quantifizierer für reguläre Ausdrücke wird von den Excel-Filtern unterstützt. Die regulären Ausdruckszeichen von Excel können mit ~
maskiert werden.
Die Platzhaltervariable x
in den obigen Beispielen kann durch eine einfache Zeichenfolge ersetzt werden. Der tatsächliche Platzhaltername wird intern ignoriert, sodass alle folgenden Elemente gleichwertig sind:
x < 2000
col < 2000
Price < 2000
Verknüpften Wert aktualisieren
func (f *File) UpdateLinkedValue() error
UpdateLinkedValue fix verknüpfte Werte in einer Tabelle werden in Office Excel 2007 und 2010 nicht aktualisiert. Diese Funktion entfernt das Wertetag, wenn eine Zelle einen verknüpften Wert hat. Referenz https://learn.microsoft.com/en-us/archive/msdn-technet-forums/e16bae1f-6a2c-4325-8013-e989a3479066. Hinweis: Nach dem Öffnen der Tabellenkalkulationsdatei aktualisiert Excel den verknüpften Wert, generiert einen neuen Wert und fordert zum Speichern der Datei auf oder nicht.
Der Effekt des Löschens des Zellencaches in der Arbeitsmappe wird als Änderung des Tags <v>
angezeigt, z. B. des Zellencaches vor dem Löschen:
<row r="19">
<c r="B19">
<f>SUM(Sheet2!D2,Sheet2!D11)</f>
<v>100</v>
</c>
</row>
Nach dem Löschen des Zellencaches:
<row r="19">
<c r="B19">
<f>SUM(Sheet2!D2,Sheet2!D11)</f>
</c>
</row>
Geteilter Zellname
func SplitCellName(cell string) (string, int, error)
SplitCellName teilt den Zellennamen in den Spaltennamen und die Zeilennummer auf. Zum Beispiel:
excelize.SplitCellName("AK74") // rückkehr "AK", 74, nil
Join-Zellenname
func JoinCellName(col string, row int) (string, error)
JoinCellName verbindet den Zellennamen aus dem Spaltennamen und der Zeilennummer.
Spaltenname zu Nummer
func ColumnNameToNumber(name string) (int, error)
ColumnNameToNumber bietet eine Funktion zum Konvertieren des Spaltennamens einer Excel-Tabelle in int
. Spaltenname ohne Berücksichtigung der Groß- und Kleinschreibung. Die Funktion gibt einen Fehler zurück, wenn der Spaltenname falsch ist. Zum Beispiel:
excelize.ColumnNameToNumber("AK") // rückkehr 37, nil
Die zu benennende Spaltennummer
func ColumnNumberToName(num int) (string, error)
ColumnNumberToName bietet eine Funktion zum Konvertieren der Ganzzahl in den Spaltentitel des Excel-Arbeitsblatts. Zum Beispiel:
excelize.ColumnNumberToName(37) // rückkehr "AK", nil
Zellenname zu Koordinaten
func CellNameToCoordinates(cell string) (int, int, error)
CellNameToCoordinates konvertiert den alphanumerischen Zellennamen in [X, Y]
Koordinaten oder gibt einen Fehler zurück. Zum Beispiel:
excelize.CellNameToCoordinates("A1") // rückkehr 1, 1, nil
excelize.CellNameToCoordinates("Z3") // rückkehr 26, 3, nil
Koordinaten zum Zellnamen
func CoordinatesToCellName(col, row int, abs ...bool) (string, error)
CoordinatesToCellName konvertiert [X, Y]
Koordinaten in alphanumerische Zellennamen oder gibt einen Fehler zurück. Zum Beispiel:
excelize.CoordinatesToCellName(1, 1) // rückkehr "A1", nil
excelize.CoordinatesToCellName(1, 1, true) // rückkehr "$A$1", nil
Erstellen Sie einen bedingten Stil
func (f *File) NewConditionalStyle(style *Style) (int, error)
NewConditionalStyle bietet eine Funktion zum Erstellen eines Stils für das bedingte Format anhand des angegebenen Stilformats. Die Parameter sind die gleichen wie bei der Funktion NewStyle
. Beachten Sie, dass das Farbfeld RGB-Farbcode verwendet und nur das Festlegen von Schriftart, Füllungen, Ausrichtung und Rahmen unterstützt.
Holen Sie sich den bedingten Stil
func (f *File) GetConditionalStyle(idx int) (*Style, error)
GetConditionalStyle gibt die Definition des bedingten Formatstils anhand des angegebenen Stilindex zurück.
Bedingtes Format festlegen
func (f *File) SetConditionalFormat(sheet, rangeRef string, opts []ConditionalFormatOptions) error
SetConditionalFormat bietet eine Funktion zum Erstellen einer bedingten Formatierungsregel für den Zellenwert. Die bedingte Formatierung ist eine Funktion von Office Excel, mit der Sie ein Format auf eine Zelle oder einen Zellbereich basierend auf bestimmten Kriterien anwenden können.
Die Option Type
ist ein erforderlicher Parameter und hat keinen Standardwert. Zulässige Typwerte und die zugehörigen Parameter sind:
Typ | Parameters |
---|---|
cell | Criteria |
Value | |
MinValue | |
MaxValue | |
time_period | Criteria |
text | Criteria |
Value | |
average | Criteria |
duplicate | (none) |
unique | (none) |
top | Criteria |
Value | |
bottom | Criteria |
Value | |
blanks | (none) |
no_blanks | (none) |
errors | (none) |
no_errors | (none) |
2_color_scale | MinType |
MaxType | |
MinValue | |
MaxValue | |
MinColor | |
MaxColor | |
3_color_scale | MinType |
MidType | |
MaxType | |
MinValue | |
MidValue | |
MaxValue | |
MinColor | |
MidColor | |
MaxColor | |
data_bar | MinType |
MaxType | |
MinValue | |
MaxValue | |
BarBorderColor | |
BarColor | |
BarDirection | |
BarOnly | |
BarSolid | |
iconSet | IconStyle |
ReverseIcons | |
IconsOnly | |
formula | Criteria |
Der Parameter Criteria
wird verwendet, um die Kriterien festzulegen, nach denen die Zellendaten ausgewertet werden. Es hat keinen Standardwert. Die häufigsten Kriterien für excelize.ConditionalFormatOptions{Type: "cell"}
sind:
Textbeschreibung Charakter | Symbolische Darstellung |
---|---|
between | |
not between | |
equal to | == |
not equal to | != |
greater than | > |
less than | < |
greater than or equal to | >= |
less than or equal to | <= |
Sie können entweder die Textbeschreibungszeichenfolgen von Excel in der ersten Spalte oben oder die gängigsten symbolischen Alternativen verwenden.
Zusätzliche Kriterien, die für andere bedingte Formattypen spezifisch sind, werden in den entsprechenden Abschnitten unten gezeigt.
Value
: Der Wert wird im Allgemeinen zusammen mit dem Parameter Criteria
verwendet, um die Regel festzulegen, nach der die Zellendaten ausgewertet werden:
err := f.SetConditionalFormat("Sheet1", "D1:D10",
[]excelize.ConditionalFormatOptions{
{
Type: "cell",
Criteria: ">",
Format: &format,
Value: "6",
},
},
)
Die Eigenschaft Value
kann auch eine Zellreferenz sein:
err := f.SetConditionalFormat("Sheet1", "D1:D10",
[]excelize.ConditionalFormatOptions{
{
Type: "cell",
Criteria: ">",
Format: &format,
Value: "$C$1",
},
},
)
type: Format
- Der Parameter Format
wird verwendet, um das Format anzugeben, das auf die Zelle angewendet wird, wenn das Kriterium der bedingten Formatierung erfüllt ist. Das Format wird mit der Methode NewConditionalStyle()
auf dieselbe Weise wie die Zellenformate erstellt:
format, err := f.NewConditionalStyle(
&excelize.Style{
Font: &excelize.Font{Color: "9A0511"},
Fill: excelize.Fill{
Type: "pattern", Color: []string{"FEC7CE"}, Pattern: 1,
},
},
)
if err != nil {
fmt.Println(err)
}
err = f.SetConditionalFormat("Sheet1", "D1:D10",
[]excelize.ConditionalFormatOptions{
{Type: "cell", Criteria: ">", Format: &format, Value: "6"},
},
)
Hinweis: In Excel wird ein bedingtes Format über das vorhandene Zellenformat gelegt, und nicht alle Eigenschaften des Zellenformats können geändert werden. Eigenschaften, die in einem bedingten Format nicht geändert werden können, sind Schriftname, Schriftgröße, hochgestellt und tiefgestellt, diagonale Ränder, alle Ausrichtungseigenschaften und alle Schutzeigenschaften.
Excel gibt einige Standardformate an, die bei der bedingten Formatierung verwendet werden sollen. Diese können mit den folgenden Excel-Formaten repliziert werden:
// Rosenformat für schlechte Bedingungen.
format1, err := f.NewConditionalStyle(
&excelize.Style{
Font: &excelize.Font{Color: "9A0511"},
Fill: excelize.Fill{
Type: "pattern", Color: []string{"FEC7CE"}, Pattern: 1,
},
},
)
// Hellgelbes Format für neutrale Bedingungen.
format2, err := f.NewConditionalStyle(
&excelize.Style{
Font: &excelize.Font{Color: "9B5713"},
Fill: excelize.Fill{
Type: "pattern", Color: []string{"FEEAA0"}, Pattern: 1,
},
},
)
// Hellgrünes Format für gute Bedingungen.
format3, err := f.NewConditionalStyle(
&excelize.Style{
Font: &excelize.Font{Color: "09600B"},
Fill: excelize.Fill{
Type: "pattern", Color: []string{"C7EECF"}, Pattern: 1,
},
},
)
type: MinValue
- Der Parameter MinValue
wird verwendet, um den unteren Grenzwert festzulegen, wenn das Criteria
entweder between
oder not between
liegt.
// Markieren Sie die Regel für Zellen: zwischen ...
err := f.SetConditionalFormat("Sheet1", "A1:A10",
[]excelize.ConditionalFormatOptions{
{
Type: "cell",
Criteria: "between",
Format: &format,
MinValue: "6",
MaxValue: "8",
},
},
)
type: MaxValue
- Der Parameter maximum
wird verwendet, um den oberen Grenzwert festzulegen, wenn die Kriterien entweder between
oder not between
liegen. Siehe das vorherige Beispiel.
type: average
- Der Typ average
wird verwendet, um das bedingte Format im "Durchschnitt" -Stil von Office Excel anzugeben:
// Top/Bottom-Regeln: Überdurchschnittlich...
err := f.SetConditionalFormat("Sheet1", "A1:A10",
[]excelize.ConditionalFormatOptions{
{
Type: "average",
Criteria: "=",
Format: &format1,
AboveAverage: true,
},
},
)
// Top/Bottom-Regeln: Unterdurchschnittlich...
err := f.SetConditionalFormat("Sheet1", "B1:B10",
[]excelize.ConditionalFormatOptions{
{
Type: "average",
Criteria: "=",
Format: &format2,
AboveAverage: false,
},
},
)
type: duplicate
- Der Typ duplicate
wird verwendet, um doppelte Zellen in einem Bereich hervorzuheben:
// Markieren Sie die Zellenregeln: Werte duplizieren...
err := f.SetConditionalFormat("Sheet1", "A1:A10",
[]excelize.ConditionalFormatOptions{
{Type: "duplicate", Criteria: "=", Format: &format},
},
)
type: unique
- Der Typ unique
wird verwendet, um eindeutige Zellen in einem Bereich hervorzuheben:
// Markieren Sie die Zellenregeln: Nicht gleich...
err := f.SetConditionalFormat("Sheet1", "A1:A10",
[]excelize.ConditionalFormatOptions{
{Type: "unique", Criteria: "=", Format: &format},
},
)
type: top
- Der Typ top
wird verwendet, um die oberen n-Werte nach Anzahl oder Prozentsatz in einem Bereich anzugeben:
// Top/Bottom-Regeln: Top 10.
err := f.SetConditionalFormat("Sheet1", "H1:H10",
[]excelize.ConditionalFormatOptions{
{
Type: "top",
Criteria: "=",
Format: &format,
Value: "6",
},
},
)
Die Kriterien können verwendet werden, um anzuzeigen, dass eine prozentuale Bedingung erforderlich ist:
err := f.SetConditionalFormat("Sheet1", "A1:A10",
[]excelize.ConditionalFormatOptions{
{
Type: "top",
Criteria: "=",
Format: &format,
Value: "6",
Percent: true,
},
},
)
type: 2_color_scale
- Der Typ 2_color_scale
wird verwendet, um das bedingte Format im Excel-Stil "2 Farbskala" anzugeben:
// Farbskalen: 2 Farben.
err := f.SetConditionalFormat("Sheet1", "A1:A10",
[]excelize.ConditionalFormatOptions{
{
Type: "2_color_scale",
Criteria: "=",
MinType: "min",
MaxType: "max",
MinColor: "#F8696B",
MaxColor: "#63BE7B",
},
},
)
Dieser bedingte Typ kann mit MinType
, MaxType
, MinValue
, MaxValue
, MinColor
und MaxColor
geändert werden (siehe unten).
type: 3_color_scale
- Der Typ 3_color_scale
wird verwendet, um das bedingte Format des Excel-Stils "3 Color Scale" anzugeben:
// Farbskalen: 3 Farben.
err := f.SetConditionalFormat("Sheet1", "A1:A10",
[]excelize.ConditionalFormatOptions{
{
Type: "3_color_scale",
Criteria: "=",
MinType: "min",
MidType: "percentile",
MaxType: "max",
MinColor: "#F8696B",
MidColor: "#FFEB84",
MaxColor: "#63BE7B",
},
},
)
Dieser bedingte Typ kann mit MinType
, MidType
, MaxType
, MinValue
, MidValue
, MaxValue
, MinColor
, MidColor
und MaxColor
geändert werden (siehe unten).
type: data_bar
- Der Typ data_bar
wird verwendet, um das bedingte Format im Excel-Stil "Data Bar" anzugeben.
MinType
- Die Eigenschaften MinType
und MaxType
sind verfügbar, wenn der bedingte Formatierungstyp 2_color_scale
, 3_color_scale
oder data_bar
ist. Der MidType
ist für 3_color_scale
verfügbar. Die Eigenschaften werden wie folgt verwendet:
// Datenbalken: Verlaufsfüllung.
err := f.SetConditionalFormat("Sheet1", "K1:K10",
[]excelize.ConditionalFormatOptions{
{
Type: "data_bar",
Criteria: "=",
MinType: "min",
MaxType: "max",
BarColor: "#638EC6",
},
},
)
Die verfügbaren min/mid/max
-Typen sind:
Parameter | Erläuterung |
---|---|
min | Minimalwert (nur für MinType ) |
num | Numerisch |
percent | Prozentsatz |
percentile | Perzentil |
formula | Formel |
max | MaxValue (nur für MaxType ) |
MidType
- Wird für 3_color_scale
verwendet. Gleich wie MinType
, siehe oben.
MaxType
- Gleich wie MinType
, siehe oben.
MinValue
- Die Eigenschaften MinValue
und MaxValue
sind verfügbar, wenn der bedingte Formatierungstyp 2_color_scale
, 3_color_scale
oder data_bar
ist. Der MidValue
ist für 3_color_scale
verfügbar.
MidValue
- Wird für 3_color_scale
verwendet. Gleich wie MinValue
, siehe oben.
MaxValue
- Gleich wie MinValue
, siehe oben.
MinColor
- Die Eigenschaften MinColor
und MaxColor
sind verfügbar, wenn der bedingte Formatierungstyp 2_color_scale
, 3_color_scale
oder data_bar
ist. Die MidColor
ist für 3_color_scale
verfügbar. Die Eigenschaften werden wie folgt verwendet:
// Farbskalen: 3 Farben.
err := f.SetConditionalFormat("Sheet1", "B1:B10",
[]excelize.ConditionalFormatOptions{
{
Type: "3_color_scale",
Criteria: "=",
MinType: "min",
MidType: "percentile",
MaxType: "max",
MinColor: "#F8696B",
MidColor: "#FFEB84",
MaxColor: "#63BE7B",
},
},
)
MidColor
- Wird für 3_color_scale
verwendet. Gleich wie MinColor
, siehe oben.
MaxColor
- Gleich wie MinColor
, siehe oben.
BarColor
- Wird für data_bar
verwendet. Gleich wie MinColor
, siehe oben.
BarBorderColor
- Verwendet für legt die Farbe für die Umrandungslinie eines Datenbalkens fest, dies ist nur in Excel 2010 und höher sichtbar.
BarDirection
- Verwendet für legt die Richtung für Datenbalken fest. Die verfügbaren Optionen sind:
Wert | Erklärung |
---|---|
context | Die Richtung der Datenleiste wird von der Tabellenkalkulationsanwendung basierend auf dem Kontext der angezeigten Daten festgelegt. |
leftToRight | Die Richtung der Datenleiste verläuft von rechts nach links. |
rightToLeft | Die Richtung der Datenleiste ist von links nach rechts. |
BarOnly
- Verwendet für Set zeigt Balkendaten an, aber nicht die Daten in den Zellen.
BarSolid
- Wird verwendet, um eine durchgehende Füllung (ohne Farbverlauf) für Datenbalken zu aktivieren, dies ist nur in Excel 2010 und höher sichtbar:
IconStyle
- Die verfügbaren Optionen sind:
Wert |
---|
3Arrows |
3ArrowsGray |
3Flags |
3Signs |
3Symbols |
3Symbols2 |
3TrafficLights1 |
3TrafficLights2 |
4Arrows |
4ArrowsGray |
4Rating |
4RedToBlack |
4TrafficLights |
5Arrows |
5ArrowsGray |
5Quarters |
5Rating |
ReverseIcons
- Wird für umgekehrte Symbolsätze verwendet.
IconsOnly
- Wird für den Satz verwendet, der ohne den Zellenwert angezeigt wird.
StopIfTrue
- Wird verwendet, um die Funktion "Stoppen, wenn wahr" einer Regel zur bedingten Formatierung festzulegen, wenn mehr als eine Regel auf eine Zelle oder einen Zellbereich angewendet wird. Wenn dieser Parameter gesetzt ist, werden nachfolgende Regeln nicht ausgewertet, wenn die aktuelle Regel wahr ist.
Heben Sie beispielsweise die höchsten und niedrigsten Werte in einem Zellbereich A1:D4
hervor, indem Sie die bedingte Formatierung auf Sheet1
festlegen:
func main() {
f := excelize.NewFile()
defer func() {
if err := f.Close(); err != nil {
fmt.Println(err)
}
}()
for r := 1; r <= 4; r++ {
row := []int{
rand.Intn(100), rand.Intn(100), rand.Intn(100), rand.Intn(100),
}
if err := f.SetSheetRow("Sheet1", fmt.Sprintf("A%d", r), &row); err != nil {
fmt.Println(err)
return
}
}
red, err := f.NewConditionalStyle(
&excelize.Style{
Font: &excelize.Font{
Color: "9A0511",
},
Fill: excelize.Fill{
Type: "pattern",
Color: []string{"FEC7CE"},
Pattern: 1,
},
},
)
if err != nil {
fmt.Println(err)
return
}
if err := f.SetConditionalFormat("Sheet1", "A1:D4",
[]excelize.ConditionalFormatOptions{
{
Type: "bottom",
Criteria: "=",
Value: "1",
Format: &red,
},
},
); err != nil {
fmt.Println(err)
return
}
green, err := f.NewConditionalStyle(
&excelize.Style{
Font: &excelize.Font{
Color: "09600B",
},
Fill: excelize.Fill{
Type: "pattern",
Color: []string{"C7EECF"},
Pattern: 1,
},
},
)
if err != nil {
fmt.Println(err)
return
}
if err := f.SetConditionalFormat("Sheet1", "A1:D4",
[]excelize.ConditionalFormatOptions{
{
Type: "top",
Criteria: "=",
Value: "1",
Format: &green,
},
},
); err != nil {
fmt.Println(err)
return
}
if err := f.SaveAs("Book1.xlsx"); err != nil {
fmt.Println(err)
return
}
}
Bedingtes Format erhalten
func (f *File) GetConditionalFormats(sheet string) (map[string][]ConditionalFormatOptions, error)
GetConditionalFormats gibt bedingte Formateinstellungen nach dem angegebenen Arbeitsblattnamen zurück.
Entfernen des bedingten Formats
func (f *File) UnsetConditionalFormat(sheet, rangeRef string) error
UnsetConditionalFormat bietet eine Funktion zum Aufheben des bedingten Formats anhand des angegebenen Arbeitsblattnamens und -bereichs.
Festlegen von Fenstern
func (f *File) SetPanes(sheet string, panes *Panes) error
SetPanes bietet eine Funktion zum Erstellen und Entfernen von Freeze-Fenstern und zum Teilen von Fenstern anhand des angegebenen Arbeitsblattnamens und des festgelegten Fensterformats.
ActivePane
definiert das aktive Fenster. Die möglichen Werte für dieses Attribut sind in der folgenden Tabelle definiert:
Aufzählungswert | Beschreibung |
---|---|
bottomLeft (Unten links) | Unten links, wenn sowohl vertikale als auch horizontale Teilungen angewendet werden. Dieser Wert wird auch verwendet, wenn nur eine horizontale Aufteilung angewendet wurde, die den Bereich in obere und untere Bereiche unterteilt. In diesem Fall gibt dieser Wert den unteren Bereich an. |
bottomRight (Unten rechts) | Unten rechts, wenn sowohl vertikale als auch horizontale Teilungen angewendet werden. |
topLeft (Oben links) | Oben links, wenn sowohl vertikale als auch horizontale Teilungen angewendet werden. Dieser Wert wird auch verwendet, wenn nur eine horizontale Aufteilung angewendet wurde, die den Bereich in obere und untere Bereiche unterteilt. In diesem Fall gibt dieser Wert den oberen Bereich an. Dieser Wert wird auch verwendet, wenn nur eine vertikale Teilung angewendet wurde, die den Bereich in rechte und linke Bereiche unterteilt. In diesem Fall gibt dieser Wert den linken Bereich an. |
topRight (Top Right Pane) | Oben rechts, wenn sowohl vertikale als auch horizontale Teilungen angewendet werden. Dieser Wert wird auch verwendet, wenn nur eine vertikale Teilung angewendet wurde, die den Bereich in rechte und linke Bereiche unterteilt. In diesem Fall gibt dieser Wert den rechten Bereich an. |
Der Statusstatus des Bereichs ist auf die unterstützten Werte beschränkt, die derzeit in der folgenden Tabelle aufgeführt sind:
Aufzählungswert | Beschreibung |
---|---|
frozen (Gefroren) | Die Scheiben sind eingefroren, wurden aber beim Teilen nicht gespalten. In diesem Zustand wird beim erneuten Auffrieren der Fenster ein einzelnes Fenster ohne Teilung erstellt. In diesem Zustand sind die geteilten Balken nicht einstellbar. |
split (Teilt) | Die Scheiben sind geteilt, aber nicht gefroren. In diesem Zustand sind die geteilten Balken vom Benutzer einstellbar. |
XSplit
- Horizontale Position der Teilung in 1/20 eines Punktes; 0 (Null) wenn keine. Wenn der Bereich eingefroren ist, gibt dieser Wert die Anzahl der im oberen Bereich sichtbaren Spalten an.
YSplit
- Vertikale Position der Teilung in 1/20 eines Punktes; 0 (Null) wenn keine. Wenn der Bereich eingefroren ist, gibt dieser Wert die Anzahl der im linken Bereich sichtbaren Zeilen an. Die möglichen Werte für dieses Attribut werden durch den doppelten Datentyp W3C XML Schema definiert.
TopLeftCell
- Position der sichtbaren Zelle oben links im unteren rechten Bereich (im Modus von links nach rechts).
SQRef
- Bereich der Auswahl. Kann ein nicht zusammenhängender Satz von Bereichen sein.
Beispiel 1: Spalte A
in Sheet1
einfrieren und die aktive Zelle auf Sheet1!K16
setzen:
err := f.SetPanes("Sheet1", &excelize.Panes{
Freeze: true,
XSplit: 1,
TopLeftCell: "B1",
ActivePane: "topRight",
Selection: []excelize.Selection{
{SQRef: "K16", ActiveCell: "K16", Pane: "topRight"},
},
})
Beispiel 2: Frieren Sie die Zeilen 1 bis 9 in Sheet1
ein und setzen Sie die aktiven Zellbereiche auf AA Sheet1!A11:XFD11
:
err := f.SetPanes("Sheet1", &excelize.Panes{
Freeze: true,
YSplit: 9,
TopLeftCell: "A34",
ActivePane: "bottomLeft",
Selection: []excelize.Selection{
{SQRef: "A11:XFD11", ActiveCell: "A11", Pane: "bottomLeft"},
},
})
Beispiel 3: Erstellen Sie geteilte Fenster in Sheet1
und setzen Sie die aktive Zelle auf Sheet1!J60
:
err := f.SetPanes("Sheet1", &excelize.Panes{
Split: true,
XSplit: 3270,
YSplit: 1800,
TopLeftCell: "N57",
ActivePane: "bottomLeft",
Selection: []excelize.Selection{
{SQRef: "I36", ActiveCell: "I36"},
{SQRef: "G33", ActiveCell: "G33", Pane: "topRight"},
{SQRef: "J60", ActiveCell: "J60", Pane: "bottomLeft"},
{SQRef: "O60", ActiveCell: "O60", Pane: "bottomRight"},
},
})
Beispiel 4: Entfrieren und entfernen Sie alle Fenster auf Sheet1
:
err := f.SetPanes("Sheet1", &excelize.Panes{Freeze: false, Split: false})
Abrufen von Fenstern
func (f *File) GetPanes(sheet string) (Panes, error)
GetPanes bietet eine Funktion zum Abrufen von fixierten Bereichen, geteilten Bereichen und Arbeitsblattansichten anhand des angegebenen Arbeitsblattnamens.
Farbe
func (f *File) GetBaseColor(hexColor string, indexedColor int, themeColor *int) string
GetBaseColor gibt den bevorzugten Hex-Farbcode zurück, indem es den Hex-Farbcode, die indizierte Farbe und die Designfarbe angibt.
func ThemeColor(baseColor string, tint float64) string
ThemeColor hat die Farbe mit dem Farbtonwert angewendet.
Es gibt drei Arten von Farben für den Text in der Tabelle: Hexadezimalfarbe, indizierte Farbe und Designfarbe. Die Priorität dieser Farben besteht darin, dass die Hex-Farbe Vorrang vor der Designfarbe hat und die Designfarbe Vorrang vor der indizierten Farbe hat. Darüber hinaus unterstützt die Farbe auch das Anwenden eines Farbtonwerts basierend auf der Hex-Farbe. Daher müssen wir die ThemeColor-Funktion verwenden, um den Farbton für die Basisfarbe anzuwenden, um den berechneten Hex-Farbwert zu erhalten. Zum Beispiel:
package main
import (
"fmt"
"github.com/xuri/excelize/v2"
)
func main() {
f, err := excelize.OpenFile("Book1.xlsx")
if err != nil {
fmt.Println(err)
return
}
defer func() {
if err := f.Close(); err != nil {
fmt.Println(err)
}
}()
runs, err := f.GetCellRichText("Sheet1", "A1")
if err != nil {
fmt.Println(err)
return
}
for _, run := range runs {
var hexColor string
if run.Font != nil {
baseColor := f.GetBaseColor(run.Font.Color, run.Font.ColorIndexed, run.Font.ColorTheme)
hexColor = strings.TrimPrefix(excelize.ThemeColor(baseColor, run.Font.ColorTint), "FF")
}
fmt.Printf("text: %s, color: %s\r\n", run.Text, hexColor)
}
}
Konvertieren von RGB in HSL
func RGBToHSL(r, g, b uint8) (h, s, l float64)
RGBToHSL konvertiert ein RGB-Tripel in ein HSL-Tripel.
Konvertieren von HSL in RGB
func HSLToRGB(h, s, l float64) (r, g, b uint8)
HSLToRGB konvertiert ein HSL-Tripel in ein RGB-Tripel.
Datei-Brenner
Write
func (f *File) Write(w io.Writer, opts ...Options) error
Write bietet eine Funktion zum Schreiben in einen io.Writer
.
WriteTo
func (f *File) WriteTo(w io.Writer, opts ...Options) (int64, error)
WriteTo implementiert io.WriterTo
, um die Datei zu schreiben.
WriteToBuffer
func (f *File) WriteToBuffer() (*bytes.Buffer, error)
WriteToBuffer bietet eine Funktion zum Abrufen von *bytes.Buffer
aus der gespeicherten Datei.
VBA-Projekt hinzufügen
func (f *File) AddVBAProject(file []byte) error
AddVBAProject bietet die Methode zum Hinzufügen der Datei vbaProject.bin
, die Funktionen und/oder Makros enthält. Die Dateierweiterung sollte .xlsm
oder .xltm
sein. Zum Beispiel:
codeName := "Sheet1"
if err := f.SetSheetProps("Sheet1", &excelize.SheetPropsOptions{
CodeName: &codeName,
}); err != nil {
fmt.Println(err)
return
}
file, err := os.ReadFile("vbaProject.bin")
if err != nil {
fmt.Println(err)
return
}
if err := f.AddVBAProject(file); err != nil {
fmt.Println(err)
return
}
if err := f.SaveAs("macros.xlsm"); err != nil {
fmt.Println(err)
return
}
Excel-Datum zur Uhrzeit
func ExcelDateToTime(excelDate float64, use1904Format bool) (time.Time, error)
ExcelDateToTime konvertiert eine Float-basierte Excel-Datumsdarstellung in eine time.Time
.
Zeichentranscoder
func (f *File) CharsetTranscoder(fn charsetTranscoderFn) *File
CharsetTranscoder Legt die benutzerdefinierte Codepage-Transcoder-Funktion zum Öffnen der Tabelle mit Nicht-UTF-8-Codierung fest.