Excel-File lesen/schreiben

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Excel-File lesen/schreiben

    Hallo Leute,
    nach 3 Jahren der Abwesenheit wollte ich mal wieder was programmieren:)

    Nun gut und zwar folgendes Szenario:

    Ich habe ein Excel-File mit einer Tabelle. Diese Tabelle (Oder ein Teil dieser) ist in einem Word-Dokument enthalten.
    Ich wollte ein Tool bauen, in welchem man "Sync-Aufträge" aufgeben kann, sprich, man sucht sich eine Zelle aus der Excel-File raus und eine Zelle aus der Excel-Tabelle aus dem Word-Dokument und kann dann aussuchen von welcher File jeweils der Wert in die jeweilige andere Datei übertragen werden soll/kann.

    Da Objective-C (Ich denke ich werde da treu bleiben und nicht auf den neuen 'geschwinden' Zug aufspringen) sowas nicht unterstützt, wollte ich fragen, wie ihr vorgehen würdet? Als CSV konvertieren und wieder zurück? Geht das? Sind ja auch zumindest Bilder in der Word-Datei...

    Danke schonmal für eure Antworten,
    Robin
    Gruß

    Robin
  • Ein Nachteil von VBA Makros/ VBS und AppleScript ist es natürlich, daß das Office-Paket installiert sein muß. Bei VBA/ VBS kommen noch Inkompatibilitäten bei den installierten Versionen, Sprachvarianten und Plattformen hinzu. Diese Variante ist auch nicht besonders performant, verfügt dafür aber über den vollen Office-Funktionsumfang und läßt sich recht schnell out of the box einrichten.

    Es gibt einige Bibliotheken für die Office-Dateiformate. .NET hat's natürlich komplett. In Java gibt es einiges, das wurde schon erwähnt. Es gibt, wenn ich mich recht erinnere, auch eine proprietäre C++-Bibliothek von einem Drittanbieter, die aber recht teuer ist. Für eine grundlegende Unterstützung des alten .xls-Binärformates gibt es eine OS-C-Bibliothek, die ich teilweise selber verwende.

    Ich habe ein Programm geschrieben, das ähnliches macht. Eine Excel Datei einlesen, Magie und dann daraus ein Word Dokument schreiben. Ich gehe da den Zwischenschritt über das 2003 ML Format. Da bestehen die Dokumente aus einer einfachen XML-Datei, die man problemlos auslesen, bzw. erstellen kann. Nachteil: Man muß in Office umspeichern.
    Wenn die Dokumente zu komplex sind (Formeln, besondere Zahlenformate, Referenzen, Formatierungen,...) müßte man das Rad komplett neu erfinden und neu implementieren. Bei mir war das nicht der Fall. Somit für mich ein gangbarer Weg.

    Es gibt da mehrere Wege. Hängt von der Komplexizität der Dateien ab, dem Geldbeutel, dem Zeitaufwand, den man investieren kann/ will, etc.
    Das iPhone sagt: "Zum Antworten streichen". Wie? Echt Jetzt? Muß ich erst die Wohnung streichen!?
  • ja aber warum will man einen bestimmten filetyp parsen, verändern und dann wieder zusammensetzen wenn das bereits das probgramm kann welches man für den filetype braucht.
    wenn man das programm eh nicht verwenden will, so kann man ja auch auf den filetyp verzichten und die datei nur lesend verweden.
  • Appel schrieb:

    weil es halt immer nur um den Inhalt einer Zelle geht...

    Das 'nur' ist süß. Da mach ich ein rosa Schleifchen drum. ^^

    Der 'Inhalt' einer Zelle in Excel ist etwas komplexer. Das kann ein Text sein. Das kann eine Zahl sein. Das kann eine Zahl sein, die als Datum verstanden wird. Die Zahl kann auch eine Zeitangabe sein. Der Inhalt kann auch eine Referenz auf eine andere Zelle, ja sogar in einer anderen Tabelle sein. Der Inhalt kann auch eine Formel sein, die andere Zelleninhalte berechnet... Ist der Inhalt der Zelle dann die Zelle oder die andere Zelle???

    'Inhalt einer Zelle' ist in Excel schon etwas differenzierter...

    Schnuckelig der Gedankengang. ^^
    Das iPhone sagt: "Zum Antworten streichen". Wie? Echt Jetzt? Muß ich erst die Wohnung streichen!?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von torquato ()

  • gritsch schrieb:

    ja aber warum will man einen bestimmten filetyp parsen, verändern und dann wieder zusammensetzen wenn das bereits das probgramm kann welches man für den filetype braucht.
    wenn man das programm eh nicht verwenden will, so kann man ja auch auf den filetyp verzichten und die datei nur lesend verweden.

    Bitte gritsch, dafür kann es doch einen Haufen von Gründe geben. Servertätigkeit, Performance, Batch-Workflow...
    Das iPhone sagt: "Zum Antworten streichen". Wie? Echt Jetzt? Muß ich erst die Wohnung streichen!?
  • torquato schrieb:

    gritsch schrieb:

    ja aber warum will man einen bestimmten filetyp parsen, verändern und dann wieder zusammensetzen wenn das bereits das probgramm kann welches man für den filetype braucht.
    wenn man das programm eh nicht verwenden will, so kann man ja auch auf den filetyp verzichten und die datei nur lesend verweden.
    Bitte gritsch, dafür kann es doch einen Haufen von Gründe geben. Servertätigkeit, Performance, Batch-Workflow...
    aber eben auch viele wo es keinen sinn macht - wenn er ihn nicht nennt kann man nur raten...
  • gritsch schrieb:

    torquato schrieb:

    Bitte gritsch, dafür kann es doch einen Haufen von Gründe geben. Servertätigkeit, Performance, Batch-Workflow...
    aber eben auch viele wo es keinen sinn macht - wenn er ihn nicht nennt kann man nur raten...

    Jupp. Absolut. Kann man nur raten, was am Sinnvollsten ist.
    Deshalb hatte ich ja auch geschrieben:

    torquato schrieb:

    Es gibt da mehrere Wege. Hängt von der Komplexizität der Dateien ab, dem Geldbeutel, dem Zeitaufwand, den man investieren kann/ will, etc.

    Hängt halt 'davon' ab...
    Das iPhone sagt: "Zum Antworten streichen". Wie? Echt Jetzt? Muß ich erst die Wohnung streichen!?
  • <sarkasmus>
    Aber das Office Format ist voll Open sagt Microsoft.
    Und der Balmer tanzt sogar dazu. 8|
    </sarkasmus>

    Im Prinzip ist das "nur" XML (mit rosa Schleichen drum). Wenn Du über genügend Zeit und masochistische Veranlagung verfügst, kannst Du Dich durch die OOXML Dokumentation wühlen, und versuchen direkt an die von Dir gesuchten Elemente im Dokument ranzukommen.

    Ansonsten, das mglw. einfachste ist CSV exportieren, verarbeiten und danach zu reimportieren.
    * Kann Spuren von Erdnüssen enthalten.
  • Hallo nochmal,

    also ich bin gerade dabei, den für mich besten weg rauszufinden.

    Ich denke mal einer der "besten" wegen wäre ein Export zu CSV. Meine Frage hierfür ist: Kennt ihr einen Weg wie ich es dann wieder zurück-konvertieren kann? Bzw. Muss ich ja den Wert X der Zelle Y in ein anderes Dokument kriegen. Natürlich könnte man das dann auch als CSV exportieren, den Wert reinschreiben.. nur muss das am Ende wieder in die ursprüngliche Ausgangssituation, also ein Word/Excel-File.

    Danke für die Antworten,

    Robin
    Gruß

    Robin
  • robin_ schrieb:

    Hallo nochmal,

    also ich bin gerade dabei, den für mich besten weg rauszufinden.

    Ich denke mal einer der "besten" wegen wäre ein Export zu CSV. Meine Frage hierfür ist: Kennt ihr einen Weg wie ich es dann wieder zurück-konvertieren kann? Bzw. Muss ich ja den Wert X der Zelle Y in ein anderes Dokument kriegen. Natürlich könnte man das dann auch als CSV exportieren, den Wert reinschreiben.. nur muss das am Ende wieder in die ursprüngliche Ausgangssituation, also ein Word/Excel-File.

    Danke für die Antworten,

    Robin
    über das csv verlierst du alle infos bis auf die reinen daten.
    es kann also nicht deine lösung sein!
  • Genau das hatte ich vermutet... Hm, dann wäre da noch LibXLS

    /EDIT: Was aber nicht schreiben kann.

    Ich würde mir gerne mal den Inhalt eines "einfachen" Excel-Sheets ausgeben lassen, als NSString oder so, um den Umfang des zu passenden Dokumentes zu sehen.. Scheint aber nicht so einfach möglich zu sein... Ein NSData - Objekt klappt noch, sobald man es über initWithBytes: umwandeln will, ist es immer nil, egal welches Encoding man verwendet...
    Gruß

    Robin