Add archive gallery.

This commit is contained in:
2026-08-08 14:43:36 +02:00
parent 487cc8e2dd
commit a53578ec70
55 changed files with 419 additions and 22 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/docker-existing-docker-compose
{
"name": "Förderverein Niere e.V.",
"name": "xltoolbox.net",
"dockerComposeFile": [
"../docker-compose.yml",
"docker-compose.yml"
View File
+5 -11
View File
@@ -1,13 +1,7 @@
# hugo-template
# xltoolbox.net
**Template for websites powered by Hugo.**
**Source code of xltoolbox.net, a website powered by Hugo.**
This uses YAML configuration files stored in `config/`.
Customize the template as follows:
- Edit `config/_default.hugo.yaml`.
- Change the project name in:
- `.devcontainer/devcontainer.json`
- `docker-compose.yml`
- Change the module name in `go.mod` to something else, e.g. the project's public repository URL.
This is the home of the xltoolbox.net site, which replaces the
ancient site of this Excel add-in that is no longer actively
maintained in 2026.
+14
View File
@@ -0,0 +1,14 @@
$primary: #005adb;
$secondary: #ef6000;
$success: #198754;
$danger: #dc3545;
$warning: #ffc107;
$info: #00a194;
$light: #f9f9f9;
$dark: #535455;
$link-decoration: none;
$link-color: $secondary;
@import "hugo_bootstrap_theme";
@import "hugo_cookie_consent";
+3 -2
View File
@@ -1,3 +1,4 @@
baseURL: https://example.org/
baseURL: https://xltoolbox.net
locale: en-us
title: My New Hugo Project
title: Daniel's XL Toolbox
+7
View File
@@ -0,0 +1,7 @@
main:
- name: Source Code
url: https://github.com/bovender/XLToolbox
weight: 1
- name: Download
url: https://github.com/bovender/XLToolbox/releases/download/v7.3.4/XLToolbox-7.3.4.exe
weight: 2
+4
View File
@@ -0,0 +1,4 @@
imports:
- path: git.bovender.de/daniel/hugo_bootstrap_theme
- path: git.bovender.de/daniel/hugo_cookie_consent
+9
View File
@@ -0,0 +1,9 @@
author: Daniel Kraus (bovender)
hugo_cookie_consent:
privacy_policy_url: /privacy
enable_tracking: true
matomo_host: https://matomo.bovender.de
matomo_site_id: 3
+2
View File
@@ -0,0 +1,2 @@
baseURL: http://localhost:1313/
+2
View File
@@ -0,0 +1,2 @@
workspace: hugo.work
+69
View File
@@ -0,0 +1,69 @@
---
title: Daniel's XL Toolbox
date: 2026-08-08T11:47:23+0200
draft: false
---
{{< figure src="banner-2013.png" alt="Daniel's XL Toolbox" class="text-center mb-5" >}}
This is the home of **Daniel's XL Toolbox**, an add-in for a popular
spreadsheet program that is aimed at scientists and other people who
work with data and visualizations. The add-in has been
[downloaded well over 200,000 times][stats], and it has been cited
several hundred times in the life science literature.
This add-in was actively developed between 2008 and 2018, but is no longer
actively maintained. It is still useful though and does work with even with
current, up-to-date versions of the spreadsheet software.
However, because this is no longer an active project, I have decided to retire
the old homepage which had not been updated for several years.
You can still [download][] and install the add-in -- in fact, I still use it
whenever I use spreadsheet software. Which, admittedly, does not happen that
often anymore nowadays. But everybody should use the tool that serves them
best to accomplish a task.
## What this add-in can do
This add-in provides a number of functions that assist with data analysis
and visualization and with repetitive everyday tasks.
**Data analysis:** Compute 1-way and 1-way ANOVAs, perform correlation and
regression analyses, build spreadsheet formulas automatically, allocate
subjects to treatment groups ("randomization"), produce complex histograms,
and transpose data such as multiwell plate reader data.
**Data visualization:** Produce high-quality graphic files from your scientific
charts, export charts in batches, add error bars to charts, assist with uniform
chart design, add watermarks to your charts, add multiple new data series at
once, change and normalize chart sizes, copy a chart's format to another,
scale the text in a chart, point a chart to a different source data range,
change the order of data series in a chart, and spread (jitter) overlapping
data points.
**Productivity:** Automatically save a time-stamped backup file whenever
you save your spreadsheet, manage multiple worksheets in your file, use
keyboard shortcuts for extra productivity, jump to a cell or range of
cells given an address that is written in plain text in another cell,
copy a print page setup, and make complex selections of cells.
## What to do if you want to obtain publication-grade figures
If you need high-quality graphs for a publication, you can of course still use this add-on.
There are modern alternatives, ranging from paid software to software that you can use
free of charge.
I have become very fond of [R][], [ggplot2][], and the entire [Tidyverse][] ecossystem.
These tools allow me to analyze the data efficiently and obtain extactly the results
that I want, including vector-based figures, rather than raster images. It is not easy
to learn, but it is worth it!
## Archive
Here is a little archive of the old website: [Entrance to the museum]({{< relref "archive" >}}).
[download]: https://github.com/bovender/XLToolbox/releases/download/v7.3.4/XLToolbox-7.3.4.exe
[ggplot2]: https://ggplot2.tidyverse.org
[R]: https://r-project.org
[stats]: https://tooomm.github.io/github-release-stats/?username=bovender&repository=xltoolbox
[Tidyverse]: https://tidyverse.org
Binary file not shown.

After

Width:  |  Height:  |  Size: 354 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 381 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 550 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 781 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 506 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 785 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 587 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 855 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 608 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 414 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 404 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 323 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 235 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 339 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 352 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 242 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 253 KiB

+112
View File
@@ -0,0 +1,112 @@
---
title: Archive
date: 2026-08-08T12:32:24+0200
draft: false
layout: gallery
resources:
- src: "01-home.png"
params:
caption: "Home page"
- src: "02-about.png"
params:
caption: "About page"
- src: "03-support.png"
params:
caption: "Support information (obsolete)"
- src: "04-citations.png"
params:
caption: "List of citations"
- src: "05-donations.png"
params:
caption: "Donation page (obsolete)"
- src: "06-citations.png"
params:
caption: "More citations?"
- src: "11-anova-1way.png"
params:
caption: "1-way ANOVA"
- src: "12-anova-2way.png"
params:
caption: "2-way ANOVA"
- src: "13-correlation.png"
params:
caption: "Correlation"
- src: "14-regression.png"
params:
caption: "Linear regression"
- src: "15-formula-builder.png"
params:
caption: "Formula builder"
- src: "16-group-allocation.png"
params:
caption: "Group allocation (randomization)"
- src: "17-multi-histogram.png"
params:
caption: "Multi-histogram"
- src: "18-transpose-wizard.png"
params:
caption: "Transpose wizard"
- src: "21-graph-export.png"
params:
caption: "Chart export"
- src: "22-batch-export.png"
params:
caption: "Batch chart export"
- src: "23-error-bars.png"
params:
caption: "Error bars"
- src: "24-format-chart.png"
params:
caption: "Format charts"
- src: "25-watermarks.png"
params:
caption: "Watermarks for charts"
- src: "26-add-chart-series.png"
params:
caption: "Add new data series to charts"
- src: "27-annotate-charts.png"
params:
caption: "Annotate charts"
- src: "28-change-chart-size.png"
params:
caption: "Change chart size"
- src: "29-copy-chart-format.png"
params:
caption: "Copy chart format"
- src: "30-chart-font-autoscale.png"
params:
caption: "Automatically scale chart text"
- src: "31-move-extend-chart-range.png"
params:
caption: "Move or extend chart data ranges"
- src: "32-point-chart-to-data.png"
params:
caption: "Point chart to data range"
- src: "33-series-order.png"
params:
caption: "Change chart series order"
- src: "34-spread-scatter.png"
params:
caption: "Spread the points of a scatter plot (jitter)"
- src: "41-automatic-backups.png"
params:
caption: "Automatic versioned backups"
- src: "42-worksheet-management.png"
params:
caption: "Worksheet management"
- src: "43-keyboard-shortcuts.png"
params:
caption: "Keyboard shortcuts"
- src: "44-jump-to-target.png"
params:
caption: "Jump to a target address"
- src: "45-copy-page-setup.png"
params:
caption: "Copy page setup"
- src: "46-selection-assistant.png"
params:
caption: "Selection wizard/assistant"
---
Welcome to the museum. Below are screenshots of the old XL Toolbox website,
preserved for posterity.
Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

+22
View File
@@ -0,0 +1,22 @@
---
title: Impressum
date: 2026-08-08T12:47:32+0200
draft: false
---
Daniel Kraus
c/o Klinik für Nephrologie
Im Neuenheimer Feld 162
69120 Heidelberg
Tel. (0 61 07) 7 56 88 40
E-Mail: daniel at xltoolbox.net
Zum Schutz meiner Privatsphäre und er meiner Familie
ist meine Privatanschrift hier nicht veröffentlicht.
Die obenstehende Adresse ist die meines Arbeitgebers,
der aber weder diese Website noch das Softwareprojekt
beauftragt hat noch sonst in irgendeiner Weise etwas
hiermit zu tun hat.
Ich bitte, von Telefonanrufen abzusehen.
+3 -3
View File
@@ -1,4 +1,4 @@
name: Website powered by Hugo
name: xltoolbox.net
services:
build:
image: ghcr.io/gohugoio/hugo:latest
@@ -13,8 +13,8 @@ services:
command: server --bind 0.0.0.0 -M --buildDrafts --buildFuture
volumes:
- ".:/project"
- "../../../../local/Code/hugo_bootstrap_theme:/hugo_bootstrap_theme"
- "../../../../local/Code/hugo_cookie_consent:/hugo_cookie_consent"
- "../../hugo_bootstrap_theme:/hugo_bootstrap_theme"
- "../../hugo_cookie_consent:/hugo_cookie_consent"
ports:
- "127.0.0.1:1313:1313"
user: 1000:1000
+3 -3
View File
@@ -1,8 +1,8 @@
module website_powered_by_hugo
module git.bovender.de/daniel/xltoolbox.net.git
go 1.22
go 1.26.3
require (
git.bovender.de/daniel/hugo_bootstrap_theme v0.0.1 // indirect
git.bovender.de/daniel/hugo_bootstrap_theme v0.0.8 // indirect
git.bovender.de/daniel/hugo_cookie_consent v0.0.6 // indirect
)
+4
View File
@@ -0,0 +1,4 @@
git.bovender.de/daniel/hugo_bootstrap_theme v0.0.8 h1:20U5sQ6YHbG6YP/+5+WcBkf8oB/gD/5bAyb1eQ8ONaM=
git.bovender.de/daniel/hugo_bootstrap_theme v0.0.8/go.mod h1:iLp7PY+cH8Cszxxx6XDGVS9kPdkH5qKdoUhIDQMpS+g=
git.bovender.de/daniel/hugo_cookie_consent v0.0.6 h1:q3AEinytbYYFIZ3hHIcmU+T+imEGBMQeaVXJIlhz8Po=
git.bovender.de/daniel/hugo_cookie_consent v0.0.6/go.mod h1:XTLK60q7Zlhjtw84Toe0l8C1tgPaVKcWRluceaig0o0=
+3 -2
View File
@@ -1,5 +1,6 @@
go 1.22
go 1.26.3
use .
use ../hugo_cookie_consent
use ../hugo_bootstrap_theme
use ../hugo_cookie_consent
+34
View File
@@ -0,0 +1,34 @@
{{ define "main" }}
<div class="container">
<div class="row">
<div class="col mt-5 mb-5">
{{ with resources.Get "svg/404.svg" }}
{{ .Content | safeHTML }}
{{ else }}
<h1 class="display-1 mx-auto text-center">
404
</h1>
{{ end }}
</div>
</div>
<div class="row">
<div class="col">
<h4>
Page not found
</h4>
<p>
The page you were trying to navigate to was not found on this
server.
</p>
<p class="fw-bold">
Please not that the old XLToolbox.net site
has been retired. Navigate to the homepage to read more about this.
</p>
<p>
<a href="{{ .Site.BaseURL }}">Back to the home page.</a>
</p>
</div>
</div>
</div>
{{ end }}
+63
View File
@@ -0,0 +1,63 @@
{{ define "main" }}
<article class="container py-5">
<div class="row justify-content-center">
<div class="col">
<h1 class="display-5 fw-bold mb-4">{{ .Title }}</h1>
<div class="content-body mb-4">
{{ .Content }}
</div>
<div class="row row-cols-2 row-cols-md-3 row-cols-lg-4 g-4">
{{ range $index, $image := .Resources.ByType "image" }}
{{ $thumb := $image.Fill "400x300 Center" }}
{{ $caption := $image.Params.caption }}
{{ $modalID := printf "gallery-image-%d" $index }}
<div class="col">
<a href="#" class="text-decoration-none" role="button"
data-bs-toggle="modal" data-bs-target="#{{ $modalID }}">
<div class="card h-100">
<img src="{{ $thumb.RelPermalink }}"
width="{{ $thumb.Width }}" height="{{ $thumb.Height }}"
class="card-img-top" loading="lazy"
alt="{{ if $caption }}{{ $caption }}{{ else }}{{ $image.Name }}{{ end }}">
{{ if $caption }}
<div class="card-body py-2">
<p class="card-text small text-center mb-0">{{ $caption }}</p>
</div>
{{ end }}
</div>
</a>
</div>
<div class="modal fade" id="{{ $modalID }}" tabindex="-1"
aria-labelledby="{{ $modalID }}-label" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered modal-lg">
<div class="modal-content">
{{ if $caption }}
<div class="modal-header">
<h5 class="modal-title" id="{{ $modalID }}-label">{{ $caption }}</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
{{ else }}
<div class="modal-header border-0 pb-0">
<button type="button" class="btn-close ms-auto" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
{{ end }}
<div class="modal-body text-center pt-0">
<img src="{{ $image.RelPermalink }}" class="img-fluid"
alt="{{ if $caption }}{{ $caption }}{{ else }}{{ $image.Name }}{{ end }}">
</div>
<div class="modal-footer justify-content-center">
<a href="{{ $image.RelPermalink }}" target="_blank" rel="noopener" class="small">
View full size &#8599;
</a>
</div>
</div>
</div>
</div>
{{ end }}
</div>
</div>
</div>
</article>
{{ end }}
+59
View File
@@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="4.7748981mm"
height="6.408699mm"
viewBox="0 0 4.7748981 6.408699"
version="1.1"
id="svg1"
inkscape:version="1.4.4 (dcaf3e7d9e, 2026-05-05)"
sodipodi:docname="favicon.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
inkscape:zoom="34.096895"
inkscape:cx="-0.029328184"
inkscape:cy="13.960216"
inkscape:window-width="3840"
inkscape:window-height="2080"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs1" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-31.374711,-61.619139)">
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;line-height:0.8;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;letter-spacing:0px;writing-mode:lr-tb;direction:ltr;text-anchor:middle;opacity:1;fill:#004a6f;stroke:none;stroke-width:1;stroke-linecap:square;paint-order:markers stroke fill"
x="33.834507"
y="64.641174"
id="text1"><tspan
sodipodi:role="line"
id="tspan1"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;line-height:0.8;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#004a6f;stroke:none;stroke-width:1"
x="33.834507"
y="64.641174">XL</tspan><tspan
sodipodi:role="line"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;line-height:0.8;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#004a6f;stroke:none;stroke-width:1"
x="33.834507"
y="68.02784"
id="tspan2">TB</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB