Origin C访问Excel

Origin C访问Excel的流程跟访问Word差不多,可以参考Origin C访问Word

这里简单的演示怎样把Excel中的数据导入到Origin的工作表,用到的Excel文件位于Origin的安装目录下Samples\COM Server and Client\MS Office\Excel\FFTFiltering.xls,数据区域为A20:B259

具体代码如下:

void Origin_Access_Excel() { 
    Object excelApp, excelWbk;
    
    // Excel文件
    string strExcelFile = GetOriginPath() + "Samples\\COM Server and Client\\MS Office\\Excel\\FFTFiltering.xls";
    try {
        excelApp = CreateObject("excel.application");  // 创建Excel应用
        
        /*
        https://docs.microsoft.com/en-us/previous-versions/office/developer/office-2007/bb179167(v=office.12)
        expression.Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, 
                        Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad)
        Origin不支持图表的导入,第二个参数设置为0,第二个参数为true,以只读方式打开
        */
        excelWbk = excelApp.Workbooks.Open(strExcelFile, 0, true);  // 打开Excel文件
    } catch (int err) {
        if (!excelApp) {
            printf("打开Excel应用失败!");
            return;
        }
        printf("打开文件(%s)失败!", strExcelFile);
        excelApp.Quit();  // 退出Excel应用
        return;
    }
    excelApp.Visible = true;  // 显示打开的文档,否则会在后台运行
    
    // 打印Excel工作表的名字
    for (int i = 1; i <= excelWbk.Worksheets.Count; i++) {
        string wksName = excelWbk.Worksheets.Item(i).Name;
        printf("%s\n", wksName);
    }
    
    Object excelWks = excelWbk.Worksheets.Item(1);  // Excel中的第一个工作表
    if (!excelWks) {
        printf("获取工作表失败!");
        excelWbk.Close(false);  // 关闭文件,以防Excel问要不要保存
        excelApp.Quit();  // 退出Excel应用
        return;
    }
    
    // 看一下工作表中有多少行多少列已经使用了
    int nUsedRows = excelWks.UsedRange.Rows.Count;
    int nUsedCols = excelWks.UsedRange.Columns.Count;
    printf("使用了%d行,%d列\n", nUsedRows, nUsedCols);
    
    // 导入AB两列数据,列标签在19行,数据从20行开始,到259行结束
    string strLabelA = excelWks.Cells(19, 1);  // 拿到第19行第1列所在格的数据
    string strLabelB = excelWks.Cells(19, 2);  // 拿到第19行第2列所在格的数据
    Object excelRange;
    excelRange = excelWks.Range("A20:B259");
    if (!excelRange) {
        printf("获取工作表指定范围区域失败!");
        excelWbk.Close(false);  // 关闭文件,以防Excel问要不要保存
        excelApp.Quit();  // 退出Excel应用
        return;
    }
    // 取出指定范围区域的数据
    _VARIANT varValues;
    varValues = excelRange.Value;
    
    // 把取出的数据放入Origin的工作表
    Worksheet wks;
    wks.Create("Origin");  // 新建工作表
    wks.SetSize(-1, 2);  // 设置工作表为2列
    wks.PutData(varValues);  // 把数据放入Origin工作表
    wks.Columns(0).SetLongName(strLabelA);  // 设置列的LongName
    wks.Columns(1).SetLongName(strLabelB);  // 设置列的LongName
    
    excelWbk.Close(false);  // 关闭文件,以防Excel问要不要保存
    excelApp.Quit();  // 退出Excel应用
}

源码可于github下载:https://github.com/gkimeeq/OriginAdvancedApplication

转载于:https://www.cnblogs.com/Ooman/p/11089274.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值