#!/bin/bash # XLSX => CSV if [ -r "${1}" ] ; then XLSX_DATEI="${1}" #XLSX_VERZ="$(dirname "${XLSX_DATEI}")" XLSX_NAME="$(basename "${XLSX_DATEI}")" else echo "Die XLSX-Datei '${1}' kann nicht gelesen werden." exit 1 fi ALLE_SHEET_NAMEN="$(runxlrd -e'utf-8' -f0 ov ${XLSX_DATEI} | grep -E '^sheet [0-9]' | sed 's/://')" ALLE_SHEET_NR="$(echo "${ALLE_SHEET_NAMEN}" | awk '{print $2}')" for SHEET_NR in ${ALLE_SHEET_NR} do SHEET_NM="$(echo "${ALLE_SHEET_NAMEN}" | grep -E "^sheet ${SHEET_NR} " | awk -F"'" '{print $2}')" echo echo "...sheet ${SHEET_NR} '${SHEET_NM}' ist in Bearbeitung..." runxlrd -e'utf-8' -f0 -s${SHEET_NR} show ${XLSX_DATEI} | awk '/^cell /{gsub(":"," ");gsub(" u"," ");print $2,$5}' | sed -e 's/^[A-Z]*/& /' -e "s/'//g" | while read SPALTE ZEILE INHALT do if [ "${_Z}" = 0 ] ; then _Z="${ZEILE}" elif [ "${_Z}" != "${ZEILE}" ] ; then _Z="${ZEILE}" echo fi echo -n "${INHALT};" done > "${SHEET_NR}.${SHEET_NM}.${XLSX_NAME}".csv echo "fertig: ${SHEET_NR}.${SHEET_NM}.${XLSX_NAME}.csv" done