SaveDialog如何寫StringGrid的存檔 |
答題得分者是:christie
|
lovemari
中階會員 發表:134 回覆:224 積分:76 註冊:2005-08-18 發送簡訊給我 |
|||||||||
max5020
資深會員 發表:30 回覆:277 積分:321 註冊:2003-06-04 發送簡訊給我 |
|||||||||
christie
資深會員 發表:30 回覆:299 積分:475 註冊:2005-03-25 發送簡訊給我 |
// Save a TStringGrid to a file procedure SaveStringGrid(StringGrid: TStringGrid; const FileName: TFileName); var f: TextFile; i, k: Integer; begin AssignFile(f, FileName); Rewrite(f); with StringGrid do begin // Write number of Columns/Rows Writeln(f, ColCount); Writeln(f, RowCount); // loop through cells for i := 0 to ColCount - 1 do for k := 0 to RowCount - 1 do Writeln(F, Cells[i, k]); end; CloseFile(F); end; // Load a TStringGrid from a file procedure LoadStringGrid(StringGrid: TStringGrid; const FileName: TFileName); var f: TextFile; iTmp, i, k: Integer; strTemp: String; begin AssignFile(f, FileName); Reset(f); with StringGrid do begin // Get number of columns Readln(f, iTmp); ColCount := iTmp; // Get number of rows Readln(f, iTmp); RowCount := iTmp; // loop through cells & fill in values for i := 0 to ColCount - 1 do for k := 0 to RowCount - 1 do begin Readln(f, strTemp); Cells[i, k] := strTemp; end; end; CloseFile(f); end; // Save StringGrid1 to 'c:\temp.txt': procedure TForm1.Button1Click(Sender: TObject); begin SaveStringGrid(StringGrid1, 'c:\temp.txt'); end; // Load StringGrid1 from 'c:\temp.txt': procedure TForm1.Button2Click(Sender: TObject); begin LoadStringGrid(StringGrid1, 'c:\temp.txt'); end; 參考http://www.swissdelphicenter.ch/torry/showcode.php?id=941
------
What do we live for if not to make life less difficult for each other? |
||||||||
lovemari
中階會員 發表:134 回覆:224 積分:76 註冊:2005-08-18 發送簡訊給我 |
|||||||||
max5020
資深會員 發表:30 回覆:277 積分:321 註冊:2003-06-04 發送簡訊給我 |
http://delphi.ktop.com.tw/board.php?cid=31&fid=79&tid=22993
XLSFile.pas 提供了, DataSet to Excel, StringGrid to Excel 而且操作者端, 不需要安裝EXCEL, 應該更好用吧!!
編輯記錄
max5020 重新編輯於 2009-05-18 12:30:46, 註解 無‧
|
||||||||
christie
資深會員 發表:30 回覆:299 積分:475 註冊:2005-03-25 發送簡訊給我 |
implementation
uses comobj; ... function RefToCell(ARow, ACol: Integer): string; begin Result := Chr(Ord('A') ACol - 1) IntToStr(ARow) end; function SaveAsExcelFile(AGrid: TStringGrid; ASheetName, AFileName: string): Boolean; const xlWBATWorksheet = -4167; var Row, Col: Integer; GridPrevFile: string; XLApp, Sheet, Data: OLEVariant; i, j: Integer; begin // Prepare Data Data := VarArrayCreate([1, AGrid.RowCount, 1, AGrid.ColCount], varVariant); for i := 0 to AGrid.ColCount - 1 do for j := 0 to AGrid.RowCount - 1 do begin //IF J=2 THEN // Data[j 1, i 1] :='''' AGrid.Cells[i, j] //ELSE Data[j 1, i 1] := AGrid.Cells[i, j]; end; // Create Excel-OLE Object Result := False; XLApp := CreateOleObject('Excel.Application'); try // Hide Excel XLApp.Visible := False; // Add new Workbook XLApp.Workbooks.Add(xlWBatWorkSheet); Sheet := XLApp.Workbooks[1].WorkSheets[1]; Sheet.Name := ASheetName; // Fill up the sheet Sheet.Range[RefToCell(1, 1), RefToCell(AGrid.RowCount, AGrid.ColCount)].Value := Data; // Save Excel Worksheet XLApp.Columns.AutoFit; try XLApp.Workbooks[1].SaveAs(AFileName); Result := True; except // Error ? end; finally // Quit Excel if not VarIsEmpty(XLApp) then begin XLApp.DisplayAlerts := False; XLApp.Quit; XLAPP := Unassigned; Sheet := Unassigned; end; end; end; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * procedure TForm1.BitBtn3Click(Sender: TObject); begin if SaveAsExcelFile(sG1, 'XLS_名單', 'c:\XLS-1.xls') then ShowMessage('StringGrid1 saved!'); end; ===================引 用 lovemari 文 章=================== To christie 大大 可以存檔了 可是有各疑問 存檔之後的檔案 裡面都只是一直往下列 我希望能儲存成EXECL 耶
------
What do we live for if not to make life less difficult for each other?
編輯記錄
christie 重新編輯於 2009-05-19 12:40:22, 註解 無‧
|
||||||||
lovemari
中階會員 發表:134 回覆:224 積分:76 註冊:2005-08-18 發送簡訊給我 |
|||||||||
max5020
資深會員 發表:30 回覆:277 積分:321 註冊:2003-06-04 發送簡訊給我 |
|||||||||
christie
資深會員 發表:30 回覆:299 積分:475 註冊:2005-03-25 發送簡訊給我 |
|||||||||
lovemari
中階會員 發表:134 回覆:224 積分:76 註冊:2005-08-18 發送簡訊給我 |
|||||||||
lovemari
中階會員 發表:134 回覆:224 積分:76 註冊:2005-08-18 發送簡訊給我 |
想在請教
我想把存檔自動用日期當作檔名 然後改成下列 卻無法執行 是那裡有問題嗎?? [code delphi] procedure TForm1.Button13Click(Sender: TObject); begin if SaveAsExcelFile(StringGrid1, 'SPC報表', 'C:\' DateTimeToStr(DateTimePicker.DateTime)) then ShowMessage('存檔成功'); end; [/code]
------
Program : Delphi 7 DataBase : Oracle 9i Client : ClientDataSet |
||||||||
max5020
資深會員 發表:30 回覆:277 積分:321 註冊:2003-06-04 發送簡訊給我 |
===================引 用 lovemari 文 章=================== 想在請教 我想把存檔自動用日期當作檔名 然後改成下列 卻無法執行 是那裡有問題嗎?? [code delphi] procedure TForm1.Button13Click(Sender: TObject); begin // if SaveAsExcelFile(StringGrid1, 'SPC報表', 'C:\' DateTimeToStr(DateTimePicker.DateTime)) then if SaveAsExcelFile(StringGrid1, 'SPC報表', 'C:\' FormatDateTime('YYYYMMDD', DateTimePicker.Date) then // 改這樣試看看 ShowMessage('存檔成功'); end; [/code] |
||||||||
lovemari
中階會員 發表:134 回覆:224 積分:76 註冊:2005-08-18 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |