'000001'をEXCELに書き込むと、強制的に '1' になってしまうのですが、'000001'の状態で書き込めないものでしょうか?
書き込むセルを文字型にすればOK
文字型に任意のColを変更するには、どうしたらよいでしょうか?
Delphi3で、EXCELは2000です。
procedure TFrmSeibi.SpeedButton11Click(Sender: TObject);
var ROW,COL,I:Integer;
QRY_012:TQuery;
begin
Excel := CreateOleObject('Excel.Application');
Excel.Visible:= True;
WorkBook := Excel.WorkBooks.Add;
WorkSheet := WorkBook.WorkSheets[1];
WorkSheet.Activate;
if not Database1.Connected then Database1.Open;
if Database1.InTransaction then Database1.Commit;
QRY_012 := TQuery.Create(Self);
with QRY_012 do begin
DatabaseName := Database1.DatabaseName;
CLOSE;
SQL.CLEAR;
SQL.Add('SELECT * FROM NAIYOU');
RequestLive:=FALSE;
if not prepared then prepare;
OPen;
LAST;
FIRST;
if RecordCount>0 then begin
Excel.ActiveSheet.Cells[1,1].Value :='作業NO';
Excel.ActiveSheet.Cells[1,2].Value :='作業内容';
I:=1;
repeat
I:=(I+1);
Excel.ActiveSheet.Cells[I,1].Value :=FieldByName('作業NO').AsString;
Excel.ActiveSheet.Cells[I,2].Value :=FieldByName('内容').AsString;
NEXT;
until EOF;
end;
CLOSE;
SQL.CLEAR;
FRee;
end;
end;
というような単純な書き方だと、"["+Fields[I].asString+"]" にでもしない限り、0001が1になってしまうのです。
Excelのマクロを記録してみると、
Selection.NumberFormatLocal = "@"
の様に記録されました。
これを
Excel.ActiveSheet.Cells[1,1].NumberFormatLocal = "@"
の様に書けば良いのでは。
Excel.ActiveSheet.Cells[I,1].NumberFormatLocal:='@';
と記述することにより、思い通りの結果を得られました。
OHtaさん。ありがとうございました。
ツイート | ![]() |