uses
System.Reflection, Excel, System.Data.OleDb, ComObj,
System.Collections, System.ComponentModel,
System.Data, System.Drawing, System.Web, System.Web.SessionState,
System.Web.UI, System.Web.UI.WebControls, System.Web.UI.HtmlControls,
Borland.Vcl.SysUtils;
function GetExcelWorkSheet(pathName:
string; fileName:
string; workSheetNumber:integer) : DataSet;
begin
ExcelConnection := OleDbConnection.Create('
Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+pathName+'
\'+fileName+'
;Extended Properties=Excel 8.0;');
ExcelConnection.Open();
ExcelCommand := OleDbCommand.Create;
ExcelCommand.Connection := ExcelConnection;
restrictions[0] :=
nil;
restrictions[1] :=
nil;
restrictions[2] :=
nil;
restrictions[3] := '
TABLE';
// only user tables
ExcelSheets := ExcelConnection.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, restrictions);
SpreadSheetName := '
['+ExcelSheets.Rows[workSheetNumber]['
TABLE_NAME'].ToString()+'
]';
ExcelDataSet := DataSet.Create;
// DataSet ExcelDataSet = new DataSet();
ExcelCommand.CommandText := '
SELECT [A], [B], [C] FROM' +SpreadSheetName+ '
WHERE [A]>15 AND [A]>16';
// Abfrage, die nur bestimmte Datensätze auswählt, funktioniert wie SQL
ExcelAdapter := OleDbDataAdapter.Create(ExcelCommand);
ExcelAdapter.Fill(ExcelDataSet);
ExcelConnection.Close();
Result := ExcelDataSet;
//return ExcelDataSet;
end;
function Get_DataSet : DataSet;
begin
DataSet := GetExcelWorksheet('
C:\abc\def\','
ghi.xls',1);
// Die Ziffer hinter dem letzten Komma bezeichnet die Arbeitsmappe. EXCEL fängt bei 1 an zu zählen. Steht eine 0, wird die letzte Mappe aktiviert.
end;