Forum: PC Hard- und Software Excel Liste als Const. C Liste?


von Rainer K. (Gast)


Lesenswert?

Liebe Community,

ich habe bereits ausgiebig gegoogelt, aber entweder suche ich nach den 
falschen Begriffen, oder so ein Tool gibt es nicht.

Ich habe folgenden Sachverhalt:

Eine Excel Liste:
Attribute 1 | Attribute 2      | Attribute 3 ...
-----------------------------------------------------
DEF_VAL1    |            0x12  | 0x0ABC
DEF_VAL3    |            0x11  | 0x000C
.
.
.

Ich habe eine entsprechende Liste in C
1
typedef struct{
2
 const uint16_t attribute1;
3
 const uint32_t attribute2;
4
 const uint32_t attribute3;
5
}MYLIST;
6
7
static const MYLIST mylist[] =
8
{
9
  {
10
   DEV_VAL1,
11
   0x12,
12
   0x0ABC
13
  },
14
15
  {
16
  DEV_VAL5,
17
  0x11,
18
  0x000C
19
  },
20
21
.
22
.
23
.
24
25
}


Die Excelliste enthält ca. 500 Einträge die brauche ich in beschriebener 
Form als C Code. Ich glaube einen solchen Parser schon einmal gesehen zu 
haben, finde Ihn aber nicht mehr... Dürfte auch nicht so schwer sein so 
einen Parser selber zu schreiben, immerhin lässt sich ein Excel File als 
XML exportieren - bevor ich das aber mache wollte ich erst fragen ob 
jemand ein solches Tool kennt, oder evtl. selbst geschrieben hat. :)

: Verschoben durch User
von Matthias H. (experimentator)


Lesenswert?

Das einfachste ist, die Excel-Datei als CSV-Datei zu exportieren (dann 
hat man eine Textdatei, in der die Felder durch Trennzeichen getrennt 
sind) und dann einen kleines Programm zu schreiben, das diese Datei 
parsed und die C-Ausgabe erzeugt.

von Silvan K. (silvan) Benutzerseite


Lesenswert?

Matthias H. schrieb:
> Das einfachste ist, die Excel-Datei als CSV-Datei zu exportieren (dann
> hat man eine Textdatei, in der die Felder durch Trennzeichen getrennt
> sind) und dann einen kleines Programm zu schreiben, das diese Datei
> parsed und die C-Ausgabe erzeugt.

Genau die Arbeit will er vermeiden, da er schon so ein Programm gesehen 
hat (welches allerdings XML-Daten erwartet).

Ich hab sowas gefunden:
http://de.wikipedia.org/wiki/XSL_Transformation

Aber vermutlich ist es einfacher, wenn du dir das Programm selber 
schreibst (vergiss dabei nicht, deinen Beitrag zur Codesammlung zu 
leisten^^)

von Matthias H. (experimentator)


Lesenswert?

> Genau die Arbeit will er vermeiden, da er schon so ein Programm gesehen
> hat (welches allerdings XML-Daten erwartet).

Gerade weil XML-Verarbeitung eine Wissenschaft für sich ist, wenn man 
sich damit nicht auskennt, habe ich die Lösung mit Textdatei 
vorgeschlagen ;-) .

von Johann (Gast)


Lesenswert?

Du schreibst in die 4. Spalte Deiner Excel-Tabelle folgende "Formel":

=VERKETTEN("{";A1;", ";B1;", ";C1;"},")

Diese kopierst Du dann in alle 500 Zeilen. Dann markierst Du die 4. 
Spalte <ctrl-C>, öffnest Deinen Texteditor, <ctrl-V>. Dann noch ein paar 
Klammern nachtragen und fertig.

von Rainer K. (Gast)


Lesenswert?

Also natürlich wäre ein kleiner Parser die eleganteste Lösung und ich 
denke ich werde mir da auf Dauer einen schreiben - wenn ich das mache 
veröffentliche ich den natürlich hier. :)

Als Quick&Dirty Lösung finde ich den Vorschlag von Johann genial! :) 
Excel kann schon viel, man muss nur wissen was und wie. :p

Danke für die Tipps! :O

von gk (Gast)


Lesenswert?

Also im Prinzip besteht so ein klassisches .XLS File aus sogennanten 
BIFF-Records. Die haben einem festen Teil, bestehend aus der Record 
Number
und Record Data Length, jeweils 16 Bit WORD. Danach folgen die Daten, 
deren Länge sich aus der Record Data Length ergibt. Im Prinzip musst Du 
Dich jetzt nur durch Biff-Records durchhangeln, bis Du die betreffenden 
Zellen gefunden hast. Es gibt einige hundert verschiedene Typen, wovon 
Du die wenigsten aber für Deinen Fall brauchst. Die Record Number 0003 
ist der Reord-Typ Number, der einen Floating-Point Wert enthält, 0004 
ist ein Label, der enthält Text. Den Aufbau der jeweiligen Records musst 
Du natürlich kennen. Es gibt, oder gab mal  von MS ein Beispielcode als 
Source, dar nannte sich undump.c. Ich weiß aber nicht, ob die neueste 
Version von EXCEL, die Daten nur noch als XML speichert
gk

von Alfred (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich hab mal (in 10 Minuten) ein Rubyscript gezimmert, dass eine 
CSV-Datei in Dein C-Format konvertiert. Zum Ausführen brauchst Du also 
Ruby (http://www.ruby-lang.org/de/). Ansonsten sollte der Code auch für 
Nicht-Rubyprogrammierer halbwegs
nachvollziehbar und modifizierbar sein.

Beste Grüße

Alfred

von regexpr (Gast)


Lesenswert?

Sowas mach ich immer im Texteditor meiner Wahl der beim suchen/ersetzen 
reguläre Ausdrücke unterstützt. Schnell getippt und sehr sehr mächtig

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.