[ERLEDIGT/Skript] Wie finden: Bezüge auf andere Arbeitsmappen

Fehlerberichte, Hilfe und Anregungen zu PlanMaker 2018 für Linux

Moderator: SoftMaker Team

Antworten
Benutzeravatar
Michael Uplawski
Beiträge: 873
Registriert: 09.06.2010 14:27:54
Wohnort: Canton Magny, Normandie

[ERLEDIGT/Skript] Wie finden: Bezüge auf andere Arbeitsmappen

Beitrag von Michael Uplawski » 02.03.2018 11:23:12

Moin.

Beim Öffnen einer Arbeitsmappe wird gefragt, ob ich Bezüge auf andere Arbeitsmappen aktualisieren möchte.

1) Wie kann ich die betroffenen Zellen finden, da solche Bezüge unerwünscht sind. Leider enthält die Arbeitsmappe viele Blätter.
2) Wie kann ich externe Bezüge im XML-Code der Datei ausfindig machen? Das Bereinigen wäre dann automatisierbar.

Herzlichen Dank im Voraus.
Zuletzt geändert von Michael Uplawski am 03.03.2018 09:21:53, insgesamt 1-mal geändert.
Mein problemloses Linux-System: Debian Buster/Sid mit OpenBox/Rox Desktop.
People should go where they are not supposed to go, say what they are not supposed to say and stay, when they are told to leave.
Bild(Howard Zinn)

Benutzeravatar
Michael Uplawski
Beiträge: 873
Registriert: 09.06.2010 14:27:54
Wohnort: Canton Magny, Normandie

Re: Wie finden: Bezüge auf andere Arbeitsmappen

Beitrag von Michael Uplawski » 03.03.2018 09:21:09

Also:

Externe Bezüge sind im Unterverzeichnis "xl/externalLinks" definiert. Statt die XML-Dateien darin zu bearbeiten, genügt es, das gesamte Verzeichnis zu löschen. Damit werden alle externen Bezüge (zu anderen Arbeitsmappen) entfernt.

Das folgende Skript erledigt das für die Datei, die als erstes Argument geliefert wird. Ohne Argument oder nur mit ‚-h’ gestartet, gibt das Programm die Usage-Meldung aus. Bisher nur in Englisch, weil sowieso niemand danach fragt.

Edit: Das Skript funktioniert, wenn das file-Kommando existiert und OOXML dem gültigen Magic-File bekannt ist.

Code: Alles auswählen

#!/bin/bash
# ©2018-2018 Michael Uplawski <michael.uplawski@uplawski.eu>
#
# This script is distributed without any warranty, none of MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE, nor other.  Use, copy, modify this script
# as you please but at your own risk.
#
# PSE keep intact my copyright notice.


SCRIPT=`basename "$0"`

USAGE="\nUSAGE: $SCRIPT spreadsheet.[xlsx, pmdx] [-o]\n\
\n\tWill create a copy of the said spreadsheet-file with all\n\
\treferences to external files removed.\n\
\tIf the option -o is given as last argument, the original\n\
\tfile is overwritten, instead, after confirmation by the user."

if [ $# -gt 0 ]
then
  if [ -e "$1" ]
  then 
    OFILE="$1"
    if [ `file "$OFILE" | grep "OOXML" | wc -c` -gt 0 ]
    then
      FNAME=`basename "$OFILE"`
      DNAME=`dirname "$OFILE"`
      if [ "$2" == '-o' ]
      then 
        NNAME="$FNAME"
      else
        NNAME=new_"$FNAME"
      fi
      if [ -e "$DNAME/$NNAME" ] 
      then
        echo -e "\n\tATTN! Overwriting existing version of\n\t$DNAME/$NNAME?\n\
          \tProceed (y/N)?"
        read resp
        if [ "$resp" != 'Y' -a "$resp" != 'y' ]
        then
          echo -e "\n\tOkay, doing nothing. Bye"
          exit
        fi
      fi

      #---------------------
      echo -e "\topening $FNAME"
      unzip $FNAME 1>/dev/null
      echo -e "\tremoving external links"
      rm -rf xl/externalLinks
      echo -e "\tcreating new file"
      zip -9r "$NNAME" \[Content_Types\].xml docProps _rels xl 1>/dev/null
      mv -f "$NNAME" "$DNAME" 2>/dev/null

      if [ -e "$DNAME/$NNAME" ] 
      then
        echo -e "\n\tDONE! A new file $NNAME has been written to $DNAME\n"
      else
        echo -e "\tATTN! Something went wrong. The file has not been copied."
      fi
      #----------------------
    else
      echo -e "\n\tERROR! $OFILE is not in Microsoft® OOXML format!"
      echo -e "\t(File-extensions associated with this file-format can be xlsx or pmdx)"
      echo -e "\t$SCRIPT can not work with this file.\n"
    fi
  elif [ "$1" == "-h" -o "$1" == "--help" ]
  then
    echo -e $USAGE
  else
    echo -e "\n\tERROR: $1 does not exist\n\t(or is not a file)\n"
  fi
else
  echo -e "ERROR! Arguments missing."
  echo -e $USAGE
fi
Edit: Obsoletes $TMPDIR etc. aus dem skript entfernt.
Mein problemloses Linux-System: Debian Buster/Sid mit OpenBox/Rox Desktop.
People should go where they are not supposed to go, say what they are not supposed to say and stay, when they are told to leave.
Bild(Howard Zinn)

Antworten

Zurück zu „PlanMaker 2018 für Linux“