Hallo Wolfgang
Habe es aufgegeben die C# dll in X# umzuschreiben.
Habe hier nun noch mein kleines X# Prg und die neueste C# dll inkl. Source hochgeladen, liesst nun Xlsx Files über alle Sheets, kann sicher noch ein anderer gebrauchen. Hoffe alles ist dabei.
Gruss
Horst
Excel lesen
Moderator: wriedmann
Excel lesen
- Attachments
-
- ReadXlsx.zip
- (76.58 KiB) Downloaded 58 times
Excel lesen
Hallo Horst,
ich bin mir nicht sicher, dass hier nicht ein Problem im X# Compiler mit den Attributen vorliegt.
Ich habe leider aktuell nicht die Zeit, der Sache nachzugehen - vielleicht über die Weihnachtsfeiertage... (Italien erwägt, das ganze Land über die Feiertage zur roten Zone zu erklären, mit Ausgangssperren und Verbot, die eigene Gemeinde zu verlassen),
Wolfgang
ich bin mir nicht sicher, dass hier nicht ein Problem im X# Compiler mit den Attributen vorliegt.
Ich habe leider aktuell nicht die Zeit, der Sache nachzugehen - vielleicht über die Weihnachtsfeiertage... (Italien erwägt, das ganze Land über die Feiertage zur roten Zone zu erklären, mit Ausgangssperren und Verbot, die eigene Gemeinde zu verlassen),
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Excel lesen
Hallo Wolfgang
Ich habe auch das Gefühl X# macht da was nicht richtig. Aber irgendwie hast du schon recht, man kann das in einer eigenen DLL lassen und wen es schon unter c# läuft kann mans auch lassen.
Ich habe noch kurz ne Frage zu foreach und dem:
FOREACH oworksheet AS worksheet IN Workbook.Worksheets(SELF:aFile [1] [4])
Ich brauche meistens nur gerade das erste Sheet eines Excelfiles. Jetzt springe ich einfach mit EXIT raus.
Einen Array würde ich mit aLen abfragen. Wie kann ich das erste oWorksheet von Workbook ansprechen ?
Gruss
Horst
Ich habe auch das Gefühl X# macht da was nicht richtig. Aber irgendwie hast du schon recht, man kann das in einer eigenen DLL lassen und wen es schon unter c# läuft kann mans auch lassen.
Ich habe noch kurz ne Frage zu foreach und dem:
FOREACH oworksheet AS worksheet IN Workbook.Worksheets(SELF:aFile [1] [4])
Ich brauche meistens nur gerade das erste Sheet eines Excelfiles. Jetzt springe ich einfach mit EXIT raus.
Einen Array würde ich mit aLen abfragen. Wie kann ich das erste oWorksheet von Workbook ansprechen ?
Gruss
Horst
Excel lesen
Hallo Horst,
eine Collection beginnt immer mit 0 (nicht mit 1!).
Also würde ich das so machen:
nachdem Du abgefragt hast, ob die Instanzvariable :Count > 0 ist.
Idealerweise
Wolfgang
eine Collection beginnt immer mit 0 (nicht mit 1!).
Also würde ich das so machen:
Code: Select all
oWorkSheet := WorkBook.WorkSheets( self:aFile[1][4] )[0]
Idealerweise
Code: Select all
oSheets := Workbook.Worksheets( self:aFile[1][4] )
if oSheets:Count > 0
oSheet := oSheets[0]
endif
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Excel lesen
Danke
Wieder was gelernt
Gruss
Horst
Wieder was gelernt
Gruss
Horst
Excel lesen
Habe jetzt aber ein Problem mit der Declaration.
// FOREACH oworksheet AS worksheet IN Workbook.Worksheets(SELF:aFile [1] [4])
LOCAL oworksheet AS workbook.worksheet
oder LOCAL oworksheet AS worksheet
oWorksheet := Workbook.Worksheets(SELF:aFile [1] [4]) [0]
IF oWorksheet != NULL
Beim komplieren kennt er worksheet nicht
Was mache ich da falsch?
Gruss
Horst
// FOREACH oworksheet AS worksheet IN Workbook.Worksheets(SELF:aFile [1] [4])
LOCAL oworksheet AS workbook.worksheet
oder LOCAL oworksheet AS worksheet
oWorksheet := Workbook.Worksheets(SELF:aFile [1] [4]) [0]
IF oWorksheet != NULL
Beim komplieren kennt er worksheet nicht
Was mache ich da falsch?
Gruss
Horst
Excel lesen
Horst,
The type is named Excel.worksheet, not Workbook.worksheet.
Robert
The type is named Excel.worksheet, not Workbook.worksheet.
Robert
XSharp Development Team
The Netherlands
robert@xsharp.eu
The Netherlands
robert@xsharp.eu
Excel lesen
Hi Robert
Ja it works with excel.worksheet, but i thought when i use
#using Excel - then
Local oworksheet as worksheet
shoud be enough? Confused.
And now it stopt at
oWorksheet := Workbook.Worksheets(SELF:aFile [1] [4])[0]
error XS0021: Cannot apply indexing with [] to an expression of type 'System.Collections.Generic.IEnumerable<Excel.worksheet>'
is Wolfgang's example wrong ?
And Starts collection allways with 0 or like Array when VO Dialekt with 1 ??
Horst
Ja it works with excel.worksheet, but i thought when i use
#using Excel - then
Local oworksheet as worksheet
shoud be enough? Confused.
And now it stopt at
oWorksheet := Workbook.Worksheets(SELF:aFile [1] [4])[0]
error XS0021: Cannot apply indexing with [] to an expression of type 'System.Collections.Generic.IEnumerable<Excel.worksheet>'
is Wolfgang's example wrong ?
And Starts collection allways with 0 or like Array when VO Dialekt with 1 ??
Horst
Excel lesen
Horst,
using Excel should work indeed.
W.r.t. error xs0021: apparently the Worksheets property is an IEnumarable<Excel.worksheet> which means that you can use a FOREACH on it but not an index operator.
As an alternative (if you include using System.Linq) you can use the FirstOrDefault() extension method to get the first
element in the collection or NULL when the collection is empty.
And to answer your questions about [0] or [1] based collections:
The indexer of a collection is written in code. It depends on who wrote that code if the collection starts with a 0 or 1.
You can also have indexers that accept a string (like in a dictionary) so there are no "fixed" rules for collections.
So you will have to rely on the documentation, or use a FOREACH or FirstOrDefault() to make sure it always works.
For arrays things are different: normally they start with 1 in X# and with 0 in C#.
I know this is confusing, since both the indexer and the array use the [nPos] notation.
Robert
using Excel should work indeed.
W.r.t. error xs0021: apparently the Worksheets property is an IEnumarable<Excel.worksheet> which means that you can use a FOREACH on it but not an index operator.
As an alternative (if you include using System.Linq) you can use the FirstOrDefault() extension method to get the first
element in the collection or NULL when the collection is empty.
And to answer your questions about [0] or [1] based collections:
The indexer of a collection is written in code. It depends on who wrote that code if the collection starts with a 0 or 1.
You can also have indexers that accept a string (like in a dictionary) so there are no "fixed" rules for collections.
So you will have to rely on the documentation, or use a FOREACH or FirstOrDefault() to make sure it always works.
For arrays things are different: normally they start with 1 in X# and with 0 in C#.
I know this is confusing, since both the indexer and the array use the [nPos] notation.
Robert
XSharp Development Team
The Netherlands
robert@xsharp.eu
The Netherlands
robert@xsharp.eu