zoukankan      html  css  js  c++  java
  • NativeExcel 读取文件

    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
  • 相关阅读:
    遗传算法
    模拟退火算法
    分支限界法(一)(转)
    (操作Excel 2007以後)Open XML SDK 2.0 for Microsoft Office
    c#接口和抽象类的区别
    抽象工厂模式
    乐在其中设计模式(C#)系列文章索引
    VB6.0 生成 XML方法
    处理一些简单的客户端脚本(2)
    抽象类
  • 原文地址:https://www.cnblogs.com/starluck/p/3842741.html
Copyright © 2011-2022 走看看