zoukankan      html  css  js  c++  java
  • VC++ 访问EXCEL

    https://blog.csdn.net/baidu_37503452/article/details/78316671

    本地项目    VCExcelAccess

    DWORD dwStart = GetTickCount();
        CApplication app;
        CRange range;
        CWorkbook book;
        CWorkbooks books;
        CWorksheet sheet;
        CWorksheets sheets;
        LPDISPATCH lpdisp;
        COleVariant vresult;
        COleVariant covtrue((short)TRUE);
        COleVariant covfalse((short)FALSE);
        COleVariant covoptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
    
        //create the server
        if (!app.CreateDispatch("Excel.Application"))
        {
            AfxMessageBox("Cannot start Excel server");
            return;
        }
        app.put_DisplayAlerts(false);
        app.put_Visible(FALSE);
        books.AttachDispatch(app.get_Workbooks());
    
        CString ExcelFile = "G:\colibri\ISL3.5\MSA\7-4\MSA\1.xlsx";
        CString saveFile = "G:\colibri\ISL3.5\MSA\7-4\MSA\2.xlsx";
        //open file
        lpdisp = books.Open(
            ExcelFile,
            covoptional, covfalse, covoptional, covoptional, covoptional,
            covoptional, covoptional, covoptional, covoptional, covoptional,
            covoptional, covoptional, covoptional, covoptional);
    
        //get workbook
        book.AttachDispatch(lpdisp);
    
        //get worksheets
        sheets.AttachDispatch(book.get_Worksheets());
        
        /*lpdisp = book.get_ActiveSheet();
        sheet.AttachDispatch(lpdisp);*/
    
        CString str;
        sheet = sheets.get_Item(COleVariant((short)2));  //访问第二个sheet
        range = sheet.get_Range(COleVariant("A1"), COleVariant("Z1000"));
        VARIANT valArray = range.get_Value2();
    
        for (int row = 1; row <= 1000; row++)
        {
            for (int col = 1; col <= 26; col++)
            {
                str = GetCellVal(valArray, row, col);
                SetCellVal(valArray, row, col,"test");
            }
        }
    range.put_Value2(valArray);
        VariantClear(&valArray);
    book.SaveAs(COleVariant(saveFile), covoptional,
            covoptional, covoptional,
            covoptional, covoptional, (long)0, covoptional, covoptional, covoptional,
            covoptional, covoptional);
        book.Close(covoptional, COleVariant(ExcelFile), covoptional);
        books.Close();
        app.Quit();
    
    
    CString CVCExcelAccessDlg::GetCellVal(VARIANT data , int row, int col)
    {
        VARIANT val;
        long index[2];
        index[0] = row;
        index[1] = col;
        SafeArrayGetElement(data.parray, index, &val);    //获取值
        return  Var2CString(val);
    }
    
    int CVCExcelAccessDlg::SetCellVal(VARIANT data, int row, int col,CString strData)
    {
        VARIANT val;
        long index[2];
        index[0] = row;
        index[1] = col;
        variant_t var_Datacfg = (LPSTR)(LPCTSTR)strData;
        HRESULT hRet = ::SafeArrayPutElement(data.parray, index, &var_Datacfg);
        return  hRet;
    }
  • 相关阅读:
    玩转git分支
    python元组、列表的异同总结
    IOS推送通知測试工具PushMeBaby
    Target runtime Apache Tomcat v6.0 is not defined.错误解决方法
    Jmeter变量参数化及函数应用
    在Jmeter中使用自定义编写的Java测试代码
    使用LoadRunner监控Apache的步骤 (转)
    mysql-This version of MySQL doesn’t yet support ‘LIMIT & IN/ALL/ANY/SOME 错误解决
    Web服务器性能/压力测试工具http_load、webbench、ab、Siege使用教程
    JVM调优总结-调优方法
  • 原文地址:https://www.cnblogs.com/profession/p/12850483.html
Copyright © 2011-2022 走看看