天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 4|回复: 0

对于excel文档的读取基本操作

[复制链接]
  • TA的每日心情
    开心
    昨天 15:23
  • 签到天数: 69 天

    [LV.6]常住居民II

    410

    主题

    167

    回帖

    2704

    积分

    管理员

    积分
    2704
    发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
    String excelPath; //外部excel文档的地址
        UpdateData();//将对话框中的数据复制给变量
        if (m_excelPath == _T(""))
        {
            MessageBox(_T("地址不能为空,请选择Excel文档!"));
            return;
        }
        else
        {
            excelPath = m_excelPath;//m_excelPath是与地址对话框绑定的变量
        }

        //设置基点,作为自动排布的所有实体的基点
        AcGePoint3d ptBase;
        ptBase.x = m_pointX;
        ptBase.y = m_pointY;
        ptBase.z = m_pointZ;
       
        //打开指定的Excel文档
        CoInitialize(NULL);//初始化
        if (!m_excel.pApp.CreateDispatch(_T("Excel.Application")))
        {
            MessageBox(_T("创建Excel服务失败!"));
            exit(1);
        }
        m_excel.pApp.put_Visible(FALSE);
        m_excel.pBooks.AttachDispatch(m_excel.pApp.get_Workbooks(), true);
        m_excel.pBook.AttachDispatch(m_excel.pBooks.Open(excelPath, vtMissing, vtMissing, vtMissing,
            vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing,
            vtMissing, vtMissing, vtMissing));
        m_excel.pSheets.AttachDispatch(m_excel.pBook.get_Worksheets(), true);
        m_excel.pSheet.AttachDispatch(m_excel.pSheets.get_Item(_variant_t("sheet1")), true);
        m_excel.pRange.AttachDispatch(m_excel.pSheet.get_Cells(), true);

        //获得Excel文档中已经使用的行数和列数
        m_excel.pRange = m_excel.pSheet.get_UsedRange();//获得列数
        m_excel.pRange = m_excel.pRange.get_Columns();
        int colNum = m_excel.pRange.get_Count();

        m_excel.pRange = m_excel.pSheet.get_UsedRange();//获得行数
        m_excel.pRange = m_excel.pRange.get_Rows();
        int RowNum = m_excel.pRange.get_Count();

        //读取Excel中指定单元的数据
        for (int i = 2; i <= RowNum; i++)
        {
            CString ptX = m_excel.GetCString(4, i);
            CString ptY = m_excel.GetCString(5, i);
            CString ptZ = m_excel.GetCString(6, i);
            CString rad = m_excel.GetCString(7, i);
            
            //按照excel文档中的数据转化成中心点
            AcGePoint3d ptExcel;
            ptExcel = strToDouble(ptX, ptY, ptZ);//将字符串型数据转换成双精度型,其中strToDouble()函数是自己所写,这里就不另外给出
            double raduis ;
            raduis = strToDouble(rad);//将字符串型rad转换成双精度型

            //根据Excel中的图形类型,在模型空间添加相应的实体
            CString grapfType = m_excel.GetCString(2,i);
            if (grapfType == _T("圆"))
            {
                //根据选择的基点设定圆的中心点
                AcGePoint3d ptCenter;
                ptCenter.x = ptExcel.x + ptBase.x;
                ptCenter.y = ptExcel.y + ptBase.y;
                ptCenter.z = ptExcel.z + ptBase.z;
                AcGeVector3d vec(0,0,1);
                //定义实体圆
                AcDbCircle *pCir = new AcDbCircle(ptCenter, vec, raduis);
                PostToModelSpace(pCir);
            }
            if (grapfType == _T("直线"))
            {
                CString endPointX = m_excel.GetCString(8, i);
                CString endPointY = m_excel.GetCString(9, i);
                CString endPointZ = m_excel.GetCString(10, i);
                AcGePoint3d ptMid = strToDouble(endPointX, endPointY, endPointZ);
                //按照选择的基点设置起点和终点
                AcGePoint3d startPoint;//起点
                startPoint.x = ptExcel.x + ptBase.x;
                startPoint.y = ptExcel.y + ptBase.y;
                startPoint.z = ptExcel.z + ptBase.z;
                AcGePoint3d endPoint;//终点
                endPoint.x = ptMid.x + ptBase.x;
                endPoint.y = ptMid.y + ptBase.y;
                endPoint.z = ptMid.z + ptBase.z;

                //将直线添加到模型空间
                AcDbLine *pLine = new AcDbLine(startPoint, endPoint);
                PostToModelSpace(pLine);
            }
        }
        //完成所有操作后一定要清除掉excel文档相关的内容
        m_excel.pRange.ReleaseDispatch();
        m_excel.pSheet.ReleaseDispatch();
        m_excel.pSheets.ReleaseDispatch();
        m_excel.pBook.ReleaseDispatch();
        m_excel.pBooks.ReleaseDispatch();
        m_excel.pApp.Quit();
        m_excel.pApp.ReleaseDispatch();   

     

     

     

     

    对于excel文档的读取基本操作
    中国膜结构网打造全中国最好的膜结构综合平台 ,统一协调膜结构设计,膜结构施工,膜材采购,膜材定制,膜结构预算全方位服务。 中国空间膜结构协会合作单位。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|

    GMT+8, 2024-7-1 05:51 , Processed in 0.057912 second(s), 22 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表