|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
EXPORTER UN DATASET VERS EXCEL VIA XML
Information sur la source
Description
You can create excel worksheet using XML is a easier ways to work with excel files but works only with Office 2003 up
Source
- procedure TfrmCBSSReport.Dataset2XLSXML(DataSet:TDataSet; sFile:String);
- Const
- sHeadXML = '<?xml version="1.0" encoding="UTF-8"?>';
- sWorkBookBegin = '<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"'+
- ' xmlns:x="urn:schemas-microsoft-com:office:excel"'+
- ' xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"'+
- ' xmlns:html="http://www.w3.org/TR/REC-html40">';
- sEndWorkBook = '</Workbook>';
- sEndWorkSheet = ' </Worksheet>';
- sTable = ' <Table>';
- sEndTable = ' </Table>';
- sRow = ' <Row>';
- sEndRow = ' </Row>';
- sCell = ' <Cell>';
- sEndCell = '</Cell>';
-
- Var
- sXlsXml:String;
- iColumn:Integer;
- reXLSXML:TStringList;
- ftXLSXML:TextFile;
-
-
- begin
- //log file
- AssignFile(ftXLSXML,sFile);
- {$I-}
- Reset(ftXLSXML);
- {$I+}
- if IOResult <> 0 then
- begin
- Rewrite(ftXLSXML);
- end;
-
- Append(ftXLSXML);
- Writeln(ftXLSXML,sHeadXML);
- Flush(ftXLSXML);
-
- Append(ftXLSXML);
- Writeln(ftXLSXML,sWorkBookBegin);
- Flush(ftXLSXML);
-
- Append(ftXLSXML);
- Writeln(ftXLSXML,' <Worksheet ss:Name="Table1">');
- Flush(ftXLSXML);
-
- //Add columns
- For iColumn:=0 to DataSet.FieldCount -1 do
- begin
- sXlsXml := sXlsXml + ' <Column ss:Index="'+IntToStr(iColumn+1)+'" ss:AutoFitWidth="0" ss:Width="110"/>';
- end;
- Append(ftXLSXML);
- Writeln(ftXLSXML,sXlsXml+sRow);
- Flush(ftXLSXML);
-
-
- //Add Cells definitions (Titles)
- For iColumn:=0 to DataSet.FieldCount -1 do
- begin
- Append(ftXLSXML);
- Writeln(ftXLSXML,sCell+'<Data ss:Type="String">'+DataSet.Fields[iColumn].FieldName+'</Data>'+sEndCell);
- Flush(ftXLSXML);
- end;
- Append(ftXLSXML);
- Writeln(ftXLSXML,sEndRow);
- Flush(ftXLSXML);
-
- While Not DataSet.Eof do
- begin
- Append(ftXLSXML);
- Writeln(ftXLSXML,sRow);
- Flush(ftXLSXML);
-
- //Add each value by field
- For iColumn:=0 to DataSet.FieldCount -1 do
- begin
- Append(ftXLSXML);
- Writeln(ftXLSXML,sCell+'<Data ss:Type="String">'+DataSet.FieldByName(DataSet.Fields[iColumn].FieldName).AsString +'</Data>'+sEndCell);
- Flush(ftXLSXML);
- end;
- Append(ftXLSXML);
- Writeln(ftXLSXML,sEndRow);
- Flush(ftXLSXML);
-
- DataSet.Next;
- end;
-
- Append(ftXLSXML);
- Writeln(ftXLSXML,sEndTable);
- Flush(ftXLSXML);
-
- Append(ftXLSXML);
- Writeln(ftXLSXML,sEndWorkSheet);
- Flush(ftXLSXML);
-
- Append(ftXLSXML);
- Writeln(ftXLSXML,sEndWorkbook);
- Flush(ftXLSXML);
-
- CloseFile(ftXLSXML);
-
-
- { another way to do
- reXLSXML := TStringList.Create;
- reXLSXML.PlainText := True;
-
- reXLSXML.Add(sHeadXML);
- reXLSXML.Add(sWorkBookBegin);
- reXLSXML.Add(' <Worksheet ss:Name="Table1">');
- reXLSXML.Add(sTable);
-
- //Add columns
- For iColumn:=0 to DataSet.FieldCount -1 do
- begin
- sXlsXml := sXlsXml + ' <Column ss:Index="'+IntToStr(iColumn+1)+'" ss:AutoFitWidth="0" ss:Width="110"/>';
- end;
- reXLSXML.Add(sXlsXml+sRow);
-
- //Add Cells definitions (Titles)
- For iColumn:=0 to DataSet.FieldCount -1 do
- begin
- reXLSXML.Add(sCell+'<Data ss:Type="String">'+DataSet.Fields[iColumn].FieldName+'</Data>'+sEndCell);
- end;
- reXLSXML.Add(sEndRow);
-
- While Not DataSet.Eof do
- begin
- reXLSXML.Add(sRow);
- //Add each value by field
- For iColumn:=0 to DataSet.FieldCount -1 do
- begin //'+getDataType(DataSet.Fields[iColumn].DataType)+'
- reXLSXML.Add(sCell+'<Data ss:Type="String">'+DataSet.FieldByName(DataSet.Fields[iColumn].FieldName).AsString +'</Data>'+sEndCell);
- end;
- reXLSXML.Add(sEndRow);
- DataSet.Next;
- end;
-
- reXLSXML.Add(sEndTable);
- reXLSXML.Add(sEndWorkSheet);
- reXLSXML.Add(sEndWorkbook);
-
- reXLSXML.SaveToFile(sFile);
- reXLSXML.Free;
- }
- end;
-
- procedure TfrmCBSSReport.SpeedButton1Click(Sender: TObject);
- begin
- Dataset2XLSXML(query1,'c:\test.xls');
- end;
-
procedure TfrmCBSSReport.Dataset2XLSXML(DataSet:TDataSet; sFile:String);
Const
sHeadXML = '<?xml version="1.0" encoding="UTF-8"?>';
sWorkBookBegin = '<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"'+
' xmlns:x="urn:schemas-microsoft-com:office:excel"'+
' xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"'+
' xmlns:html="http://www.w3.org/TR/REC-html40">';
sEndWorkBook = '</Workbook>';
sEndWorkSheet = ' </Worksheet>';
sTable = ' <Table>';
sEndTable = ' </Table>';
sRow = ' <Row>';
sEndRow = ' </Row>';
sCell = ' <Cell>';
sEndCell = '</Cell>';
Var
sXlsXml:String;
iColumn:Integer;
reXLSXML:TStringList;
ftXLSXML:TextFile;
begin
//log file
AssignFile(ftXLSXML,sFile);
{$I-}
Reset(ftXLSXML);
{$I+}
if IOResult <> 0 then
begin
Rewrite(ftXLSXML);
end;
Append(ftXLSXML);
Writeln(ftXLSXML,sHeadXML);
Flush(ftXLSXML);
Append(ftXLSXML);
Writeln(ftXLSXML,sWorkBookBegin);
Flush(ftXLSXML);
Append(ftXLSXML);
Writeln(ftXLSXML,' <Worksheet ss:Name="Table1">');
Flush(ftXLSXML);
//Add columns
For iColumn:=0 to DataSet.FieldCount -1 do
begin
sXlsXml := sXlsXml + ' <Column ss:Index="'+IntToStr(iColumn+1)+'" ss:AutoFitWidth="0" ss:Width="110"/>';
end;
Append(ftXLSXML);
Writeln(ftXLSXML,sXlsXml+sRow);
Flush(ftXLSXML);
//Add Cells definitions (Titles)
For iColumn:=0 to DataSet.FieldCount -1 do
begin
Append(ftXLSXML);
Writeln(ftXLSXML,sCell+'<Data ss:Type="String">'+DataSet.Fields[iColumn].FieldName+'</Data>'+sEndCell);
Flush(ftXLSXML);
end;
Append(ftXLSXML);
Writeln(ftXLSXML,sEndRow);
Flush(ftXLSXML);
While Not DataSet.Eof do
begin
Append(ftXLSXML);
Writeln(ftXLSXML,sRow);
Flush(ftXLSXML);
//Add each value by field
For iColumn:=0 to DataSet.FieldCount -1 do
begin
Append(ftXLSXML);
Writeln(ftXLSXML,sCell+'<Data ss:Type="String">'+DataSet.FieldByName(DataSet.Fields[iColumn].FieldName).AsString +'</Data>'+sEndCell);
Flush(ftXLSXML);
end;
Append(ftXLSXML);
Writeln(ftXLSXML,sEndRow);
Flush(ftXLSXML);
DataSet.Next;
end;
Append(ftXLSXML);
Writeln(ftXLSXML,sEndTable);
Flush(ftXLSXML);
Append(ftXLSXML);
Writeln(ftXLSXML,sEndWorkSheet);
Flush(ftXLSXML);
Append(ftXLSXML);
Writeln(ftXLSXML,sEndWorkbook);
Flush(ftXLSXML);
CloseFile(ftXLSXML);
{ another way to do
reXLSXML := TStringList.Create;
reXLSXML.PlainText := True;
reXLSXML.Add(sHeadXML);
reXLSXML.Add(sWorkBookBegin);
reXLSXML.Add(' <Worksheet ss:Name="Table1">');
reXLSXML.Add(sTable);
//Add columns
For iColumn:=0 to DataSet.FieldCount -1 do
begin
sXlsXml := sXlsXml + ' <Column ss:Index="'+IntToStr(iColumn+1)+'" ss:AutoFitWidth="0" ss:Width="110"/>';
end;
reXLSXML.Add(sXlsXml+sRow);
//Add Cells definitions (Titles)
For iColumn:=0 to DataSet.FieldCount -1 do
begin
reXLSXML.Add(sCell+'<Data ss:Type="String">'+DataSet.Fields[iColumn].FieldName+'</Data>'+sEndCell);
end;
reXLSXML.Add(sEndRow);
While Not DataSet.Eof do
begin
reXLSXML.Add(sRow);
//Add each value by field
For iColumn:=0 to DataSet.FieldCount -1 do
begin //'+getDataType(DataSet.Fields[iColumn].DataType)+'
reXLSXML.Add(sCell+'<Data ss:Type="String">'+DataSet.FieldByName(DataSet.Fields[iColumn].FieldName).AsString +'</Data>'+sEndCell);
end;
reXLSXML.Add(sEndRow);
DataSet.Next;
end;
reXLSXML.Add(sEndTable);
reXLSXML.Add(sEndWorkSheet);
reXLSXML.Add(sEndWorkbook);
reXLSXML.SaveToFile(sFile);
reXLSXML.Free;
}
end;
procedure TfrmCBSSReport.SpeedButton1Click(Sender: TObject);
begin
Dataset2XLSXML(query1,'c:\test.xls');
end;
Sources du même auteur
Sources de la même categorie
Sources en rapport avec celle ci
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Export CSV [ par Wriggles ]
Bonjour, mon problème est le suivant. J'ai un ensemble à partir duquel je génère un fichier au format csv. Je lance ensuite un shellexecute pour l'ouv
import/export delphi excel [ par chec ]
[BDE-Excel] Export [ par Isabelle31 ]
Bonjour tout le monde!!Voila mon problème. Je veux faire des export de requêtes (les résultat de mes requêtes faites via BDE) pour
transformation XML -> dataset [ par metos57 ]
Bonjour, j'utilise un le composant tXMLTranform pour recupérer dans un dataset des données venats d'un flux XML. Le source fonction parfait
Export csv vers Excel EOLEERROR [ par couf ]
Bonjour à Tous,J'ai besoin de lancer automatiquement l'export d'un ficier csv pour le convertir en EXCEL.J'ai trouvé un sur le forum le topic suivant:
Export DBGrid vers Excel [ par grandyaka54 ]
Bonjour,J'ai créé un bouton me permettant d'exporter le contenu de mon DBGrid vers Excel via un fichier.csv.Le soucis se passe au moment de lire de fi
DATASET -> XML [ par stailer ]
Salut,Dans PHPMyadmin pour ceux qui connaissent, on peut exporter les données au format XML. Ensuite dans Delphi on peut se lier à ce fichier XML et m
envoyer un fichier sur un serveur http [ par veudAbajour ]
Bonjour, je suis novice en développement DELPHI, actuellement je développe ma première application,et je n'ai pas forcément fais au plus simple. Voila
Comment envoyer cette commande Excel avec Delphi [ par breiz35 ]
Worksheets("Sheet1").Copy After:=Worksheets("Sheet3")Merci pour vos réponses.carpe diem
clientdataset et créaion dynamique [ par shakeoff1 ]
est ce que quelqu'un pourrais jeter un oeil sur ce code et meire si quelque chose cloche?pour info il s'agit d'une partie de code de génération dynami
|
Téléchargements
Logiciels à télécharger sur le même thème :
|