全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:940
推到 Plurk!
推到 Facebook!

Edit1->Text 輸入至EXCEL中的欄位顯示問題

尚未結案
penny015
一般會員


發表:20
回覆:15
積分:7
註冊:2005-03-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-31 12:47:46 IP:220.130.xxx.xxx 未訂閱
請問一下我現在的程式RUN起來之後,再Edit1->Text輸入數字會先在第一列(1.1)~(1.4)顯示相同數字,然後Edit1->Text輸入新的數字之後會再第20列(20.1)~(20.4)之後不管在輸入什麼數字都會覆蓋在第20列(20.1)~(20.4)。 是我for迴圈設錯了嗎....我程式的用意是要輸入數字後excel再(1.1)顯示 之後是(1.2)....(1.4)再換到(2.1)....以持類推...
    #pragma hdrstop    #include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "Excel_2K_SRVR"
#pragma resource "*.dfm"    int i=1;
int j=1;
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
WideString aa; //定義aa
if (OpenDialog1->Execute()) //直接打開檔案選擇視窗
{
aa=OpenDialog1->FileName; //指定檔名
ExcelApplication1->Connect(); //EXCEL APPLICATION 連接
ExcelApplication1->Workbooks->Open(aa);
ExcelWorkbook1->ConnectTo(ExcelApplication1->get_ActiveWorkbook());
ExcelApplication1->set_Visible(0,true); //指定EXCEL視窗為可視
ExcelWorksheet1->ConnectTo(ExcelWorkbook1->get_ActiveSheet());
//連接工作表
}    }
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{        Variant v7;
    Variant KKK=Edit1->Text;
    Variant v(i);
   for(j=1;j<=4;j  ){
    Variant k(j);
   for(i=1;i<=20;  i){
    ExcelWorksheet1->Cells->set__Default(v,k,KKK);
 }
 }
}
//----------------------
wyndog
資深會員


發表:7
回覆:362
積分:348
註冊:2004-10-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-31 14:49:11 IP:60.248.xxx.xxx 未訂閱
引言: 請問一下我現在的程式RUN起來之後,再Edit1->Text輸入數字會先在第一列(1.1)~(1.4)顯示相同數字,然後Edit1->Text輸入新的數字之後會再第20列(20.1)~(20.4)之後不管在輸入什麼數字都會覆蓋在第20列(20.1)~(20.4)。 是我for迴圈設錯了嗎....我程式的用意是要輸入數字後excel再(1.1)顯示 之後是(1.2)....(1.4)再換到(2.1)....以持類推...
  for(j=1;j<=4;j  ){
    Variant k(j);
  for(i=1;i<=20;  i){
    ExcelWorksheet1->Cells->set__Default(v,k,KKK);
咦,迴圈這樣寫,我看不太懂...|| 我猜 v 是 row, k 是 column 吧 你要做成 (1,1) -> (1,2) -> (1,3) -> (1,4) -> (2,1) ... 吧 那不能寫成迴圈,這樣你變成每次都等於 4x20 重掃一遍,答案一定不對的 你可以設二個變數,叫 ARow / ACol 先讓他們 = 1,因為你要從 (1,1) 開始寫 填格子的時候就一律填到 (ARow, ACol) 去 填完就加 ACol,超過 4 就歸回 1,ARow 加 1 像這樣:
int ARow = 1;
int ACol = 1;
.....
void __fastcall TForm1::Button2Click(TObject *Sender)
{
    Variant v(ARow);
    Variant k(ACol);
    Variant KKK = Edit1->Text;        ExcelWorksheet1->Cells->set__Default(v,k,KKK);        ACol  ;
    if(ACol > 4) {
        ACol = 1;
        ARow  ;
        // 我自做主張,當到達 (20,4) 時,跳回 (1,1)
        if(ARow > 20) ARow = 1;
    }
}       
發表人 - reptile 於 2005/03/31 14:51:18
系統時間:2024-05-17 20:02:23
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!