Feature #4922
closedExcel Import via PHP
0%
Description
- Der Excel Import soll via PHP implementiert werdne.
- Im Upload Dialog soll es moeglich sein bei einem Excel Import direkt einen Tab und eine Import region anzugeben.
PHP Excel
• https://github.com/PHPOffice/PHPExcel
• https://github.com/nuovo/spreadsheet-reader
• https://code.google.com/archive/p/php-excel-reader/
∘ https://stackoverflow.com/questions/11447918/php-import-excel-into-database-xls-xlsx
• Nach dem Import wird das excel sofort wieder geloescht.
• https://github.com/PHPOffice/PhpSpreadsheet
Importfeatures¶
- es wird alles importiert, ohne region
- es werden die gnannten Tabs importiert, falls nichts angeegben ist tab=1
- mariadb.spaltenamen=excel.spaltenname (A,B,...)
- Falls zieltabelle nciht existier, wird sie erzeugt.
- FE.parameter
importType = auto | xls | xlsx | odt | csv | importMode = append | replace | replaceByIndex importIndexColumn = id (default)| ... importRegion = [tab[,[startColumn],[startRow],[endColumn],[endRow]]] importToTable = <mariadb.tablename> importToColumn = <col1>,<col2>,<col3>,...
Related issues
Updated by Carsten Rose over 5 years ago
- Tracker changed from Support to Feature
Updated by Benjamin Baer almost 5 years ago
- Target version changed from 55 to 18.10.3
Updated by Carsten Rose almost 5 years ago
- Subject changed from Excel Import via PHP to Excel Import/Export via PHP
- Status changed from New to In Progress
- PHPExcel ist deprecated
- Nachfogler: PhpOffice/PhpSpreadsheet
- https://phpspreadsheet.readthedocs.io/en/develop/topics/reading-files/
- Via composer installiert nach vendor/PhpOffice/PhpSpreadsheet
- Im Makefile via 'make bootstrap' wird die Lib heruntergeladen und zusaetzlich nach extension/Resources/Private/PhpSpreadsheet kopiert.
- Beide Stellen sind im .gitignore eingetragen und werden nicht eingecheckt.
Updated by Elias Villiger almost 5 years ago
- Assignee changed from Carsten Rose to Elias Villiger
Updated by Elias Villiger almost 5 years ago
Notationsvorschlag:
dataImport = destinationTable,[mode],[tabIndex],[cellStart],[cellEnd]|… mode: append, replace
Dadurch kann eine Excel-Datei in mehrere Tabellen importiert werden, falls gewünscht.
Updated by Carsten Rose almost 5 years ago
Hallo Elias
- Koennen die sheets (tab) auch via Namen angesprochen werden? `[tabIndex]` suggeriert mir einen numerischen Wert. `[tab]` oder `[tabName]` faende ich dann besser.
- Sollten wir noch einen `[type]` definieren, der default auf 'auto' steht und ggfs. auf 'xls', 'xlsx', 'odt', 'csv', ... gesetzt werden kann?
- `[mode]` koennte einen 3. Wert bekommen: `replaceByIndex`: Gibt es eine `[index]` Spalte (default 'id') und gibt es einen Wert in der DB mit gleichen Index: replace record sonst insert. Das kannst Du einfach mit dem SQL Statement 'REPLACE' machen (anstelle von INSERT). Ggfs. muss die Spalte mit dem Index konfigurierbar sein.
- Wir sollten keine 'position dependent' Parameter mehr machen (bad practice: _Page, _Pagee, ...). D.h. bitte bei dem urspruenglichen Ansatz mit einzelnen Parametern bleiben (ist der Standard in QFQ).
- Was haeltst Du von folgendem Naming scheme:
- importType = auto | xls | xlsx | odt | csv |
- importMode = append | replace | replaceByIndex
- importIndexColumn = id (default)| ...
- importRegion = [tab[,x1,y1[,x2,y2]]],...
- importToTable = <mariadb.tablename>
Vielen Dank.
CU
C
Updated by Elias Villiger almost 5 years ago
Hallo Carsten
Danke für die Rückmeldung!
1) Zu tabName vs tabIndex: Für geolean würde ich tabIndex als praktischer empfinden, da ich dann nicht jedesmal überprüfen muss, ob das Tab noch gleich benannt ist (sondern einfach das erste nehmen kann). Vielleicht sollten wir beides anbieten?
4) Meine Überlegung war, dass es Situationen geben könnte, wo man eine Excel-Datei mit mehreren Tabs hochlädt, welche unterschiedliche Daten haben. D.h. Tab 1 möchte man vielleicht in Tabelle 1 importieren, Tab 2 in Tabelle 2, etc.
Mit deinem Vorschlag wäre die Zuweisung von Tabelle zu Tab nicht möglich, d.h. die Datei müsste in separaten Upload-FEs hochgeladen werden, um Daten in verschiedene Tabellen zu importieren.
Ich weiss aber nicht, ob das Bedürfnis wirklich besteht, von mir aus können wir also schon deinen Vorschlag annehmen.
6) Zusätzlich brauchen wir evtl. auch noch eine Möglichkeit, die Spaltennamen zu definieren - damit man die DB-Spalten lesbarer benennen kann und nicht nur A, B, C, D, ...
So, für mich heisst's jetzt aber erstmals Ferien, schaue danach weiter :)
LG, Elias
Updated by Carsten Rose almost 5 years ago
Hallo Elias
1) Vorschlag fuer 'tabindex' , 'tabname': 'importTab' oder 'importSheet'... falls numerisch dann Bedeutung als index, sonst Bedeutung als Name.
4) Mehrer Tabs auf einmal: ja, das koennte passieren - aber ich vermute es ist die grosse Ausnahme. Wenn es so komplizierte Excels sind, ist auch die Frage ob es nicht bessere Importmoeglichkeiten gibt. Mein Hauptargument ist eigentlich das mit den 'Position dependent parametern'.
6) Abbildungspaltennamen. Ja, sehr gut.
Vorschlag:
importToColumn=<col1>,<col2>,<col3>,...
CU
Carsten
Updated by Carsten Rose almost 5 years ago
- Subject changed from Excel Import/Export via PHP to Excel Import via PHP
Updated by Elias Villiger over 4 years ago
Aktuell implementiert (siehe https://git.math.uzh.ch/typo3/qfq/merge_requests/73):
importMode = append | replace importRegion = [tab],[startColumn],[startRow],[endColumn],[endRow]|... importToTable = <mariadb.tablename> importToColumn = <col1>,<col2>,<col3>,...
`tab`: falls numerisch, als Index, andernfalls als Name
Vorschlag: importMode = replaceByIndex erst bei Bedarf implementieren. Ein spezifischer Usecase wäre hilfreich, um die Implementations-Details zu optimieren.
Ausserdem noch nicht implementiert:
importType = auto | xls | xlsx | odt | csv
@Carsten: Kannst du erklären, wie der importType implementiert werden soll? Ich habe .xlsx, .ods und .xlsm getestet, und funktionieren alle gleich. Die mime-Types kann man ja bereits als upload-Parameter angeben.
Updated by Elias Villiger over 4 years ago
- Status changed from In Progress to Closed
importMode ist jetzt auch implementiert.
Updated by Carsten Rose over 4 years ago
- Target version changed from 18.10.3 to 18.9.2
Updated by Carsten Rose over 4 years ago
- Target version changed from 18.9.2 to 18.10.2
Updated by Carsten Rose over 4 years ago
- Related to Support #7103: Notes to Excel Export added