
Hallo, mein Name ist Alexander und ich bin ein Entwickler von Android-Anwendungen. Einmal kam ich zu einem Projekt mit 11 Schnittstellensprachen und mehr als 600 Zeilen. Auf Kundenseite gab es keine Programmierer, daher haben sie das Ganze in einer Excel-Tabelle gespeichert. Wenn sie etwas daran geändert haben, haben sie uns diese Tabelle mit den Worten "Wir haben Zellen mit Änderungen in Gelb hervorgehoben, aktualisieren Android- bzw. iOS-Anwendungen" gesendet. Danach haben zwei Entwickler einige Stunden verloren und Änderungen manuell vorgenommen. Und dann stellte sich heraus, dass jemand irgendwo etwas vergessen, einen Fehler gemacht oder nicht beendet hatte, es gab Diskrepanzen zwischen den Plattformen, der Kunde war nervös, die Entwickler flippten aus. Diese Situation passte nicht zu mir. Ich suchte nach Möglichkeiten, um das Entladen von Zeilen aus Excel zu automatisieren. Das Ergebnis war großartiger VBScript-Code, den wir immer noch gerne verwenden. Jetzt werde ich Ihnen dieses Skript vorstellen. Unter dem Schnitt eine bestimmte Anzahl von Bildern und Skriptcode.
Schauen Sie sich also zuerst die Tabelle selbst an und bewerten Sie das Ausmaß des Problems:

Da ist sie, Schönheit! Wie wir sehen können, gibt es mehrere Dienstspalten, globale Zeilennamen und deren Übersetzungen. Darüber hinaus werden einige Zeilen nur in Englisch und Deutsch dargestellt, da der Kunde in Version 2.0 der Anwendung beschlossen hat, vorerst nur zwei Sprachen zu belassen und den Rest später hinzuzufügen. Oder vielleicht hat er Mitleid mit dem Geld für Übersetzer. Aber das ist seine Sache, aber wir müssen das berücksichtigen. Das heißt, das Skript sollte leere Zellen überspringen und keine leeren Zeilen für eine solche Sprache erstellen. Außerdem müssen Formatierungszeichen wie "% s" in Zelle F5 berücksichtigt werden. Sie müssen damit arbeiten, denn was Android in iOS kann, sollte durch "% @" ersetzt werden. Ich erzähle Ihnen von den anderen Nuancen auf dem Weg.
Um nicht zu schmachten und die Katze nicht am Schwanz zu ziehen, werde ich jetzt das gesamte Skript veröffentlichen:
VBScript in seiner ganzen Pracht Jetzt ist die Zeit gekommen, die Nuancen durchzugehen.
Unsere Anwendung erfordert mehrere Benutzerberechtigungen. Unter iOS werden die Zeilen zum Anfordern dieser Berechtigungen nicht wie gewohnt in Localizable.strings, sondern in InfoPlist.strings gespeichert. Daher definieren wir ganz am Anfang unseres Skripts die Namen der Zeilen, die an InfoPlist gesendet werden:
Const NsCameraUsageDescription = "NsCameraUsageDescription" Const NSLocationAlwaysAndWhenInUseUsageDescription = "NSLocationAlwaysAndWhenInUseUsageDescription" Const NSLocationAlwaysUsageDescription = "NSLocationAlwaysUsageDescription" Const NSLocationWhenInUseUsageDescription = "NSLocationWhenInUseUsageDescription" Const NSPhotoLibraryAddUsageDescription = "NSPhotoLibraryAddUsageDescription" Const NSPhotoLibraryUsageDescription = "NSPhotoLibraryUsageDescription"
Das nächste bemerkenswerte Fragment sind die Namen der Ordner, in denen alle Dateien gespeichert werden. Unter iOS werden alle Ordner mit einer aus zwei Buchstaben bestehenden Sprachbezeichnung benannt, z. B. "en.lproj", "de.lproj". Alles außer Russisch, hier ist "ru-RU". In der Tabelle selbst sind die Spalten in Android-Notation. Deshalb parsim:
If objFSOandroid = "values" Then objFSOios = "en" & ".lproj" ElseIf objFSOandroid = "values-ru" Then objFSOios = "ru-RU" & ".lproj" Else objFSOios = Right(objFSOandroid,2) & ".lproj" End If
Und die letzte Aufgabe, Zeichen zu ersetzen und zu entkommen. Für iOS werden wir, wie gesagt, % s in % @ ändern und Anführungszeichen und Apostrophe umgehen:
iOSString = Replace(oTranslations.Sheets(1).Cells(nCounter, LanguageColumnIndex).Value, "%s", "%@") iOSString = Replace(iOSString, "'", "\'") iOSString = Replace(iOSString, chr(34), "\" & chr(34))
Für Android entkommen wir auch Apostrophen und ersetzen das sogenannte Zeilenvorschubzeichen ( Chr (10) ) durch das übliche neue Zeilenzeichen \ n . Und dafür gibt es einen Grund. In einer der Zellen haben wir einen ziemlich großen Text, der vom Kunden in MS Word zusammengestellt und mit technischer Kopie in die Excel-Zelle eingefügt wurde. Und obwohl wir durch Ausprobieren nicht den richtigen Ersatz gefunden haben, wurde der Text in iOS in den erforderlichen Absätzen angezeigt und in Android zu einem Absatz zusammengeführt.
Fazit
Wie Sie wahrscheinlich bereits vermutet haben, wird das Skript in der Windows-Befehlszeile ausgeführt. Der Einfachheit halber platzieren wir das Skript und die XLSX-Datei in einem Ordner, gehen dort zur Befehlszeile und schreiben den Befehl:
cscript ConvertExcelToTXTandXML.vbs <filename>.xlsx
Drücken Sie anschließend die Eingabetaste und genießen Sie eine schöne Visualisierung des Skripts in Form von Punkten, die im Befehlsfenster für jeden Schritt des Programms angezeigt werden. Das Ergebnis der titanischen Arbeit unseres Skripts sind zwei Ordner, "ios" und "res", deren Inhalt noch in das iOS- bzw. Android-Projekt kopiert werden muss.
Das ist alles. Ich hoffe, dass dieses Skript für jemanden nützlich ist und viel Zeit spart.