NativeExcelファイルの読み込み
5994 ワード
class function T_EShopDataBill.ImportData(const AFileName: String;
AList: T_EShopDataModelList; var AErr: string): Boolean;
var
Book: IXLSWorkbook;
ws: IXLSWorksheet;
i : Integer;
nOrderIDRow,nTrackNoRow : Integer;
obj : T_EShopDataModel;
tmpIden,tmpTrackNo : String;
sSql : String;
tmpQry : TADOQuery;
begin
Book := TXLSWorkbook.Create ;
try
i := Book.Open(AFileName);
ws := Book.WorkSheets[1];
if ws.UsedRange.Rows.Count = 0 then
Exit;
nOrderIDRow := 0;
nTrackNoRow := 0;
for I := 1 to ws.UsedRange.Rows[1].Count -1 do
begin
if nOrderIDRow = 0 then
if CompareText( VarToStr( ws.UsedRange.Cells[1,i].Value),' ') = 0 then
nOrderIDRow := i;
if nTrackNoRow = 0 then
if CompareText( VarToStr( ws.UsedRange.Cells[1,i].Value),' ') = 0 then
nTrackNoRow := i;
if (nOrderIDRow > 0 ) AND (nTrackNoRow > 0) then
Break;
end;
// ShowInformationMsg(inttostr(nOrderIDRow)+' '+IntTostr(nTrackNoRow));
if (nOrderIDRow = 0) or (nTrackNoRow = 0) then
Exit;
for i := 2 to ws.UsedRange.Rows.Count do
begin
with ws.UsedRange do
begin
if VarIsNull(Cells[i,nTrackNoRow].Value) then
Break;
if VarIsNull(Cells[i,nOrderIDRow].Value) then
Break;
end;
tmpTrackNo := ws.UsedRange.Cells[i,nTrackNoRow].Value;
tmpIden := ws.UsedRange.Cells[i,nOrderIDRow].Value;
if ( Trim(tmpTrackNo) = '') or (tmpIden = '') then
begin
Break;
end;
obj := T_EShopDataModel.Create;
obj.fOrderID := tmpIden;
obj.fTrackNo := tmpTrackNo;
AList.List.Add(obj);
end;
finally
Book.Close;
end;
end