AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Excel -> Text in Spalten

Ein Thema von Codewalker · begonnen am 19. Okt 2006 · letzter Beitrag vom 20. Okt 2006
Antwort Antwort
Benutzerbild von Codewalker
Codewalker

Registriert seit: 18. Nov 2005
Ort: Ratingen
945 Beiträge
 
Delphi XE2 Professional
 
#1

Excel -> Text in Spalten

  Alt 19. Okt 2006, 11:57
Hallo zusammen.

Ich möchte aus Delphi heraus Daten als CSV exportieren (hab ich geschafft), in Excel öffnen (auch geschafft). DIese will ich jetzt in Spalten aufteilen (Befehl: Daten -> Text in Spalten).
Wie kann ich das von Delphi aus automatisieren? Über die Excel-Komponenten bin ich nicht weitergekommen. Alternativ würde mir auch helfen, den Inhalt eines Memos als Makro in Excel ausführen zu können (ohne das dieser irgendwo im VB-Editor eingegeben werden muss).
Eine Idee, wie ich eines von beiden anstellen kann?
  Mit Zitat antworten Zitat
Benutzerbild von Codewalker
Codewalker

Registriert seit: 18. Nov 2005
Ort: Ratingen
945 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Excel -> Text in Spalten

  Alt 20. Okt 2006, 08:20
Ich habe einfach mal versucht, etwas zu stande zu bekommen. Leider scheitere ich daran, dass ich meistens nur eine IDispatch-Schnittstelle zur Verfügung habe. Das Öffnen der Datei geht super. Danach versuche ich Spalte A auszuwählen und zu sortieren. Leider schaffe ich es nicht, die Funktion TextToColumns aufzurufen. Eigentlich sollte die an einer Selection hängen, aber bis da komme ich nicht. Was muss ich tun?

Delphi-Quellcode:
 
var i: Integer;
 Delimiter: Char;
         S: String;
         j: Integer;
      list: TStringList;
 xTrue,XFalse,Delim: OleVariant;
 LCID: Integer;
 Selection: Variant;
 xRange: Variant;
begin
 If not SaveDialog.Execute then Exit;
 xTrue:=True;
 XFalse:=False;
 LCID := GetUserDefaultLCID;
 Case SaveDialog.FilterIndex of
  1:Delimiter:=',';
  2:Delimiter:=#9;
 End;
 Delim:=Delimiter;

/// Hier steht eigentlich das Erstellen und Speichern der CSV-Liste.... das spare ich mir aber hier mal

ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Open(SaveDialog.FileName, xTrue, xFalse, EmptyParam, EmptyParam, xFalse, xTrue, EmptyParam, Delim,xTrue,xFalse,EmptyParam,EmptyParam,xTrue,xFalse,LCID));

xRange:=ExcelWorksheet1.Range['A1','A30000'].Select;

ExcelApplication1.Selection[LCID].TextToColumns(xRange,xlDelimited,xlDoubleQuote,xFalse,xTrue,xFalse,xTrue,xFalse,xFalse);
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Excel -> Text in Spalten

  Alt 20. Okt 2006, 08:35
Guten Morgen Thomas,

warum willst du unbedingt deine Daten zuerst in einen CSV-String umformen um sie anschließend von Excel wieder in eine Zellenstruktur zerlegen zu lassen? Du kannst deine Daten doch direkt in die Zellen exportieren.

Delphi-Quellcode:
var
  s: String;
  iRow, iCol: Integer;
begin
  s := 'dp';
  iCol := 1;
  iRow := 2;
  Sheet.Cells.Item[row, col].Value2 := s;
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von Codewalker
Codewalker

Registriert seit: 18. Nov 2005
Ort: Ratingen
945 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Excel -> Text in Spalten

  Alt 20. Okt 2006, 08:51
Wie kommst du denn an das Sheet? Das will bei mir nicht - ich bekomme immer einen allgemeinen OLE-Fehler. Hast du Häppchen Quellcode dazu?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Excel -> Text in Spalten

  Alt 20. Okt 2006, 08:56
In deinem Code-Fragment verwendest du ExcelWorkSheet1, bei mir habe ich es Sheet genannt - ist aber das gleiche. Oder liegt da dein Problem?
  Mit Zitat antworten Zitat
Benutzerbild von Codewalker
Codewalker

Registriert seit: 18. Nov 2005
Ort: Ratingen
945 Beiträge
 
Delphi XE2 Professional
 
#6

Re: Excel -> Text in Spalten

  Alt 20. Okt 2006, 08:58
Ja, ich kann das ExcelWorksheet nicht mit ConnectTo verbinden, weil ich nicht weiß, wie ich an das _Sheet-Objekt komme.
  Mit Zitat antworten Zitat
Benutzerbild von Codewalker
Codewalker

Registriert seit: 18. Nov 2005
Ort: Ratingen
945 Beiträge
 
Delphi XE2 Professional
 
#7

Re: Excel -> Text in Spalten

  Alt 20. Okt 2006, 09:01
'Ich habs jetzt anders gemacht (wie du gesagt hattest). Ich danke die schon mal für den guten Tipp und die Hilfe

Delphi-Quellcode:
procedure TMainframe.ExportToExcel(Sender: TObject);
var i,j: Integer;
   ExcelApp: OLEVariant;
const
  xlWBATWorksheet = -4167;
  xlWBATChart = -4109;

begin
try
    ExcelApp := GetActiveOleObject('Excel.Application');
  except
    try
      // If no instance of Word is running, try to Create a new Excel Object
      ExcelApp := CreateOleObject('Excel.Application');
    except
      ShowMessage('Cannot start Excel/Excel not installed ?');
      Exit;
    end;
end;
  ExcelApp.Workbooks.Add(xlWBatWorkSheet); // Add a new Workbook, Neue Arbeitsmappe öffnen

 for I := 0 to ListView1.Columns.Count - 1 do
  ExcelApp.Cells[1,i+1].Value:=ListView1.Column[i].Caption;

 for I := 0 to ListView1.Items.Count - 1 do
  for j := 0 to ListView1.Columns.Count - 1 do begin
   If j = 0
    then ExcelApp.Cells[i+2,j+1].Value:=ListView1.Items[i].Caption
    else ExcelApp.Cells[i+2,j+1].Value:=ListView1.Items[i].SubItems[j-1];
 end;
 ExcelApp.Visible := True;
end;
Trotzdem wüsste ich für die Zukunft gern, wie man ein Worksheet verbindet.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: Excel -> Text in Spalten

  Alt 20. Okt 2006, 09:09
Da gibt es die properties ActiveWorkBook bzw. ActiveSheet, aber auch den Zugriff über die Liste: wb.Sheets.Item[i]

Grüße
  Mit Zitat antworten Zitat
Benutzerbild von Codewalker
Codewalker

Registriert seit: 18. Nov 2005
Ort: Ratingen
945 Beiträge
 
Delphi XE2 Professional
 
#9

Re: Excel -> Text in Spalten

  Alt 20. Okt 2006, 09:10
Funktioniert!

Danke für die superschnelle Hilfe
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz