以下是一个示例代码,可以使用VC++ 6.0选择本地的Excel文件并读取其中的数据:

#include <afxwin.h>
#include <afxdisp.h>

void OpenExcelFile(CString filePath)
{
    // 初始化COM库
    CoInitialize(NULL);

    // 创建Excel应用程序对象
    _Application app;
    if (!app.CreateDispatch("Excel.Application"))
    {
        AfxMessageBox("无法创建Excel应用程序对象");
        return;
    }

    // 设置Excel应用程序是否可见
    app.put_Visible(TRUE);

    // 打开Excel文件
    Workbooks workbooks;
    _Workbook workbook;
    workbooks = app.get_Workbooks();
    if (!workbooks.Open(filePath, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing))
    {
        AfxMessageBox("无法打开Excel文件");
        app.Quit();
        return;
    }

    // 获取第一个工作表
    Sheets sheets;
    _Worksheet worksheet;
    sheets = workbook.get_Sheets();
    worksheet = sheets.get_Item(COleVariant((short)1));

    // 读取数据
    Range range;
    range = worksheet.get_UsedRange();
    long rowCount = range.get_Rows()->get_Count();
    long columnCount = range.get_Columns()->get_Count();
    CString strData;
    for (long row = 1; row <= rowCount; row++)
    {
        for (long column = 1; column <= columnCount; column++)
        {
            COleVariant cellValue;
            cellValue = range.get_Item(COleVariant(row), COleVariant(column))->get_Value2();
            if (cellValue.vt == VT_BSTR)
            {
                strData += CString(cellValue.bstrVal) + "\t";
            }
            else
            {
                strData += "\t";
            }
        }
        strData += "\n";
    }

    // 显示数据
    AfxMessageBox(strData);

    // 关闭Excel文件
    workbook.Close(FALSE);
    workbooks.Close();

    // 退出Excel应用程序
    app.Quit();

    // 释放COM库
    CoUninitialize();
}

// 对话框类
class CMyDialog : public CDialog
{
public:
    CMyDialog() : CDialog(IDD_MYDIALOG) {}

protected:
    virtual void DoDataExchange(CDataExchange* pDX)
    {
        CDialog::DoDataExchange(pDX);
    }

    afx_msg void OnButtonOpenExcel()
    {
        CFileDialog fileDialog(TRUE, _T("Excel Files (*.xls;*.xlsx)|*.xls;*.xlsx||"), NULL, OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST, _T("Excel Files (*.xls;*.xlsx)|*.xls;*.xlsx||"), this);
        if (fileDialog.DoModal() == IDOK)
        {
            CString filePath = fileDialog.GetPathName();
            OpenExcelFile(filePath);
        }
    }

    DECLARE_MESSAGE_MAP()
};

BEGIN_MESSAGE_MAP(CMyDialog, CDialog)
    ON_BN_CLICKED(IDC_BUTTON_OPEN_EXCEL, OnButtonOpenExcel)
END_MESSAGE_MAP()

// 应用程序类
class CMyApp : public CWinApp
{
public:
    virtual BOOL InitInstance()
    {
        CMyDialog dlg;
        m_pMainWnd = &dlg;
        dlg.DoModal();
        return FALSE;
    }
};

// 入口函数
CMyApp myApp;

以上代码包含一个对话框类 CMyDialog 和应用程序类 CMyApp,对话框中包含一个“打开Excel文件”按钮,点击按钮会弹出文件选择对话框让用户选择Excel文件,然后调用 OpenExcelFile 函数打开并读取Excel文件中的数据,并显示在消息框中。请注意,该代码使用了一些MFC和COM库,确保已经正确引入这些库文件。

此外,为了能够在VC++ 6.0中使用Excel COM对象,需要在项目设置中添加 #import 指令,如下所示:

#import "C:\Program Files\Microsoft Office\Office\MSO9.DLL" \
    rename("DocumentProperties", "DocumentPropertiesXL") \
    rename("RGB", "RBGXL") \
    exclude("IFont", "IPicture") no_dual_interfaces

#import "C:\Program Files\Microsoft Office\Office\EXCEL.EXE" \
    rename("DialogBox", "DialogBoxXL") \
    rename("RGB", "RBGXL") \
    rename("CopyFile", "CopyFileXL") \
    rename("ReplaceText", "ReplaceTextXL") \
    rename("FindText", "FindTextXL") \
    exclude("IFont", "IPicture") no_dual_interfaces

请根据实际安装路径修改上述 #import 指令中的文件路径

vc++60写一个从本地选择excel文件并且打开 读取到里面的数据

原文地址: http://www.cveoy.top/t/topic/h26R 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录