Adressen Export

Script Beispiel für Adressen Export in Excel.

program adressen_export;
const
  // SheetType
  xlChart = -4109;
  xlWorksheet = -4167;
  // WBATemplate
  xlWBATWorksheet = -4167;
  xlWBATChart = -4109;
  // Page Setup
  xlPortrait = 1;
  xlLandscape = 2;
  xlPaperA4 = 9;
  // Format Cells
  xlBottom = -4107;
  xlLeft = -4131;
  xlRight = -4152;
  xlTop = -4160;
  // Text Alignment
  xlHAlignCenter = -4108;
  xlVAlignCenter = -4108;
  xlVAlignTop = -4160;
  // Cell Borders
  xlThick = 4;
  xlThin = 2;
var
  XlsApp, XlsWorkBook, XlsWorkSheet: Variant;
  Dateiname,Verzeichnis: String;
  nAbZeile,i:integer;
begin
  
  // Geschrieben wird ab Zeile 2 (in der ersten stehen die Überschriften)
  nAbZeile := 2;

  // Wir starten Excel im Hintergrund
  XlsApp := CreateOleObject('Excel.Application');
  try
	  XlsApp.Workbooks.Add;
	  XlsApp.Visible := False;
	  XlsWorkbook  := XlsApp.Workbooks[1];
	  XlsWorksheet := Xlsworkbook.Worksheets[1];

	  oQuery.SQL.Text := 'SELECT IF(a.RGanschriftID>0,ad.anschrift,a.rga) AS Anschrift,';
	  oQuery.SQL.Add(' a.*');
	  oQuery.SQL.Add(' FROM adressen a LEFT OUTER JOIN adrdata1 ad ON ');
	  oQuery.SQL.Add(' (a.RGanschriftID>0)');
	  oQuery.SQL.Add(' AND (a.RGanschriftID=ad.lieferanschriftid)');
	  oQuery.SQL.Add(' AND (a.adrint=ad.adrint)');
	  oQuery.SQL.Add(' WHERE a.aktiv ORDER BY a.kndnr');

	  oQuery.Open;
	  
	  XlsWorksheet.Cells[1,'A'].Value := 'KndNr';
	  XlsWorksheet.Cells[1,'B'].Value := 'Match';
	  XlsWorksheet.Cells[1,'C'].Value := 'EMail';
	  XlsWorksheet.Cells[1,'D'].Value := 'Anschrift';

	  XlsApp.Range('A1:D1').Select;
	  XlsApp.Selection.Font.Bold := true;
	  XlsApp.Selection.Interior.ColorIndex := 1;
	  XlsApp.Selection.Interior.Pattern := 1; //xlSolid
	  XlsApp.Selection.Font.ColorIndex := 2;

	  XlsApp.Columns('B').ColumnWidth := 50;
	  XlsApp.Columns('C').ColumnWidth := 30;
	  XlsApp.Columns('D').ColumnWidth := 60;
	  
	  XlsApp.Columns('A').VerticalAlignment := xlVAlignTop;
	  XlsApp.Columns('B').VerticalAlignment := xlVAlignTop;
	  XlsApp.Columns('C').VerticalAlignment := xlVAlignTop;
	  XlsApp.Columns('D').VerticalAlignment := xlVAlignTop;
	  
	  
	  XlsApp.Columns('A').select;
	  XlsApp.Selection.NumberFormat := '@';
	  i := nAbZeile;

	  oQuery.Open;

	  while not oQuery.eof do
	  begin
		XlsWorksheet.Cells[i,'A'].Value := oQuery.FieldByname('kndnr').AsString;
		XlsWorksheet.Cells[i,'B'].Value := oQuery.FieldByname('Match').AsString;
		XlsWorksheet.Cells[i,'C'].Value := oQuery.FieldByname('Email').AsString;
		XlsWorksheet.Cells[i,'D'].Value := trim(oQuery.FieldByname('anschrift').AsString);

		writeln(oQuery.FieldByname('kndnr').AsString);
		oQuery.Next;
		i := i+1;

		application.processmessages;
	  end;

	  writeln('Ausgabe beendet.');  // im Editor

	  ShowMeldung('Ausgabe beendet');  // Dialog 

	  XlsApp.Visible := True;

  except

    ShowMeldung('Fehler');
    XlsApp.Quit;
    // Globale Variable unassigned
    XlsApp := Unassigned;
    XlsWorkbook := Unassigned;
    // excel.exe im Taskmanager als Prozess immer noch vorhanden
    XlsWorksheet := Unassigned;
    // Jetzt ist excel.exe im Taskmanager als Prozess verschwunden
    RaiseLastException;
  end;


end.