paar Excel Fragen
Moderator: Moderatoren
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: paar Excel Fragen
klappt nicht mit den chinesischen Zeichen ...Koverhage hat geschrieben:Ich glaube da must Du auf kostenplichtige Tools zurückgreifen.
http://smartpdfconverter.de/?gclid=CNXU ... zAodLl_TJA
gruss by OHR
Jimmy
Jimmy
-
- Rekursionen-Architekt
- Beiträge: 315
- Registriert: Mo, 16. Okt 2006 13:04
- Wohnort: Region Stuttgart
Re: paar Excel Fragen
Hallo Jimmy,
da Excel eine Unicode-Anwendung ist, versuche doch mal aus deinem Programm heraus das Excel-Sheet mit Unicode-Strings zu füttern.
Wenn du einen Xbase++ - String hast, kannst du den mit Str2Unicode() in einen Unicode-String umwandeln. In wie weit das im konkreten Fall funktioniert, kannst du kontrollieren, indem du das Ergebnis in eine Datei schreibst und per Hex-Editor, oder visuell per Notepad unter Arial Unicode MS, mit dem Sollwert vergleichst. Diesen liefert dir ebenfalls Notepad, indem du die gewünschte Zeichenfolge eingibst (oder per cut and paste einfügst) und als Unicode abspeicherst.
Dieser Artikel aus der Sicht von Visual Foxpro -- Using Unicode in Visual FoxPro Web and Desktop Applications,
http://www.west-wind.com/presentations/ ... nicode.asp -- ist in diesem Zusammenhang interessant. Die haben (oder hatten, wie man will) als Nicht-Unicode-Enwicklungstool die gleichen Probleme wie aktuell Xbase++ .
Gruß,
Günter
da Excel eine Unicode-Anwendung ist, versuche doch mal aus deinem Programm heraus das Excel-Sheet mit Unicode-Strings zu füttern.
Wenn du einen Xbase++ - String hast, kannst du den mit Str2Unicode() in einen Unicode-String umwandeln. In wie weit das im konkreten Fall funktioniert, kannst du kontrollieren, indem du das Ergebnis in eine Datei schreibst und per Hex-Editor, oder visuell per Notepad unter Arial Unicode MS, mit dem Sollwert vergleichst. Diesen liefert dir ebenfalls Notepad, indem du die gewünschte Zeichenfolge eingibst (oder per cut and paste einfügst) und als Unicode abspeicherst.
Dieser Artikel aus der Sicht von Visual Foxpro -- Using Unicode in Visual FoxPro Web and Desktop Applications,
http://www.west-wind.com/presentations/ ... nicode.asp -- ist in diesem Zusammenhang interessant. Die haben (oder hatten, wie man will) als Nicht-Unicode-Enwicklungstool die gleichen Probleme wie aktuell Xbase++ .
Gruß,
Günter
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: paar Excel Fragen
hi,
in der Hilfe finde ich nichts ... aber es gibt ja eine "neue" DLL bei SL1 die XPPSYS.DLL welche
ja aus den Sourcen besteht wozu auch C:\ALASKA\XPPW32\Source\SYS\activex.prg gehört.
ok das werde ich mal ausprobieren, aber ich habe im Alaska Forum dazu auch eine "andere" Msg gefunden
Danke für deine Tips, mal sehen wie ich die umsetzten kann
Str2Unicode() ... das ist doch in der SL1 v1.9.355 ... aber wo ... ?Günter Beyes hat geschrieben:da Excel eine Unicode-Anwendung ist, versuche doch mal aus deinem Programm heraus das Excel-Sheet mit Unicode-Strings zu füttern.
Wenn du einen Xbase++ - String hast, kannst du den mit Str2Unicode() in einen Unicode-String umwandeln. In wie weit das im konkreten Fall funktioniert, kannst du kontrollieren, indem du das Ergebnis in eine Datei schreibst und per Hex-Editor, oder visuell per Notepad unter Arial Unicode MS, mit dem Sollwert vergleichst. Diesen liefert dir ebenfalls Notepad, indem du die gewünschte Zeichenfolge eingibst (oder per cut and paste einfügst) und als Unicode abspeicherst.
in der Hilfe finde ich nichts ... aber es gibt ja eine "neue" DLL bei SL1 die XPPSYS.DLL welche
ja aus den Sourcen besteht wozu auch C:\ALASKA\XPPW32\Source\SYS\activex.prg gehört.
ok das werde ich mal ausprobieren, aber ich habe im Alaska Forum dazu auch eine "andere" Msg gefunden
Re: Unicode Displaying and entering, public.xbase++.gui, 6. Oktober 2008
> In the latest SL1 you can see some definitions for the DDL level
> #define XPP_WIDECHAR (0x00000200)
> #define XPP_WIDEMEMO (XPP_WIDECHAR+XPP_ST_LARGE)
> #define XPP_VARWIDECHAR (XPP_WIDECHAR+XPP_ST_VARSIZE)
> probably they have extend this also to the runtime level.
This is already #defined in Types.ch of Xbase++ 1.9
I'm eagerly waiting that the compiler understands this:
#define XPP_SEQUENCE (0x00000400)
#define XPP_POINTER (0x00000800)
#define XPP_TIME (0x00001000)
#define XPP_TIMESTAMP (0x00002000)
#define XPP_TIMESPAN (0x00004000)
#define XPP_GUID (0x00008000)
> In SL1 you also can see some new functions
> IsUnicode( <cString> ) --> lIsUnicode
> Str2Unicode( <cString> ) --> cuString
> Unicode2Str( <cuString>] ) --> cString
These are limited wrappers for the WideCharToMultiByte() and
MultiByteToWideChar() APIs. Function IsUniCode() is two lines of PRG code:
FUNCTION IsUniCode( cString )
RETURN ( Valtype(cString) == "C" .AND. Len( cString ) >=2 .AND. cString[-1]
== Chr(0) )
I don't think that this justifies the hope for full UNICODE support with the
Xbase++ compiler.
> I think the next logical step will be use the unicode APIs that will
> allow loseless conversions from Oem or Ansi charsets
IMO, this requires Alaska to change the Xbase++ kernel from SBCS to MBCS.
Alaska doesn't have the manpower to accomplish this.
uuuuuuffff ... viel Stuff zum lesen.Günter Beyes hat geschrieben: Dieser Artikel aus der Sicht von Visual Foxpro -- Using Unicode in Visual FoxPro Web and Desktop Applications,
http://www.west-wind.com/presentations/ ... nicode.asp -- ist in diesem Zusammenhang interessant. Die haben (oder hatten, wie man will) als Nicht-Unicode-Enwicklungstool die gleichen Probleme wie aktuell Xbase++ .
Danke für deine Tips, mal sehen wie ich die umsetzten kann
gruss by OHR
Jimmy
Jimmy
- brandelh
- Foren-Moderator
- Beiträge: 15695
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: paar Excel Fragen
Hi,
also bei mir steht
Allerdings ist das NUR für Programme die auch UNICODE Parameter erwarten !
also bei mir steht
aber vermutlich nur in der Version mit "neuen Features" ... in meiner Hilfe stehts jedenfalls ganz normal drin.Str2Unicode() - Konvertiert eine OEM/ANSI/ASCII in eine Unicode Zeichenkette [Vorübergehende Dokumentation]
...
Allerdings ist das NUR für Programme die auch UNICODE Parameter erwarten !
Gruß
Hubert
Hubert
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: paar Excel Fragen
und die Parameter ?brandelh hat geschrieben:also bei mir stehtaber vermutlich nur in der Version mit "neuen Features" ... in meiner Hilfe stehts jedenfalls ganz normal drin.Str2Unicode() - Konvertiert eine OEM/ANSI/ASCII in eine Unicode Zeichenkette [Vorübergehende Dokumentation]
...
Allerdings ist das NUR für Programme die auch UNICODE Parameter erwarten !
ich habe ja "nur" die SL1 v1.9.355 ohne "visual Style" ... ob es da einen Unterschied gibt ?
gruss by OHR
Jimmy
Jimmy
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: paar Excel Fragen
so heute mal paar Tips
das man ein ganze Array an Excel übergeben kann wissen wohl viele, aber das Array kann "mehr"
enthalten als "nur" Daten.ist eine "Formel" die ich ebenfalls im Array an Excel übergeben kann.
zum setzten den Spaltenbreite ist wohl bekannt, aber man kann mit :Columns() auch noch andere Sachen machen.
Reihe A wird nach links ausgerichtet und Reihe F nach rechts.
allgemein : wenn man was mit einer ganzen Spalte machen will nimmt man :Columns()
dito das selbe mit :Rows()
hier noch paar :Range() Optimierungendie "alte" Version hat es "sehr langsam" Zeile-für-Zeile gemacht, aber :Range() macht es "in einem Rutsch"
also im help file "C:\Programme\Microsoft Office\Office10\1031\VBAXL10.CHM" steht zwar "Komma", aber das funktioniert nicht ?
ich habe dann alles mögliche ausprobiert und mit dem ";" Semikolon ging es dann
Frage : wie "übersetzt" mann das ?... er meldet "fehlende Function Cell()" ... ist ja auch eine Methode.
das man ein ganze Array an Excel übergeben kann wissen wohl viele, aber das Array kann "mehr"
enthalten als "nur" Daten.
Code: Alles auswählen
aExcel[PosKG] [myGEWICHT] := "=SUMME(D4:K4)" // German SUMME
Code: Alles auswählen
oSheet:Columns( nNumber ):ColumnWidth := 5.5 (mm)
Code: Alles auswählen
oSheet:Columns("A"):HorizontalAlignment := xlLeft
oSheet:Columns("F"):HorizontalAlignment := xlRight
allgemein : wenn man was mit einer ganzen Spalte machen will nimmt man :Columns()
dito das selbe mit :Rows()
hier noch paar :Range() Optimierungen
Code: Alles auswählen
5 Zeilen Font etc. setzen
* i := 1
* FOR i := 1 TO 5
* cZeile := LTRIM(STR(i))
* DO CASE
* CASE i = 1
* oSheet:range( "A"+cZeile+":J"+cZeile ):Font():Size := 18
* CASE i = 2
* oSheet:range( "A"+cZeile+":J"+cZeile ):Font():Size := 14
* CASE i = 3
* oSheet:range( "A"+cZeile+":J"+cZeile ):Font():Size := 14
* CASE i = 4
* oSheet:range( "A"+cZeile+":J"+cZeile ):Font():Size := 14
* CASE i = 5
* oSheet:range( "A"+cZeile+":J"+cZeile ):Font():Size := 14
* ENDCASE
*
* oSheet:range( "A"+cZeile+":J"+cZeile ):Font():Name := "Times" /
* oSheet:range( "A"+cZeile+":J"+cZeile ):Font():Bold := .t.
* NEXT
oZeile := oSheet:range( "A1:J1" ):Font()
oZeile:Size := 18 //Schriftgrösse ändern
oZeile:Name := "Times" //Schrift festlegen
oZeile:Bold := .T.
oZeile := oSheet:range( "A2:J5" ):Font()
oZeile:Size := 14 //Schriftgrösse ändern
oZeile:Name := "Times" //Schrift festlegen
oZeile:Bold := .T.
Code: Alles auswählen
Array mit Zeilennummern von Überschriften deren Font geändert werden soll
//
// later use Macro
//
cRange := ""
//
// Array Number Header-Line
//
i := 1
iMax := LEN(aHeaderLine)
//
FOR i := 1 TO iMax
cZeile := LTRIM(STR(aHeaderLine[i]))
*
* old Version did it Line-by-Line ... "very slow"
*
* oZeile := oSheet:range( "A"+cZeile+":J"+cZeile ):Font()
cRange := cRange+"A"+cZeile+":J"+cZeile
//
// seem there is a limitation in LEN(cRange) about 256 ???
// when using RANGE() ?!
//
IF LEN(cRange) > 256-16
//
// now use macro &(cRange)
//
cRange := CHR(34)+cRange+CHR(34)
oSheet:range( &(cRange) ):Font():Size := 18
oSheet:range( &(cRange) ):Font():Name := "Times"
oSheet:range( &(cRange) ):Font():Bold := .t.
//
// reset
cRange := ""
ELSE
IF i <> iMax
//
// add "Komma" .. this is what help file say, BUT
// ist does NOT work ( German OS() ? ) so i try
// & Error until it works with ";"
//
cRange := cRange+";"
ELSE
//
// now use macro &(cRange)
//
cRange := CHR(34)+cRange+CHR(34)
oSheet:range( &(cRange) ):Font():Size := 18
oSheet:range( &(cRange) ):Font():Name := "Times"
oSheet:range( &(cRange) ):Font():Bold := .t.
ENDIF
ENDIF
NEXT
ich habe dann alles mögliche ausprobiert und mit dem ";" Semikolon ging es dann
Frage : wie "übersetzt" mann das ?
Code: Alles auswählen
Worksheets("Sheet1").Activate
Range(Cells(1, 1), Cells(5, 3)).Font.Italic = True
gruss by OHR
Jimmy
Jimmy
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: paar Excel Fragen
unter "Verwenden von ActiveX-Steuerelementen in Tabellenblättern" hab ich das gefunden wobei es mir um der "Bildlauf"
die Frage hier ist "was" ist das ActiveWindow ? oExcel:Application:???
Code: Alles auswählen
Set t = Sheet1.CommandButton1.TopLeftCell
With ActiveWindow
.ScrollRow = t.Row
.ScrollColumn = t.Column
End With
gruss by OHR
Jimmy
Jimmy
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: paar Excel Fragen
hi,
Ich habe mal Frontpage gestartet und die Excel Tabelle eingefügt. Das hat er an den Stellen Da ist also ein "Viereck" bei den entsprechenden Artikel ... was ist das ?Martin Altmann hat geschrieben:Opera:IE:
gruss by OHR
Jimmy
Jimmy
-
- Rekursionen-Architekt
- Beiträge: 315
- Registriert: Mo, 16. Okt 2006 13:04
- Wohnort: Region Stuttgart
Re: paar Excel Fragen
Hi Jimmy,
versuch mal deine Daten im CSV-Format zu exportieren, dieses in Unicode umzuwandeln, dann deine Ersatz-Umlaute wie ae, oe, ue durch richtige Umlaute zu ersetzen und die Datei dann mit Excel zu importieren.
Gruß,
Günter
versuch mal deine Daten im CSV-Format zu exportieren, dieses in Unicode umzuwandeln, dann deine Ersatz-Umlaute wie ae, oe, ue durch richtige Umlaute zu ersetzen und die Datei dann mit Excel zu importieren.
Code: Alles auswählen
Pseudocode:
// Umlaute in UFT-16 kodiert
aUmlaut := { chr( 0xE4 ) + chr( 0 ) ,; // ä
chr( 0xF6 ) + chr( 0 ) ,; // ö
chr( 0xFC ) + chr( 0 ) ,; // ü
chr( 0xC4 ) + chr( 0 ) ,; // Ä
chr( 0xD6 ) + chr( 0 ) ,; // Ö
chr( 0xDC ) + chr( 0 ) } // Ü
// ae, oe, ue, Ae Oe, Ue in UFT-16 kodiert
aErsatz := { chr( 0x61 ) + chr( 0 ) + chr( 0x65 ) + chr( 0 ) ,; // ae
chr( 0x6F ) + chr( 0 ) + chr( 0x65 ) + chr( 0 ) ,; // oe
chr( 0x75 ) + chr( 0 ) + chr( 0x65 ) + chr( 0 ) ,; // ue
chr( 0x41 ) + chr( 0 ) + chr( 0x65 ) + chr( 0 ) ,; // Ae
chr( 0x4F ) + chr( 0 ) + chr( 0x65 ) + chr( 0 ) ,; // Oe
chr( 0x55 ) + chr( 0 ) + chr( 0x65 ) + chr( 0 ) } // Ue
// wie bei Notepad
cUTF16_Marker := chr( 0xFF ) + chr( 0xFE )
cCSV := ""
// Daten lesen
go top
do while ! eof()
for i := 1 to fcount()
cCSV += var2char( fieldget( i ) )
if i < fcount()
cCSV += ","
endif
next
cCSV += chr(13)+chr(10) // CRLF
dbskip()
enddo
// in Unicode umwandeln
cCSV := Str2Unicode( cCSV )
// Ersatz-Umlaute durch richtige Umlaute ersetzen
for i := 1 to len( aErsatz )
cCSV := strtran( cCSV, aErsatz[i], aUmlaut[i] )
next
// CSV-Datei schreiben
// nicht mit memowrit() wegen EOF-Zeichen ^Z
// dabei UTF16-Marker vorsetzen
hFile := fcreate( "output.csv" )
fwrite( hFile, cUTF16_Marker + cCSV )
fclose( hFile )
// output.csv mit Excel importieren
Günter
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: paar Excel Fragen
hi,
Danke, ich werde das mal ausprobieren.Günter Beyes hat geschrieben:versuch mal deine Daten im CSV-Format zu exportieren, dieses in Unicode umzuwandeln, dann deine Ersatz-Umlaute wie ae, oe, ue durch richtige Umlaute zu ersetzen und die Datei dann mit Excel zu importieren.
gruss by OHR
Jimmy
Jimmy
-
- Rekursionen-Architekt
- Beiträge: 315
- Registriert: Mo, 16. Okt 2006 13:04
- Wohnort: Region Stuttgart
Re: paar Excel Fragen
Hi Jimmy,
falls Excel Probleme bereiten sollte, probier mal Open Office Calc.
Gruß, Günter
Unicode-CSV-Datei
falls Excel Probleme bereiten sollte, probier mal Open Office Calc.
Gruß, Günter
Unicode-CSV-Datei
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: paar Excel Fragen
uuuuuufff ... dann müsste ich mir auch noch O.O.C. activeX reinziehen ...Günter Beyes hat geschrieben:falls Excel Probleme bereiten sollte, probier mal Open Office Calc.
naja bis Freitag hätte ich ja Zeit um was vorzubereiten ... bevor ich mir das Notebook holen kann.
danke auf jeden Falle für deine Bemühungen und Ideen , mal sehen wie ich das "Puzzle" zusammen bekomme.
gruss by OHR
Jimmy
Jimmy
-
- Rekursionen-Architekt
- Beiträge: 315
- Registriert: Mo, 16. Okt 2006 13:04
- Wohnort: Region Stuttgart
Re: paar Excel Fragen
Hallo Jimmy,
ob Excel das genau so kann wie Open Office, weiß ich nicht. Probiere es aus. Du kannst auf einem deutschen Windows unter Systemsteuerung / Regions- und Sprachoptionen / Sprachen die Unterstützung für ostasiatische Sprachen installieren und dann mit dem deutschen Excel versuchen, obige CSV-Datei zu öffnen. Wenn das so aussieht wie erwartet, brauchst du Open Office hier nicht.
Und um eine chinesisch-sprachige Anwendung auf einem nicht-chinesischen Windows auszuführen, probiere mal die AppLocale-Utility, http://www.microsoft.com/globaldev/tools/apploc.mspx. Die erspart dir den Neustart des Rechners, wenn du die Sprache für Nicht-Unicode-Anwendungen in der Systemsteuerung veränderst. Das heißt, sie simuliert für die Anwendung ein System mit der gewünschten System-Codepage.
Gruß,
Günter
ob Excel das genau so kann wie Open Office, weiß ich nicht. Probiere es aus. Du kannst auf einem deutschen Windows unter Systemsteuerung / Regions- und Sprachoptionen / Sprachen die Unterstützung für ostasiatische Sprachen installieren und dann mit dem deutschen Excel versuchen, obige CSV-Datei zu öffnen. Wenn das so aussieht wie erwartet, brauchst du Open Office hier nicht.
Und um eine chinesisch-sprachige Anwendung auf einem nicht-chinesischen Windows auszuführen, probiere mal die AppLocale-Utility, http://www.microsoft.com/globaldev/tools/apploc.mspx. Die erspart dir den Neustart des Rechners, wenn du die Sprache für Nicht-Unicode-Anwendungen in der Systemsteuerung veränderst. Das heißt, sie simuliert für die Anwendung ein System mit der gewünschten System-Codepage.
Gruß,
Günter
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: paar Excel Fragen
WowGünter Beyes hat geschrieben:Und um eine chinesisch-sprachige Anwendung auf einem nicht-chinesischen Windows auszuführen, probiere mal die AppLocale-Utility, http://www.microsoft.com/globaldev/tools/apploc.mspx.
wo gräbst du nur solche Sachen aus ... ja das scheint genau mein "Problem" zu treffen.
ich kann mich nur bedanken für deine Hilfe ohne die ich oft gar nicht weiter käme.
melde mich mit dem Thema zurück sobald ich weiter Ergebnisse habe (Wochenende)
gruss by OHR
Jimmy
Jimmy
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: paar Excel Fragen
hi,
normalerweise arbeite ich auf dem Sheet 1, wie bekomme ich Daten von Sheet1 auf Sheet 2 ?
es gibt doch bei Excel so was wie "Kommentare" ... wie "erkenne" ich die und wie komme ich da "ran" ?
da ich das mit dem "Kommentar" nicht weiss die Zusatz Frage ob pro Excel "Cell" immer nur ein VALTYPE() vorkommt ?
normalerweise arbeite ich auf dem Sheet 1, wie bekomme ich Daten von Sheet1 auf Sheet 2 ?
es gibt doch bei Excel so was wie "Kommentare" ... wie "erkenne" ich die und wie komme ich da "ran" ?
da ich das mit dem "Kommentar" nicht weiss die Zusatz Frage ob pro Excel "Cell" immer nur ein VALTYPE() vorkommt ?
gruss by OHR
Jimmy
Jimmy