線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1326
推到 Plurk!
推到 Facebook!

Excel的怪現象

缺席
海星
高階會員


發表:41
回覆:217
積分:106
註冊:2003-01-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-02-20 10:47:32 IP:61.218.xxx.xxx 未訂閱
我已經沒輒了,救救我吧!!到底是發生什麼事?? 下面這一段程式碼,"真的不敢相信" 的字串可以傳送到 Excel 沒問題, 可是再下面那一段,"可以用?" 的字串竟然無法傳送??怎麼會這樣子?? 真的太不合理了吧?     
 
    Variant Excel, WorkBooks, Workbook, WorkSheets, WorkSheet, Range;
    int iRow, iCol, i;
    AnsiString S;        try
    {
        Excel = GetActiveOleObject("Excel.Application");
    }
    catch(...)
    {
        Excel = CreateOleObject("Excel.Application");
    }        Excel.OlePropertySet("Visible", true);        try
    {
        WorkBooks = Excel.OlePropertyGet("WorkBooks");
        Workbook = WorkBooks.OleFunction("Add");
//        Variant ActiveWorkBook = Excel.OlePropertyGet("ActiveWorkbook");
        WorkSheets = Workbook.OlePropertyGet("Worksheets");
        WorkSheet = WorkSheets.OlePropertyGet("Item", 1);
//        WorkSheet.OleFunction("Activate");            Range = WorkSheet.OlePropertyGet("Cells", 1, 1);
        Range.OlePropertySet("Value", "真的不相信!!" );            Range = WorkSheet.OlePropertyGet("Cells", 2, 1);
        S = "可以用?";
        Range.OlePropertySet("Value", S );
JerryKuo
版主


發表:42
回覆:571
積分:322
註冊:2003-03-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-02-20 11:09:56 IP:61.230.xxx.xxx 未訂閱
S = "可以用?";字串直接assign...這樣對嗎? 應該是strcpy()吧....
kwu
中階會員


發表:10
回覆:57
積分:58
註冊:2003-10-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-02-20 11:10:55 IP:61.63.xxx.xxx 未訂閱
引言: 我已經沒輒了,救救我吧!!到底是發生什麼事?? 下面這一段程式碼,"真的不敢相信" 的字串可以傳送到 Excel 沒問題, 可是再下面那一段,"可以用?" 的字串竟然無法傳送??怎麼會這樣子?? 真的太不合理了吧?
 
    Variant Excel, WorkBooks, Workbook, WorkSheets, WorkSheet, Range;
    int iRow, iCol, i;
    AnsiString S;        try
    {
        Excel = GetActiveOleObject("Excel.Application");
    }
    catch(...)
    {
        Excel = CreateOleObject("Excel.Application");
    }        Excel.OlePropertySet("Visible", true);        try
    {
        WorkBooks = Excel.OlePropertyGet("WorkBooks");
        Workbook = WorkBooks.OleFunction("Add");
//        Variant ActiveWorkBook = Excel.OlePropertyGet("ActiveWorkbook");
        WorkSheets = Workbook.OlePropertyGet("Worksheets");
        WorkSheet = WorkSheets.OlePropertyGet("Item", 1);
//        WorkSheet.OleFunction("Activate");            Range = WorkSheet.OlePropertyGet("Cells", 1, 1);
        Range.OlePropertySet("Value", "真的不相信!!" );            Range = WorkSheet.OlePropertyGet("Cells", 2, 1);
        S = "可以用?";
        Range.OlePropertySet("Value", S.c_str());
海星你好: 請修改上面紅色的部分試試看
海星
高階會員


發表:41
回覆:217
積分:106
註冊:2003-01-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-02-20 11:31:08 IP:61.218.xxx.xxx 未訂閱
抱歉..我剛剛終於自己搞定了,對以上兩位搶答者說聲抱歉, 以上的方法我早就試過了,如果有那麼簡單,我就不用上來問了, 到最後問題是出在 Excel 是 unicode 字串, 而我們傳過去的是 AscII字串,當然沒辦法運作, 所以要把 AnsiString S; 這一行改為 WideString S; 這樣子就搞定了 :D
系統時間:2024-07-03 5:45:00
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!