討論區快速選單
知識庫快速選單
程式設計俱樂部Facebook粉絲團 討論區最近新進100則主題 政府補助 - 嵌入式軟體免費說明會!
[ 回上頁 ] [ 討論區發言規則 ]
VS80 開啟Excel問題?
更改我的閱讀文章字型大小
作者 : fromak(小憲) 貼文超過200則人氣指數超過50000點
[ 貼文 279 | 人氣 53702 | 評價 20 | 評價/貼文 0.07 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/5/16 上午 11:09:55
各位先進大家好:

以_Application為例

     在VC60載入Excel.exe會產生excel9.cpp和excel9.h檔,
然後#include "excel9.h"
和宣告_Application exlapp後,執行是OK的

     在VS80載入Excel.exe會產生CApplication.h檔,
然後在***Dlg.cpp #include "CApplication.h",
執行後,就出現一連串以下錯誤訊息

error C2371: 'FontPtr' : 重複定義; 基本型別不相同
 error C2786: 'BOOL (__stdcall *)(HDC,int,int,int,int)' : __uuidof 的運算元無效
error C2923: '_com_IIID' : 對參數 'Rectangle' 而言,'<未知>' 不是有效的 <未知> 型別引數
error C3203: '_com_IIID' : 非特製化類別 樣板 不可做為 樣板 引數 (對 樣板 參數 '_IIID' 而言),它必須是實際型別
error C2786: 'BOOL (__stdcall *)(HDC,int,int,int,int,int,int,int,int)' : __uuidof 的運算元無效
error C2923: '_com_IIID' : 對參數 'Arc' 而言,'<未知>' 不是有效的 <未知> 型別引數
error C3203: '_com_IIID' : 非特製化類別 樣板 不可做為 樣板 引數 (對 樣板 參數 '_IIID' 而言),它必須是實際型別
error C2371: 'PicturePtr' : 重複定義; 基本型別不相同
.
.
.
等等,共超過100個錯誤訊息

小弟遇到這問題已想好多天了,無法解決,請各位先進幫幫小弟,感激不盡,謝謝
作者 : shing819(Clier) VC++曠世奇才貼文超過1000則人氣指數超過30000點
[ 貼文 1740 | 人氣 40353 | 評價 8620 | 評價/貼文 4.95 | 送出評價 84 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/5/16 下午 10:35:22

>各位先進大家好:
>
>以_Application為例
>
> 在VC60載入Excel.exe會產生excel9.cpp和excel9.h檔,
>然後#include 'excel9.h'
>和宣告_Application exlapp後,執行是OK的
>
> 在VS80載入Excel.exe會產生CApplication.h檔,
>然後在***Dlg.cpp #include 'CApplication.h',
>執行後,就出現一連串以下錯誤訊息
>
>error C2371: ''FontPtr'' : 重複定義; 基本型別不相同
> error C2786: ''BOOL (__stdcall *)(HDC,int,int,int,int)'' : __uuidof 的運算元無效
>error C2923: ''_com_IIID'' : 對參數 ''Rectangle'' 而言,''<未知>'' 不是有效的 <未知> 型別引數
>error C3203: ''_com_IIID'' : 非特製化類別 樣板 不可做為 樣板 引數 (對 樣板 參數 ''_IIID'' 而言),它必須是實際型別
>error C2786: ''BOOL (__stdcall *)(HDC,int,int,int,int,int,int,int,int)'' : __uuidof 的運算元無效
>error C2923: ''_com_IIID'' : 對參數 ''Arc'' 而言,''<未知>'' 不是有效的 <未知> 型別引數
>error C3203: ''_com_IIID'' : 非特製化類別 樣板 不可做為 樣板 引數 (對 樣板 參數 ''_IIID'' 而言),它必須是實際型別
>error C2371: ''PicturePtr'' : 重複定義; 基本型別不相同
>.
>.
>.
>等等,共超過100個錯誤訊息
>
>小弟遇到這問題已想好多天了,無法解決,請各位先進幫幫小弟,感激不盡,謝謝
>


這段要註解掉.VS 2005 技術對我而言太新了,所以 I don't Know
原因,但確定 Excel 可以用.後遺症自行承擔.

// CApplication.h
#import "C:\\Program Files\\Microsoft Office\\OFFICE11\\EXCEL.EXE" no_namespace

其他部分就注意字串型態的轉換.

ps:
用 VC 寫 Excel VBA 其函數因無使用說明文件,要不斷的 try,
我預料你可能會想放棄.希望你能多試幾個月,寫出使用教學文
件造福大眾.
作者 : shing819(Clier) VC++曠世奇才貼文超過1000則人氣指數超過30000點
[ 貼文 1740 | 人氣 40353 | 評價 8620 | 評價/貼文 4.95 | 送出評價 84 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/5/17 下午 08:08:52

>這段要註解掉.VS 2005 技術對我而言太新了,所以 I don''t Know
>原因,但確定 Excel 可以用.後遺症自行承擔.
>
>// CApplication.h
>#import 'C:\\Program Files\\Microsoft Office\\OFFICE11\\EXCEL.EXE' no_namespace
>
>其他部分就注意字串型態的轉換.
>


後來又試一下,果然有後遺症,因為網路上用此方法的人極少,
資料難找,也意謂著不只一種方法,我知道的有3種方式,包括
你這種,這是最少人用的,原因可能跟沒說明文件有關.

所以用 VS 2005 方式產生的 CApplication 物件,我必須
聲明目前試不出來,但是有種方式可以彌補,就是把 VC 6.0
產生的 excel.cpp 及 excel.h 供 VS 2005 使用,不要用
VS 2005 產生的 CApplication.h,經測試結果一切正常,
記得轉換字串型態.
作者 : chiuinan2(青衫)討論區板主 Visual C++ .NET卓越專家VC++一代宗師Visual Basic優秀好手資訊類作業求救卓越專家一般曠世奇才程式設計甘苦談優秀好手C++ Builder優秀好手上班族的哈拉園地優秀好手C++頂尖高手Assembly優秀好手貼文超過3000則人氣指數超過150000點
[ 貼文 3687 | 人氣 170106 | 評價 33840 | 評價/貼文 9.18 | 送出評價 124 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/5/17 下午 09:39:45
我在VC8裡存取excel資料, 也是直接用VC6產生出來的excel9.cpp與excel9.h, 主要是原程式碼在VC6已寫好, porting到VC8時便懶得再改, 而且用起來也沒什麼問題. 如果VC8一直試不出來的話, 何妨直接使用VC6的程式碼.
作者 : sflam(Raymond)討論區板主 Visual C++ .NET優秀好手VC++曠世奇才新手入門優秀好手資訊類作業求救頂尖高手C++一代宗師貼文超過4000則
[ 貼文 4515 | 人氣 9172 | 評價 29020 | 評價/貼文 6.43 | 送出評價 130 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/5/17 下午 10:31:32
我用的是 Office11, VC++8 #import 產生的是 *.tlh 及 *.tli.

用以下的 #import:

#import "/Program Files/Common Files/Microsoft Shared/OFFICE11/MSO.DLL" \
    rename("RGB", "XL_RGB") \
    rename("DocumentProperties", "XL_DocumentProperties") \
    rename("SearchPath", "XL_SearchPath")

#import "/Program Files/Common Files/Microsoft Shared/VBA/VBA6/VBE6EXT.OLB"

#import "/Program Files/Microsoft Office/OFFICE11/Excel.exe" \
    no_auto_exclude \
    rename("RGB", "XL_RGB") \
    rename("DialogBox", "XL_DialogBox") \
    rename("CopyFile", "XL_CopyFile") \
    rename("ReplaceText", "XL_ReplaceText")

給你做參考, 看有沒有用.

作者 : fromak(小憲) 貼文超過200則人氣指數超過50000點
[ 貼文 279 | 人氣 53702 | 評價 20 | 評價/貼文 0.07 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/5/18 下午 12:01:06
感謝各位大大幫忙

問題提出好多天,原本以為沒有人會幫我,所以我只好一直try和找資料,最後只好拿VC60建立好的execl.cpp和excel.h檔,放到VC++ 8裡試試看,果然可以,再加上一些找來的資料,現在已可以RUN了,也可以順利的寫到Excel裡並存檔,我將我的CODE POST上,希望需要的人,不必再像我一樣,周旋那麼久才完成

BOOL CVc80Excel2003App::InitInstance()
{
//=====自行加入=====
if(!AfxOleInit()) // Your addition starts here.
{
    AfxMessageBox(_T("Cannot initialize COM dll") ,16);
    return false;
    // End of your addition.
}
//=====自行加入=====

    AfxEnableControlContainer();
return false;

}

在Button程序上加入
if(!exlapp.CreateDispatch(_T("Excel.Application")))
{
    AfxMessageBox(_T("無法啟動Excel服務器!"), 16);
   return;
}

    COleVariant avar((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
    exlapp.SetVisible(false);//使Excel不可見
    exlapp.SetUserControl(true);//允許其它用戶控制Excel,否則Excel將一閃即逝.

    //Open an excel file
    Tchar path[MAX_PATH];
    GetCurrentDirectory(MAX_PATH,path);
    CString strPath = path;
    strPath += "\\GLASS PRINTING_CpCpk format sheet_Apple";


    wbks.AttachDispatch(exlapp.GetWorkbooks());

    lpDisp=wbks.Open(strPath,
    avar,avar,avar,avar,avar,avar,avar,avar,avar,avar,avar,avar,avar,avar);

    wbk.AttachDispatch(lpDisp);
    whts.AttachDispatch(wbk.GetWorksheets());
    lpDisp=wbk.GetActiveSheet();
    wht.AttachDispatch(lpDisp);

    usedRange.AttachDispatch(wht.GetUsedRange());
    range.AttachDispatch(usedRange.GetRows());
    long iRowNum=range.GetCount();//已經使用的行數
    range.AttachDispatch(wht.GetCells());

    range.SetItem(COleVariant(long(iRowNum+1)),COleVariant(long(1)),COleVariant(_T("1")));

    range.SetItem(COleVariant(long(iRowNum+1)),COleVariant(long(2)),COleVariant(_T("2")));

    range.SetItem(COleVariant(long(iRowNum+1)),COleVariant(long(3)),COleVariant(_T("3")));

    wbk.Save();
    wbks.Close();
    exlapp.Quit();

    wbks.ReleaseDispatch(); //釋放發送
     exlapp.ReleaseDispatch();

另請教各位大大

1.要增加工作表,程式須加上什麼程序

2.如果要指定工作表讀寫 ,程式上須要怎麼修改

3.在程式結束時,才去執行以下程序,但發覺,需要等一段時間才會順利結束程式,請問這是為什麼,還是我放錯地方
wbks.Close();
exlapp.Quit();
wbks.ReleaseDispatch(); //釋放發送
exlapp.ReleaseDispatch();

4.以下的類別各代表什麼意思,找了一堆資料,只知道程式是這麼寫,但不知其意思。
_Application exlapp;
_Workbook wbk;
Workbooks wbks;
_Worksheet wht;
Worksheets whts;
LPDISPATCH lpDisp;
Range range;
Range usedRange;
作者 : chiuinan2(青衫)討論區板主 Visual C++ .NET卓越專家VC++一代宗師Visual Basic優秀好手資訊類作業求救卓越專家一般曠世奇才程式設計甘苦談優秀好手C++ Builder優秀好手上班族的哈拉園地優秀好手C++頂尖高手Assembly優秀好手貼文超過3000則人氣指數超過150000點
[ 貼文 3687 | 人氣 170106 | 評價 33840 | 評價/貼文 9.18 | 送出評價 124 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/5/18 下午 03:57:21
>4.以下的類別各代表什麼意思,找了一堆資料,只知道程式是這麼寫,但不知其意思。

以下是我的理解, 謹供參考:

1._Application是指excel應用程式, 以下列方式啟動:

_Application excel_ap.CreateDispatch("Excel.Application");

2.Workbooks是excel目前開啟的所有檔案, 由下列方式取得:

Workbooks workbooks = excel_ap.GetWorkbooks();

3._Workbook是指向現在要處理的檔案, 可由下列方式開啟:

_Workbook workbook = workbooks.Open(filename,....);

4.Worksheets表示目前檔案裡的所有sheet, 可由下列方式取得:

Worksheets sheets = workbook.GetWorksheets();

5._Worksheet指向目前要處理的sheet, 可由下列方式取得:

_Worksheet worksheet = sheets.GetItem(COleVariant(i));

i表示第幾個sheet, 由1開始.

6.Range是指向sheet裡的某個範圍, 就像在excel中mark一個範圍相同, 可經由此進行資料的存取

7.LPDISPATCH是指向IDispatch, 前述的物件都是透過IDispatch這個Interface與excel做溝通的.



作者 : shing819(Clier) VC++曠世奇才貼文超過1000則人氣指數超過30000點
[ 貼文 1740 | 人氣 40353 | 評價 8620 | 評價/貼文 4.95 | 送出評價 84 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/5/18 下午 08:00:47

>感謝各位大大幫忙
>
>問題提出好多天,原本以為沒有人會幫我,所以我只好一直try和找資料,最後只好拿VC60建立好的execl.cpp和excel.h檔,放到VC++ 8裡試試看,果然可以,再加上一些找來的資料,現在已可以RUN了,也可以順利的寫到Excel裡並存檔,我將我的CODE POST上,希望需要的人,不必再像我一樣,周旋那麼久才完成
>


post 到 VC.NET 沒人回很正常,MFC 問題以後到這裡問,Windows
Form 到 VC.NET.
 

>另請教各位大大
>
>1.要增加工作表,程式須加上什麼程序
>


whts.Add(avar,avar,avar,avar);


>2.如果要指定工作表讀寫 ,程式上須要怎麼修改
>


看不懂意思,舉個實例詳細說明.


>3.在程式結束時,才去執行以下程序,但發覺,需要等一段時間才會順利結束程式,請問這是為什麼,還是我放錯地方
>wbks.Close();
>exlapp.Quit();
>wbks.ReleaseDispatch(); //釋放發送
>exlapp.ReleaseDispatch();
>

ReleaseDispatch() 不用加,只要離開 scope range,
book, chart, chartobjects, sheet, and app 會自
動釋放.

速度慢是因為你電腦慢和程式無關.

作者 : fromak(小憲) 貼文超過200則人氣指數超過50000點
[ 貼文 279 | 人氣 53702 | 評價 20 | 評價/貼文 0.07 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/5/18 下午 11:18:18
各位大大你們好:
首先感謝各位大大的不吝指教

>Worksheets表示目前檔案裡的所有sheet, 可由下列方式取得:
>Worksheets sheets = workbook.GetWorksheets();
請問取得後,要怎麼才能知道目前所指定要處理的檔案,共有幾個sheets?
經查看後,所傳回值是LPDISPATCH型態,無法看出有幾個sheets


>post 到 VC.NET 沒人回很正常,MFC 問題以後到這裡問,Windows
>Form 到 VC.NET.

請問Windows Form 到 VC.NET.討論區是在那裡,有網址嗎?



>2.如果要指定工作表讀寫 ,程式上須要怎麼修改

>看不懂意思,舉個實例詳細說明.

比如說有A, B, C三個工作表,現在資料要讀出B工作表,或寫入B工作表,程式上須加那些程序?



1.新增工作表,要如何指定工作表名稱,指定新增在第幾個sheet


2.如要將COleVariant avar((long)DISP_E_PARAMNOTFOUND, VT_ERROR);分解成
    COleVariant avar;
   avar. 請問後面要怎麼接?

3.請問以下Code 為什麼用avar就可以了?經上一題程序後,avar會是什麼樣的東西?
   lpDisp=wbks.Open(strPath,
   avar,avar,avar,avar,avar,avar,avar,avar,avar,avar,avar,avar,avar,avar);

   whts.Add(avar,avar,avar,avar);


4.經測試後發覺,在VC上 _T("123")的文字,到了Excel就成數字,
   請問在VC是文字的型態,寫入Excel後也同樣是文字,要加那些程序
作者 : shing819(Clier) VC++曠世奇才貼文超過1000則人氣指數超過30000點
[ 貼文 1740 | 人氣 40353 | 評價 8620 | 評價/貼文 4.95 | 送出評價 84 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/5/19 下午 03:16:51

>各位大大你們好:
>首先感謝各位大大的不吝指教
>
>>Worksheets表示目前檔案裡的所有sheet, 可由下列方式取得:
>>Worksheets sheets = workbook.GetWorksheets();
>請問取得後,要怎麼才能知道目前所指定要處理的檔案,共有幾個sheets?
>經查看後,所傳回值是LPDISPATCH型態,無法看出有幾個sheets
>
>
>>post 到 VC.NET 沒人回很正常,MFC 問題以後到這裡問,Windows
>>Form 到 VC.NET.
>
>請問Windows Form 到 VC.NET.討論區是在那裡,有網址嗎?
>
>


我是指 Visual C++ .NET 討論區,Windows Form 的人大部份
用C#,微軟也是建議用C#,沒人氣.


因為我 VS 2005 Help 沒辦法用要重灌作業系統,所以最晚明天
或後天回你其他問題,Excel 的說明檔有 Excel VBA 文件,你先看
,其實這也不是很難,只是要用較聰明的方式 try 才能成功,基本上
VBA是給 VB 用的,用 VC 開發會比較累,市面上也沒書,不過你不
用擔心,VBA 是我以前的工作項目,應該可以幫你解決所有問題.
作者 : shing819(Clier) VC++曠世奇才貼文超過1000則人氣指數超過30000點
[ 貼文 1740 | 人氣 40353 | 評價 8620 | 評價/貼文 4.95 | 送出評價 84 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/5/19 下午 10:53:10

>
>比如說有A, B, C三個工作表,現在資料要讀出B工作表,或寫入B工作表,程式上須加那些程序?
>
>


是怎麼讀取,一個個步驟寫清楚,這樣才能回答你想要的.




>
>1.新增工作表,要如何指定工作表名稱,指定新增在第幾個sheet
>
>


a.指定工作表名稱用 Worksheet 的 SetName function.
b.指定新增在第幾個sheet用 Worksheet 的 Move function.


>2.如要將COleVariant avar((long)DISP_E_PARAMNOTFOUND, VT_ERROR);分解成
> COleVariant avar;
> avar. 請問後面要怎麼接?
>


COleVariant avar;
avar.vt = VT_ERROR;
V_ERROR(&avar) = DISP_E_PARAMNOTFOUND;



>3.請問以下Code 為什麼用avar就可以了?經上一題程序後,avar會是什麼樣的東西?
> lpDisp=wbks.Open(strPath,
> avar,avar,avar,avar,avar,avar,avar,avar,avar,avar,avar,avar,avar,avar);
>
> whts.Add(avar,avar,avar,avar);
>
>


因為open 參數是 VARIANT 型態, MSDN 有詳細說明.



>4.經測試後發覺,在VC上 _T('123')的文字,到了Excel就成數字,
> 請問在VC是文字的型態,寫入Excel後也同樣是文字,要加那些程序
>


NumberFormatLocal


ps:
你可以買本 VBA 的書,雖然是用 VB 語法寫但是很有參考價值,不
過使用VC 時,要懂 COM 元件的基本觀念,不然你會寫得很辛苦.畢
竟用法有差異.try 程式還是要有基本功.

你這是公司的專案嗎? 如果是有問題就趕快問,如果不是就多想幾
小時,這樣對 coding 有助益.
作者 : fromak(小憲) 貼文超過200則人氣指數超過50000點
[ 貼文 279 | 人氣 53702 | 評價 20 | 評價/貼文 0.07 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/5/23 下午 03:53:22
各位大大你們好:
不好意思,因臨時出差,今天才回來,請見諒

>我是指 Visual C++ .NET 討論區,Windows Form 的人大部份
>用C#,微軟也是建議用C#,沒人氣.
同樣的問題,我也在Visual C++ .NET 討論區POST過,但是都沒人可以幫我


>NumberFormatLocal
請問NumberFormatLocal是什麼function,在
exlapp;
wbk;
wbks;
wht;
whts;
range;
 
裡都找不到NumberFormatLocal function



>比如說有A, B, C三個工作表,現在資料要讀出B工作表,或寫入B工作表,程式
>上須加那些程序?
>
>是怎麼讀取,一個個步驟寫清楚,這樣才能回答你想要的.

1.比如說要從B工作表的B6儲存格,讀取資料,要加什麼程序?要用什麼資料型態來接?
2.比如說要將資料寫到B工作表的C9,可以這樣寫
    range.SetItem(COleVariant(9), COleVariant(3), COleVariant(_T("123"));
   現在問題來了,
    1.要怎麼指定B工作表
    2.寫入的_T("123"),在Excel裡會將123當成數字,但要如入何設定儲存格格式,比如說在Excel裡可以顯示123.00或 $123.00?
    除了事先在Excel裡設定儲存格格式外,還有沒有其他方法?


>b.指定新增在第幾個sheet用 Worksheet 的 Move function.
Move function,小弟試了很多次,試不出來
 VARIANT 是什麼型態呢?
比如說要在第五個sheet新增一"MFC"工作表,要加入什麼程序


A.在A工作表寫入資料完成後,下一筆資料要寫到B工作表的C8儲存格
請問要怎麼切換A工作表和B工作表


B.執行 wbk.Save(); 指令後,會顯示"檔案已被修改,您是否要儲存檔案",
當按下確定鈕時,會出現"另存新檔"視窗,請問在程序上,要如何修改

作者 : shing819(Clier) VC++曠世奇才貼文超過1000則人氣指數超過30000點
[ 貼文 1740 | 人氣 40353 | 評價 8620 | 評價/貼文 4.95 | 送出評價 84 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/5/23 下午 07:29:45

>各位大大你們好:
>不好意思,因臨時出差,今天才回來,請見諒
>
>>我是指 Visual C++ .NET 討論區,Windows Form 的人大部份
>>用C#,微軟也是建議用C#,沒人氣.
>同樣的問題,我也在Visual C++ .NET 討論區POST過,但是都沒人可以幫我
>


他們沒時間幫你 try,大家工作都忙.



>
>>NumberFormatLocal
>請問NumberFormatLocal是什麼function,在
>exlapp;
>wbk;
>wbks;
>wht;
>whts;
>range;
>
>裡都找不到NumberFormatLocal function
>
>
>


range.SetNumberFormat(COleVariant(_T("@")));


作者 : shing819(Clier) VC++曠世奇才貼文超過1000則人氣指數超過30000點
[ 貼文 1740 | 人氣 40353 | 評價 8620 | 評價/貼文 4.95 | 送出評價 84 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/5/23 下午 07:42:28

>>b.指定新增在第幾個sheet用 Worksheet 的 Move function.
>Move function,小弟試了很多次,試不出來
> VARIANT 是什麼型態呢?
>比如說要在第五個sheet新增一'MFC'工作表,要加入什麼程序
>


post 你的 sample.其實這個要試出來不容易,花了我幾個小時,
這個問題值 10000 元,但說穿了一文不值.



>
>A.在A工作表寫入資料完成後,下一筆資料要寫到B工作表的C8儲存格
>請問要怎麼切換A工作表和B工作表
>
>


sheet = sheets.GetItem(COleVariant((short)3));
sheet.Activate();



>B.執行 wbk.Save(); 指令後,會顯示'檔案已被修改,您是否要儲存檔案',
>當按下確定鈕時,會出現'另存新檔'視窗,請問在程序上,要如何修改
>
>


你是想改成怎樣,詳列步驟.
作者 : shing819(Clier) VC++曠世奇才貼文超過1000則人氣指數超過30000點
[ 貼文 1740 | 人氣 40353 | 評價 8620 | 評價/貼文 4.95 | 送出評價 84 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/5/23 下午 09:22:58
>比如說有A, B, C三個工作表,現在資料要讀出B工作表,
>或寫入B工作表,程式
>上須加那些程序?
>
>是怎麼讀取,一個個步驟寫清楚,這樣才能回答你想要的.

1.比如說要從B工作表的B6儲存格,讀取資料,要加什麼程
  序?要用什麼資料型態來接?
  
  看什麼型態,自己轉換.
Range range;
range = sheet.GetRange(COleVariant(_T("c1")),
COleVariant(_T("c1")));
COleVariant cov1;
cov1 = range.GetValue2();
CString str= (LPCWSTR) cov1.bstrVal;
  
  
2.比如說要將資料寫到B工作表的C9,可以這樣寫
    range.SetItem(COleVariant(9), COleVariant(3),
    COleVariant(_T("123"));
   現在問題來了,
    1.要怎麼指定B工作表
    2.寫入的_T("123"),在Excel裡會將123當成數字,但
    要如入何設定儲存格格式,比如說在Excel裡可以顯示
    123.00或 $123.00?
    除了事先在Excel裡設定儲存格格式外,還有沒有其他
    方法?

sheet = sheets.GetItem(COleVariant((short)3)); // 指定x工作表
range = sheet.GetRange(COleVariant(_T("a1")),
COleVariant(_T("d40")));
    range.SetItem(COleVariant((short)9), COleVariant((short)3),
COleVariant(_T("123")));
range.SetNumberFormat(COleVariant(_T("@")));
作者 : chiuinan2(青衫)討論區板主 Visual C++ .NET卓越專家VC++一代宗師Visual Basic優秀好手資訊類作業求救卓越專家一般曠世奇才程式設計甘苦談優秀好手C++ Builder優秀好手上班族的哈拉園地優秀好手C++頂尖高手Assembly優秀好手貼文超過3000則人氣指數超過150000點
[ 貼文 3687 | 人氣 170106 | 評價 33840 | 評價/貼文 9.18 | 送出評價 124 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/5/23 下午 09:37:18
如果不想開啟或存檔時跳出詢問視窗, 可以用下列函數做一些設定. 意義的話, 看函數名稱應該會有所了解.

_Application excel_app;

excel_app.SetAlertBeforeOverwriting(false);
excel_app.SetDisplayAlerts(false);
excel_app.SetEnableEvents(false);
excel_app.SetAskToUpdateLinks(false);
excel_app.SetEnableAnimations(false);
作者 : waterwww(x)
[ 貼文 29 | 人氣 3979 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/6/10 下午 09:53:07
最近看到了這個討論串,也使用Excel9.h & Excel9.cpp在VS8試做了一下,可以成功讀取與寫入Excel文件,但是將執行檔拿到別的電腦時卻無法執行,不知道原因為何,是否要載入些什麼元件?
作者 : eghost(eghost) 貼文超過200則
[ 貼文 231 | 人氣 6576 | 評價 450 | 評價/貼文 1.95 | 送出評價 6 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/6/23 下午 11:19:03
我在六月初也剛用VC6搞定Excel與PowerPoint....如果早點看到這篇....我就不會那麼累了...
 板主 : 青衫 , Raymond
 > Visual C++ - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - Visual C++ - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
Visual C++
1 青衫 10850 
2 Raymond 9470 
3 Clier 7620 
4 小約翰 2470 
5 Cog 2030 
6 coco 1410 
7 aming 1410 
8 牧童哥 1400 
9 r2109 1380 
10 Akira 1350 
Visual C++
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2012 程式設計俱樂部 http://www.programmer-club.com.tw/
0.65625