Q&A

  • 엑셀 셀의 max를 읽어 오는데 공백 앞까지만 읽어오는데 이유를 잘 모르겠습니다.(쏘스 포함)
조잡하지만 전 풀어야 되는 문제이기에 올립니다..
부탁 드리겠습니다.
.xls 파일을 읽을때 공백 앞까지만 읽혀 지네요..
공백이 있더라도 그 공백 뒤에는 분명히 데이타가 있는데 말입니다.
조언 부탁 드리겠습니다..
엑셀의 최대셀값을 공백앞까지만 세어서 그런건지..
잘 모르겠습니다.
꼬옥 고수님들의 고견을 들려 주십시요.. 부탁드리겠습니다.

<!--CodeS-->
  cobCharType.Visible  := False;
  sbtnFileLoad.Visible := False;
  pnlSelRead.Visible   := False;

  OpenDialog1.InitialDir := ExtractFilePath(ParamStr(0));
  OpenDialog1.FilterIndex := 2;
  if OpenDialog1.Execute then
  begin
     m_File := OpenDialog1.FileName;
     try
        ExcelApp := CreateOLEObject('Excel.Application');
     except
        ShowMessage('Excel이 설치되어 있지 않습니다!!!');
        Exit;
     end;

   Try
       ExcelApp.Visible         := False;
       ExcelApp.DisplayAlerts   := False;

       ExcelBook   :=  ExcelApp.WorkBooks.Open(m_File);

       ExcelBook   :=  ExcelApp.WorkBooks.item[1];
       ExcelSheet  :=  ExcelBook.Worksheets.Item[1];

       if ExcelSheet.UsedRange.Rows.count > 1 then
          stgSMSData.RowCount  :=  ExcelSheet.UsedRange.Rows.count + 1;

       if ExcelSheet.Cells.CurrentRegion.Columns.Count > 1 then
          stgSMSData.ColCount  :=  ExcelSheet.Cells.CurrentRegion.Columns.Count + 1;

       ProgressBar1.Max :=  ExcelSheet.UsedRange.Rows.count;
       ProgressBar1.Visible := True;

       for  j  :=  1 to  stgSMSData.RowCount - 1  do
       begin
          for i := 2 to  stgSMSData.ColCount - 1  do
          begin
              if (j = 1) then
              begin
                 stgSMSData.Cells[i ,0] := IntToStr(i);
                 stgSMSData.ColWidths[i] := 65;
              end;
              stgSMSData.Cells[i,j] := VarToStr(ExcelSheet.Cells[j,i-1]);

          end;
          ProgressBar1.Position := j;
       end;

       ExcelApp.WorkBooks.Close;
       ExcelApp.quit;
       ExcelApp := unassigned;
   Except
     on err : exception do
     begin
         ExcelApp.WorkBooks.Close;
         ExcelApp.quit;
         ExcelApp := unassigned;
         ShowMessage('작업이 취소되었습니다. Data확인요망-'+err.message);
     end;
   end;

   ProgressBar1.Visible := False;
  end;
<!--CodeE-->
0  COMMENTS