StringGridをExcelへエクスポート

解決


のす  2007-03-12 23:01:31  No: 25287

Delphi6,Windows XP,Excel97 SR2
----------------------------------
StringGridの内容をExcelでファイルしようとしています。
StringGridは3行目までがString(タイトル)。4行目からDoubleで測定データを5万行×20列(データ数)程度読み込んでいます。
以下のコードでファイルは出来ているのですが,数値としては認識されておりません(=グラフ化できない)。良い方法ありましたらご教授お願いいたします。

procedure TmainF.XlsWriteCellLabel(XlsStream: TStream; const ACol,
  ARow: Word; const AValue: string);
var
  L: Word;
const
  {$J+}
  CXlsLabel: array[0..5] of Word = ($204, 0, 0, 0, 0, 0);
  {$J-}
begin
  L := Length(AValue);
  CXlsLabel[1] := 8 + L;
  CXlsLabel[2] := ARow;
  CXlsLabel[3] := ACol;
  CXlsLabel[5] := L;
  XlsStream.WriteBuffer(CXlsLabel, SizeOf(CXlsLabel));
  XlsStream.WriteBuffer(Pointer(AValue)^, L);
end;

function TmainF.SaveAsExcelFile(AGrid: TStringGrid;
  AFileName: string): Boolean;
const
  {$J+} CXlsBof: array[0..5] of Word = ($809, 8, 00, $10, 0, 0); {$J-}
  CXlsEof: array[0..1] of Word = ($0A, 00);
var
  FStream: TFileStream;
  I, J: Integer;
begin
  Result := False;
  FStream := TFileStream.Create(PChar(AFileName), fmCreate or fmOpenWrite);
  try
    CXlsBof[4] := 0;
    FStream.WriteBuffer(CXlsBof, SizeOf(CXlsBof));
    for i := 0 to AGrid.ColCount - 1 do
      for j := 0 to AGrid.RowCount - 1 do
        XlsWriteCellLabel(FStream, I, J, AGrid.cells[i, j]);
    FStream.WriteBuffer(CXlsEof, SizeOf(CXlsEof));
    Result := True;
  finally
    FStream.Free;
  end;
end;


たるじあ  2007-03-13 03:23:45  No: 25288

>以下のコードでファイルは出来ているのですが,...
出来ている(丸写し)だけじゃダメ、自分でコードの意味を理解しなきゃ。

const
  {$J+}AryWord: array[0..4] of WORD = (515, 14, 0, 0, 0);{$J-}
var
  V: Double;
  Code: Integer; 
  ...........
begin
  ...........
   Val(AGrid.cells[i, j], V, Code);
   if Code = 0 then begin
     AryWord[2] := j;
     AryWord[3] := i;
     FStream.Write(AryWord, 10);
     FStream.Write(V, 8);
   end else begin
     XlsWriteCellLabel(FStream, I, J, AGrid.cells[i, j]);
   end;
  .........
end;


のす  2007-03-13 04:50:45  No: 25289

ありがとうございました!


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加