#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;

// 添加 #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 指令中的文件路径。


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

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