R Package um Internettabellen aus R anzulegen und zu formatieren. TGexcel ist eine Erweiterung des openxlsx Package und basiert weitestgehend auf den Funktionen aus openxlsx.
Das Package soll es dem User möglich machen die Erstellung der Internettabellen direkt aus einem R-Prozess heraus durchzuführen. So können Prozesse weiter standardisiert und automatisiert werden.
Das Package macht es möglich. Titel, Subtitel und Variablennamen (auch verschachtelt) im entsprechenden Format anzulegen. Ausserdem können auch die Daten selbst im gewünschten Format eingetragen werden. Auch die Kopfzeile mit Logo kann per Funktion eingefügt werden. Es können sowohl neue Excel Files angelegt erden als auch bereits existierende Files bearbeitet werden.
Da das Package auf openxlsx
basiert, werden für alle Funktionen workbook-Objekte verwendet. Diese können entweder mit createWorkbook()
neu erstellt, oder mit loadWorkbook("path/to/file.xlsx")
bearbeitet werden.
Die Development Version des Packages kann wie folgt installiert und genutzt werden:
devtools::install_github("ogdtg/TGexcel")
library(TGexcel)
Da die meisten Excel Files dem gleichen Aufbau folgen, können mit diesen Funktionen auf sehr einfache Weise Dtaen neuer Jahre als Reiter, Zeile oder Spalte hinzugefügt werden. Alle drei Funktionen funktionieren dabei nach einem ähnlichen Muster
Wenn ein Excel File aus einer Tabelle besteht, bei der jedes Jahr jeweils eine Spalte darstellt, kann die Funktion create_excel_spalte
verwendet werden. Diese Funktion hängt für die Daten eines neuen Jahres eine Spalte im Excel File an, passt die Untertitel der Überschrift und ggf. den Namen des Reiters an (z.B. aus 2020-2022 wird 2020-2023).
Zu beachten ist, dass als data
Argument jeweils ein data.frame übergeben werden muss, bei welchem eine Datenspalte enthalten sein muss, die den Namen des Jahres trägt, welches hinzugefügt werden soll. Idealerweise gibt man der Funktion einen Datensatz mit nur einer Spalte, nämlcih der Jahresspalte in der die Daten stehen mit.
year <- 2023
path_old <- paste0("/r-proj/stat/ges/ambulante_Dienste/FMH_Aerztestatistik/output/T2_Aerzte_ambulant_Hauptfachgebiet_2000_",year-1,".xlsx")
path_new <- paste0("/r-proj/stat/ges/ambulante_Dienste/FMH_Aerztestatistik/output/T2_Aerzte_ambulant_Hauptfachgebiet_2000_",year,"_FL.xlsx")
wb <- loadWorkbook(path_old)
data <- data.frame(x = c(1:13))
names(data) <- paste0(year)
wb <- create_xlsx_spalte(
xlsx_path = path_old,
year = year,
dataStart = 4,
data = data
)
save_tg_workbook(wb,path_new,tg_header = F,overwrite = T)
Wenn ein Excel File aus einer Tabelle besteht, bei der jedes Jahr jeweils eine Zeile darstellt, kann die Funktion create_excel_zeile
verwendet werden. Diese Funktion hängt für die Daten eines neuen Jahres eine Reihe im Excel File an, passt die Untertitel der Überschrift und ggf. den Namen des Reiters an (z.B. aus 2020-2022 wird 2020-2023).
Zu beachten ist, dass als data
Argument jeweils ein data.frame übergeben werden muss, bei welchem eine Datenspalte mit dem Namen jahr
enthalten sein muss. Diese muss das entsprechende Jahr (year
) enthalten. Der Datensatz sollte nur eine Zeile enthalten und die Variablenreihenfolge mussd er Reihenfolge im Excel enstprechen.
year <- 2023
wb <- loadWorkbook(path_old)
data <- data.frame(jahr = year,a=1,b=2,c=2)
wb <- create_xlsx_zeile(
xlsx_path = path_old,
year = year,
dataStart = 4,
data = data
)
save_tg_workbook(wb,path_new,tg_header = F,overwrite = T)
Wenn ein Excel File pro Jahr einen Reiter enthält, kann die Funktion create_excel_zeile
verwendet werden. Diese Funktion hängt für die Daten eines neuen Jahres einen neuen Reiter mit dem entsprechenden Jahr als Namen im Excel File an und passt die Untertitel der Überschrift an.
Zu beachten ist, dass der data.frame im data
Argument jeweils den gleichen Aufbau haben muss, wie der Reiter des vorherigen Jahres. Die Variable dataStartCol zeigt an in welcher Reihe die Daten jeweils eingefügt werden. Default ist dabei 2, d.h. man geht davon aus, dass z.B. Gemeindenamen nicht im data
Argument enthalten sind. Das Argument muss ansonsten an die Funktion mitgegeben werden (siehe unten).
year <- 2023
wb <- loadWorkbook(path_old)
data <- data.frame(bezirk = c("Weinfelden","Frauenfeld"),a=c(1,2),b=c(3,4),c=c(5,6))
wb <- create_xlsx_reiter(
xlsx_path = path_old,
year = year,
dataStart = 4,
data = data,
dataStartCol = 1
)
save_tg_workbook(wb,path_new,tg_header = F,overwrite = T)
Mit den Basisfunktionen des openxlsx
Packages können bestehende Excel Files mit neuen Daten befüllt werden. Dazu muss einfach ein bestehendes File mit loadWorkbook
geöffnet werden. Anschliessend kann das gewünschte Tabellenblatt mit cloneWorksheet
kopiert werden. Mit writeData
können dann neue Daten eingefügt werden. Das alte Tabellenblatt kann mit removeWorksheet
entfernt werden und das Workbook dann unter einem neuen Namen mit save_tg_workbook
abgespeichert werden.
# Jahr definieren
jahr <- 2021
# Pfad alte Tabellen
path_excel <- paste0("Y:/SK/SKStat/R/Prozesse/vz_see/Erwerb_Ausbildung/erwerb_ausbildung/output/excel/",jahr-1,"/",jahr+1,"_Arbeitsmarktstatus_ab_2015.xlsx")
#Workbook laden
wb_am_status <- loadWorkbook(path_excel)
# Alle Blätter ausser dem aktuellen löschen
sheets_to_remove <- sheets(wb_am_status)
# Tabellenblatt kopieren
cloneWorksheet(wb_am_status, paste0(jahr,"_Personen"), clonedSheet = paste0(jahr-1,"_Personen"))
# Dummy Datensatz erstellen
rownum <- 6
sample_df <- data.frame(x1 = sample(60000:200000,rownum),
x2 = runif(rownum),
x3 = sample(60000:200000,rownum),
x4 = sample(60000:200000,rownum),
x5 = sample(60000:100000,rownum),
x6 = runif(rownum),
x7 = sample(60000:100000,rownum),
x8 = sample(60000:100000,rownum),
x9 = sample(60000:100000,rownum),
x10 = runif(rownum),
x11 = sample(60000:100000,rownum),
x12 = sample(60000:100000,rownum))
# Daten einfügen
writeData(wb_am_status, sheet = paste0(jahr,"_Personen"),x = sample_df, startCol = 2, startRow = 7, colNames = FALSE)
# Subheader und Datenquelle bearbeiten
writeData(wb_am_status, sheet = paste0(jahr,"_Personen"),x = paste0("Kanton Thurgau, ",jahr,", in Anzahl Personen"), startCol = 1, startRow = 2, colNames = FALSE)
writeData(wb_am_status, sheet = paste0(jahr,"_Personen"),x = paste0("Datenquelle: Bundesamt für Statistik, Strukturerhebung ",jahr), startCol = 1, startRow = 22, colNames = FALSE)
# Alle nicht gebrauchten Sheets löschen
lapply(sheets_to_remove, function(x){
removeWorksheet(wb_am_status,sheet = x)
})
Mit der insert_data_row
Funktion können eine oder mehrere Datenreihen in eine bestehende Excel Datei übernommen werden. Dabei werden die Formate übernommen und die ZEilen nach unten verschoben. Neben den Standardparametern muss lediglich die Reihe definiert werden ab der das Einfügen starten soll (insertRow
).
# Daten einfügen
insert_data_row(wb, sheet = "2000–2021",data = sample_df, dataStartRow = 5, insertRow = 27)
Auch Datenspalten können in die Excel eingefügt werden. Hier gibt es mit append_column
eine Funktion um Spalten am Ende der Tabelle einzufügen sowie die insert_column
Funktion, die es ermöglicht, Spalten an einer beliebigen Stelle in der Tabelle einzufügen. Der Pareameter col
bezeichnet dabei, wo die Daten genau eingefügt werden sollen. Der Parameter patternCol
gibt an aus welcher Salte die Styles übernommen werden sollen.
insert_column
# Spalten irgendwo einfügen
insert_column(
wb,
sheet = "4.2 Vergünstigung",
data = df,
col = 2,
dataStart = dataStart,
colNames = TRUE,
patternCol = 20
)
append_column
# Spalten am Ende anhängen
append_column(wb,
sheet = "4.2 Vergünstigung",
data = df,
col = insert_col,
dataStart = dataStart,
patternCol = 20,
colNames = T)
Im Package sind bereits mehrere Cellstyles enthalten. Diese können mit der customize_style
Funktion rudimentär bearbeitet werden.
wb <- loadWorkbook("test_05.xlsx")
# Style bearbeiten
varname_bold_left <- customize_style(template = "varname",
halign = "center",
decoration = "bold",
fontName = "Cambria",
fontSize = 14)
# Style auf Zelle anwenden
addStyle(wb = wb,
sheet = "TEST",
style = varname_bold_left,
rows = 3,
cols = 2)
# WB speichern
save_tg_workbook(wb,
filename = "test_07.xlsx",
tg_header = TRUE,
overwrite = TRUE)
Um einzelne Features wie zum Beispiel die Hintergrundfarbe oder die Schriftart zu verändern, ohne aber den Rest des vorhanden Celsstyles in einer Zelle zu überschreiben kann die add_style_feature
Funktion und die daraus abgeleiteten Funktionen verwendet werden. Neben einem Workbookobject wb
und dem Namen des Tabellenblatts sheet
muss ein vector mit den zu verändernden Features, sowie ein Vektor mit den entsprechenden Werten angegeben werden. Hierbei ist es wichtige die korrekte Formatierung der Werte zu beachten, da ansonsten das xlsx File nicht korrekt abgespeichert werden kann. Es ist daher ratsam, die von der Funktion abgeleitetn Funktionen zu verwenden, die die korrekte Formatierung gewährleisten. Mehr Informationen zu den möglichen Features finden sich in der Dokumentation von openxlsx::createStyle()
.
wb <- loadWorkbook("test_11.xlsx")
# Funktion ergänzt eine blaue, horizontale Linie unter der 10. und 15. Zeile,
# die sich über 9 Spalten erstreckt
add_style_feature(
wb,
sheet,
rows = c(10,15),
cols = c(1:9),
c("borderBottom", "borderBottomColour"),
c("thin", list(rgb = "FF0000FF"))
)
save_tg_workbook(wb, "test_12.xlsx", overwrite = T, tg_header = F)
Das oben Beschriebene kann auch durch add_hline
erreicht werden, welche von add_style_feature
abgeleitet wurde und nutzerfreundlicher ist.
wb <- loadWorkbook("test_11.xlsx")
# Funktion ergänzt eine blaue, horizontale Linie unter der 10. und 15. Zeile,
# die sich über 9 Spalten erstreckt
add_hline(wb,
sheet,
rows = c(10,15),
ncol = 9,
style = "thin",
color = "blue",
below = TRUE)
save_tg_workbook(wb, "test_12.xlsx", overwrite = T, tg_header = F)
Mit add_decoration
kann der Text in einer oder mehrere Zellen fett, kursiv o.ä. gemacht werden (vgl. openxlsx::createStyle()
für verfügbare Style Methoden)
wb <- loadWorkbook("test_11.xlsx")
# Macht den Text jeweils in der ersten, dritten und neunten Spalte
# der zehnten, 20. und 30. Reihe fett
add_decoration(
wb,
sheet,
rows = c(10, 20, 30),
cols = c(1, 3, 9),
decoration = "BOLD"
)
save_tg_workbook(wb, "test_12.xlsx", overwrite = T, tg_header = F)
Die Füllung einer Zelle kann mit add_bg
verändert werden.
wb <- loadWorkbook("test_11.xlsx")
# Setzt die Füllung in der zwölften Reihe für die
# ersten neun Spalten auf himmelblau (wie in Internettabellen verwendet)
add_bg(wb,
sheet,
rows = 12,
cols = c(1:9),
color = "#c5d9f1"
)
save_tg_workbook(wb, "test_12.xlsx", overwrite = T, tg_header = F)
Existieren in einer Tabelle Zahlen die auf eine bestimmte Art gekennzeichnet werden sollen, z.B. mit **
weil es sich um weniger als x Beochatungen handelt so kann dies mithilfe eines speziellen Zahlenformats in Excel bewerkstelligt werden ohne, dass die Zahl ihre Eigenschaft als Zahl verliert. Sofern in R ein Datensatz besteht, indem die entsprechenden Zellen bereits gekennzeichnet sind, kann die add_special_numFmt
Funktion verwendet werden.
Die Funktion sucht in einem gegebenen Datensatz nach einem bestimmten pattern
, merkt sich die Position der matchenden Zellen, schreibt die Daten in das Workbook und wendet am Ende das gegebene Zahlenformat auf die enstprechenden Zellen an.
ACHTUNG: Die Funktion kann NICHT auf Zellen angewendet werden, die keinerlei Styling enthalten.
Beispiel:
Wir haben folgenden Datensatz namens test
:
Diesen möchten wir nun in ein Excel File schreiben. Anstelle der Sternchen möchten wir eckige Klammern um die Zahlen herum. In der Excel soll jedoch kein Text eingetragen werden, sondern das Zahlenformat soll beibehalten werden. Angenommen, die entsprechenden Zellen in der Excel Datei enthalten mindestens ein Style Attribut, dann gehen wir wie folgt vor:
add_special_numfmt(wb=wb,
sheet = "test",
data = test,
pattern = "\\*\\*",
dataStart = 1,
startCol = 1,
prefix = "\\[",
suffix = "\\]")
Wichtig sind die anführenden \\
, welche vor jedem einzelnen character eingefügt werden müssen.
Das Ergebnis sieht dann wie folgt aus:
Mit add_footnotes
können Fussnoten, mit add_datenquelle
die Datenquelle hinzugefügt werden
wb <- loadWorkbook("test_05.xlsx")
add_footnotes(
wb = wb,
sheet = "TEST",
startRow = 33,
footnotes = c("1 Neue Footnote", "2 Neue Footnote")
)
add_datenquelle(
wb = wb,
sheet = "TEST",
startRow = 35,
datenquelle = "Neue Datenquelle"
)
# WB speichern
save_tg_workbook(wb,
filename = "test_08.xlsx",
tg_header = TRUE,
overwrite = TRUE)
Hoch- und tiefgestellte Zahlen können mit[Zahl]
bzw. ~Zahl~
erstellt werden.
wb <- createWorkbook()
addWorksheet(wb,"Test")
create_header_style(wb = wb, sheet = "Test", ncol = 6, text = "Hochgestellt[1] Tiefgestellt~2~")
saveWorkbook(wb, "test_09.xlsx", overwrite = TRUE)
Beim Abspeichern kann es sein, dass Leere Zellen mit ungewollten NAs befüllt werden.
# Pfad definieren
path <- "Y:\\SK\\SKStat\\Internet\\1_Statistik\\1_Themen und Daten\\1_Bevölkerung und Haushalte\\1_01_Bevölkerungsstand\\Tabellen\\"
# Workbook laden
wb <- loadWorkbook(paste0(path,"2022_2015_BevGmd_Geschl_Nat.xlsx"))
save_tg_workbook(wb,"test_10.xlsx")
Zu diesem Zwecke kann die replace_nas_in_wb
verwendet werden.
# Pfad definieren
path <- "Y:\\SK\\SKStat\\Internet\\1_Statistik\\1_Themen und Daten\\1_Bevölkerung und Haushalte\\1_01_Bevölkerungsstand\\Tabellen\\"
# Workbook laden
wb <- loadWorkbook(paste0(path,"2022_2015_BevGmd_Geschl_Nat.xlsx"))
# NAs ersetzen
replace_nas_in_wb(wb)
save_tg_workbook(wb,"test_10.xlsx")
Mit der create_header_style()
Funktion wird der Titel in das Excel File eingefügt. Neben dem workbook Object, dem Name des Sheets sowie dem Titeltext muss für ncol
angegeben werden, wie viele Spalten der Titel bzw. die Tabelle umfassen soll. Hier sollte die Anzahl der Spalten, die der Datensatz umfasst eingetragen werden. Per Default ist als Startzeile (startRow
) die erste Zeile des Sheets angegeben. Dieser Wert kann aber auch angepasst werden. Gleiches gilt für die Argumente style
und rowHeight
.
wb <- createWorkbook()
addWorksheet(wb,"Test")
create_header_style(wb = wb, sheet = "Test", ncol = 6, text = "Das ist der Titel")
# Workbook als xlsx speichern
saveWorkbook(wb, "test.xlsx", overwrite = TRUE)
Das Ergebnis nach dem Speichern sieht wie folgt aus:
Mit create_subheader_style()
kann ein Untertiel eingefügt werden. Der Funktionsaufbau ist der selbe wie bei create_header_style()
.
## Subheader
wb <- loadWorkbook("test.xlsx")
create_subheader_style(wb = wb, sheet = "Test", ncol = 6, text = "Das ist der Subtitel")
# Workbook als xlsx speichern
saveWorkbook(wb, "test.xlsx", overwrite = TRUE)
Das Package bietet die Möglichkeit Variablennamen mit oder ohne Verschachtelung einzutragen.
Bei unverschachtelten Variablennamen muss für create_varnames_style()
lediglich ein Vektor mit den Spaltennamen angegeben werden. Per default ist startRow=3
.
# Unverschachtelt
wb <- loadWorkbook("test.xlsx")
create_varnames_style(wb = wb, sheet = "Test", var_names = c("Var1","Var2","Var3","Var4","Var5", "Var6"))
# Workbook als xlsx speichern
saveWorkbook(wb, "test_01.xlsx", overwrite = TRUE)
Bei verschachtelten Variablennamen kann die create_nested_header_style()
Funktion verwendet werden.
Hierbei müssen zwei Vektoren mit den übergeordneten (vars_level1
) bzw. untergeordneten (vars_level2
) Variablennamen als Argument angegeben werden. Des Weiteren muss der nesting
Parameter angegeben werden. Hier kann wahlweise ein numerischer Vektor mit der gleichen Länge wie vars_level1
angegeben werden oder der String "even"
. Wird "even"
angegeben versucht die Funktion die untergeordneten Variablen gleichmässig auf die übergeordneten Variablen zu verteilen. Dies funktioniert nur, wenn die Anzahl der untergeordneten Variablen durch die Anzahl der übergeordneten Variablen teilbar ist (Modulu = 0).
Besipiel:
wb <- loadWorkbook("test.xlsx")
create_nested_header_style(wb = wb,
sheet = "Test",
nesting = "even",
vars_level1 = c("SVar1","SVar2","SVar3"),
vars_level2 = c("Var1","Var2","Var3","Var4","Var5", "Var6"))
# Workbook als xlsx speichern
saveWorkbook(wb, "test_02.xlsx", overwrite = TRUE)
Es ist auch möglich eine benutzerdefinierte Verschachtelung einzufügen. Dazu muss beim nesting
Paramteter ein numerischer Vektor mit der selben Länge wie vars_level1
angegeben werden. Jeder Wert in diesem Vektor gibt an wie viele Variablen der übergeorndeten Variable an dieser Stelle untergeordnet werden sollen.
Ein Beispiel: es ist gegeben
vars_level1 = c("SVar1","SVar2","SVar3")
vars_level2 = c("Var1","Var2","Var3","Var4","Var5", "Var6")
und
nesting = c(1,3,2)
Das bedeutet, dass
SVar1
genau eine untergeordnte Variable besitzt (Var1
),SVar2
genau 3 untergeordnte Variablen besitzt (Var2
,Var3
undVar4
) undSVar3
genau 2 untergeordnte Variablen besitzt (Var5
undVar6
)
wb <- loadWorkbook("test.xlsx")
create_nested_header_style(wb = wb,
sheet = "Test",
nesting = c(1,3,2),
vars_level1 = c("SVar1","SVar2","SVar3"),
vars_level2 = c("","Var2","Var3","Var4","Var5", "Var6"))
saveWorkbook(wb, "test_03.xlsx", overwrite = TRUE)
Durch Kombination von mehreren create_nested_header_style
Funktionen können auch mehrfach verschachtelte Variablennamen erstellt werden.
wb <- createWorkbook()
sheet <- "TEST"
addWorksheet(wb,sheet)
#header erstellen
create_header_style(wb, sheet, ncol = ncol(data), text = "Wohnbevölkerung der Gemeinden nach Nationalität und Geschlecht" )
#subheader erstellen
create_subheader_style(wb,
sheet,
ncol = ncol(data),
text = "Kanton Thurgau, 31.12.2026, ständige Wohnbevölkerung[1] in Personen und Anteile in %",
startRow = 2)
# 1. nested header erstellen
create_nested_header_style(
wb,
sheet,
vars_level1 = c(
"BFS-Nr. [2]",
"Gemeinde",
"Total",
"Nach Nationalität",
"Nach Geschlecht",
"Date"
),
vars_level2 = c("", "", "", "Schweiz", "Ausland", "", "Mann", "Frau", "", ""),
startRow = 3,
nesting = c(1, 1, 1, 3, 3, 1)
)
# 2. nested header erstellen
create_nested_header_style(
wb,
sheet,
vars_level1 = c("", "", "", "Schweiz", "Ausland", "Mann", "Frau", ""),
vars_level2 = c("", "", "", "", "absolut", "in %", "", "absolut", "in%", ""),
startRow = 4,
nesting = c(1, 1, 1, 1, 2, 1, 2, 1)
)
saveWorkbook(wb, "test_04.xlsx", overwrite = TRUE)
Die tatsächlichen Daten müssen vor dem Einfügen bereits in der richtigen Reihenfolge sein, was die Spalten angeht. Die im dataframe gespeicherten Variablennamen werden NICHT ins Excel File geschrieben, sondern müssen wie oben beschrieben manuell eingefügt werden.
Mit der create_data_style
kann ein dataframe mit den gewüschten Spezifikationen ins Excel File geschrieben werden.
Dafür muss dieses Mal explizit eine startRow
angegeben werden. Ausserdem kann der Parameter gemeinde_format
auf TRUE
gesetzt werden, damit die Tabelle im Stil der bisherigen Tabellen mit Gemeindebezug formatiert wird (Bezirke und Gesamtkanton fett). Ist eine Jahresvariable in den Daten enthalten, muss deren Spaltenindex für den Parameter year
angegeben, um die korrekte Formatierung dieser Variable zu erreichen.
Beispiel:
#datensatz erstellen
data <- gemeinde
data$total <- sample(1000:200000, size = nrow(data))
data$nat_ch <- sample(1000:100000, size = nrow(data))
data$nat_ausl <- sample(1000:100000, size = nrow(data))
data$nat_ausl_perc <- runif(nrow(data))*100
data$sex_male <- sample(1000:100000, size = nrow(data))
data$sex_fem <- sample(1000:100000, size = nrow(data))
data$sex_fem_perc <-runif(nrow(data))*100
data$date <- seq.Date(Sys.Date(), to = Sys.Date()+nrow(data)-1,by="day")
# Tabelle mit mehrfach verschachteltem Header laden
wb <- loadWorkbook("test_04.xlsx")
# Daten einfügen
create_data_style(wb,sheet,startRow = 6, gemeinde = TRUE, data = data)
saveWorkbook(wb, "test_04.xlsx", overwrite = T)
Tabellen mit einfachen oder einfach verschachtelten Variablennamen können mit der create_table_style
Funktion erstellt werden. Die Funktion beinhaltet alle oben beschriebenen Funktionen.
Beispiel:
wb <- createWorkbook()
addWorksheet(wb, "TEST")
data <- data.frame(v1 = LETTERS,
v2 = letters,
v3 = 1:26,
v4 = runif(26)*100,
v5 = seq.Date(Sys.Date(), to = Sys.Date()+26-1,by="day"),
v6 = 1996:2021)
create_table_style (
wb = wb,
sheet = "TEST",
header = "Das ist ein Test[1]",
subheader = "Test mit Wrapper[2] Funktion",
varnames = c("", "Var2", "Var3", "Var4", "Var5", "Var6"),
var_categories = c("SVar1", "SVar2", "SVar3"),
data = data,
datenquelle = "BEVNAT Kanton Thurgau",
footnotes = c("1 Test der Funktion", "2 alle Funktionen zusammengefasst"),
gemeinde_format = FALSE,
nesting = c(1, 3, 2),
year = 6
)
saveWorkbook(wb, "test_05.xlsx", overwrite = T)
Um die Kopfzeile mit Logo und Name des Amtes einzufügen, kann die save_tg_workbook()
verwendet werden.
Diese Funktion führt ein VBA Makro in der Excel aus. Dafür wird die Excel Datei kurz geöffnet und im Anschluss daran wieder geschlossen.
wb <- loadWorkbook("test_05.xlsx")
save_tg_workbook(wb,
filename = "test_06.xlsx",
tg_header = TRUE,
overwrite = TRUE)
Manchmal müssen Daten in eine existierende Tabelle eingefügt werden. Mit der insert_data_row
Funktion können Datenzeilen an einer beliebigen Stelle im Tabellenblatt eingefügt werden. Sämtliche Styles der darüberliegenden Zeile werden auf die neuen Zeilen übertragen.
save_tg_workbook(wb, "test.xlsx", overwrite = T, tg_header =F)
wb <- loadWorkbook("test_11.xlsx")
df <- data.frame(
x1 = "20XX",
x2 = "Bezirk Testhausen",
x3 = 10000,
x4 = 10000,
x5 = 10000,
x6 = 50.0,
x7 = 10000,
x8 = 10000,
x9 = 50
)
insert_data_row(wb,
sheet = "2022",
insertRow = 7,
data = df,
dataStartRow = 6)
save_tg_workbook(wb, "test_13.xlsx", overwrite = T, tg_header =F)