Hi everyone,
I wanted to share a small open source project I've been working on that some of you might find useful:
LimeSurvey Excel Builder.
The idea: Design your entire LimeSurvey questionnaire in
Excel (or LibreOffice Calc), then convert it to the TSV import format with an R script. You can also skip the R installation entirely and use the
free web app: just upload your .xlsx and download the ready to import .txt file.
🔗 GitHub: [url]
github.com/stf-lab/limesurvey-excel-builder
[/url]
🌐 Web app (no install needed): [url]
limesurvey-excel-builder.shinypal.com
[/url]
Why I built this
I work in international health and we regularly design large
multilingual surveys (think questionnaires with 100+ question groups, 4+ languages, lots of skip logic). Doing all of that in the LimeSurvey web interface is slow, and collaborating with colleagues on survey design and tracking changes, reviewing questions, doing batch edits is painful through the UI alone.
With this tool, you get:
Rich text formatting from Excel: bold, italic, underline,
font color on any word or phrase in a cell, and it
all carries over to the survey as proper HTML. Partial formatting within a cell works too (e.g. only one
word bolded).
Multi language via columns, not duplicated rows: just add
text_fr,
text_es,
text_ro, etc. columns next to your base language. The script
auto detects languages, generates all the TSV rows LimeSurvey expects, and handles
fallback for untranslated cells.
Familiar spreadsheet workflow: find/replace, copy paste question groups between surveys, reorder with drag and drop, use filters, work offline.
Version control: the .xlsx plays nicely with
Git for tracking survey revisions across team members.
Validation: the R script checks for duplicate codes, invalid class values, underscores in question codes, and reports what it found before export.
What's in the repo
An
Excel template (
limesurvey_survey_builder.xlsx) with color coded rows, dropdown validation,
41 advanced attribute columns, 4 reference sheets (question types, relevance/validation, survey settings, instructions), and a full example survey covering
30+ question types.
An
R script (
xlsx_to_limesurvey_tsv.R) that reads the Excel file and produces a .txt file you can
import directly into LimeSurvey (Create Survey → Import).
The template uses a simple row based structure:
S (survey settings),
SL (survey language text),
G (groups),
Q (questions),
SQ (subquestions),
A (answers). Row order matters, but the color coding and reference sheets make it pretty intuitive.
The example survey
The included example has
6 question groups, 41 questions, and demonstrates: single/multiple choice, arrays, numeric input, text, date, file upload, ranking, dual scale, equations, boilerplate text,
skip logic,
regex validation,
calculated fields (e.g. BMI from height and weight),
array filtering, and a tailored closing message using expression logic: all in
English, French, Romanian, and Spanish.
How to use it
Option A: Web app: Go to the web app link above, upload your .xlsx, download the .txt, import into LimeSurvey. Done.
Option B: R script: Open the Excel template, design your survey, run the R script in RStudio. It auto installs the needed packages (
readxl,
tidyxl,
xml2) on first run.
Looking for feedback
This has been working well for my own projects, but I'd love to hear from others:
- Are there question types or features you'd want better covered in the template?
- Any edge cases with the import that I should handle?
- Would additional language examples be helpful?
Contributions are welcome: it's
MIT licensed. Feel free to open issues or PRs on GitHub.
Hope this is useful to some of you!