將GRID的資料填入EXCEL |
答題得分者是:Fishman
|
h5rong
一般會員 ![]() ![]() 發表:32 回覆:44 積分:15 註冊:2003-08-27 發送簡訊給我 |
之前有討論過將GRID的資料填入EXCEL,如下:
>with QueryDM.qry_Produce do
>begin //讀取Grid Display Label 放入Execl
>for j := 0 to FieldCount - 1 do
>MsExcelWorkSheet.Range[Chr(65 j) '1'].Value :=
>Fields[j].DisplayLabel;
>first;
>i := 2;
>while not eof do
>begin //讀取Grid Data Label 放入Execl
>for j := 0 to FieldCount - 1 do
>MsExcelWorkSheet.Range[Chr(65 j) IntToStr(i)].Value :=
>Fields[j].AsString;
請問由grid import 至 Excel,依上述寫法,是否grid有欄位數量的限制,
因我發現讀取 grid 之欄位數超過26欄時,出現--
"OLE eror 800A03EC" 之錯誤訊息.請問該如何解?
謝謝 .....
|
Fishman
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi: 那錯誤訊息不是欄位的限制的問題,Excel 欄位限制為 256,而是 Excel 欄位名稱的問題,因 Excel 欄位為 A~Z,再來為 AA,AB,.....,我寫了一個 Function 來轉換數字與欄位,供你參考。
function ExcelCol(ACol : Word) : String; VAR I1,I2 : INTEGER; S1,S2 : STRING; begin IF (ACol > 0) and (ACol <= 256) THEN BEGIN I1 := TRUNC((ACol - 1) / 26); I2 := ((ACol - 1) MOD 26); IF I1 = 0 THEN S1 := '' ELSE S1 := CHR(I1 64); S2 := CHR(I2 65); ExcelCol := S1 S2; END ELSE ExcelCol := ''; end;
------
Fishman |
h5rong
一般會員 ![]() ![]() 發表:32 回覆:44 積分:15 註冊:2003-08-27 發送簡訊給我 |
感謝您的答覆:
依據您的提示:
> 是 Excel 欄位名稱的問題,因 Excel 欄位為 A~Z,再來為 AA,AB,.....,
嘗試將Excel 欄位名稱 指令改成
for j := 1 to 30 do
MsExcelWorkSheet.Range[Chr(65 j) '1'].Value :='測試'
只是很單純將欄位名稱,填入"測試",內容尚未填入,依然出現
"OLE eror 800A03EC" 之錯誤訊息,
但如果將 for j := 0 to 30 do 改成
for j := 1 to 25 do
一切又正常,不曉得,是那各環節出錯? 謝謝.....
|
hagar
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
Fishman
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
|
h5rong
一般會員 ![]() ![]() 發表:32 回覆:44 積分:15 註冊:2003-08-27 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |