2401_83793341 2024-10-08 19:12 采纳率: 25%
浏览 79
已结题

使用visual studio 工具用C++语音,调用openslsx库读取excel文件的sheet问题

环境:Vs2022
开发语言:c++
调用第三方库:Openslsx
excel文件的编码格式是ANSI
问题:调用openslsx库读取excel文件的sheet名称(中文的)、输出打印出出来的是乱码

img

img

  • 写回答

32条回答 默认 最新

  • 阿里嘎多学长 2024-10-08 19:12
    关注
    获得0.20元问题酬金

    AIGC生成:


    使用 Visual Studio 工具调用 OpenSLX 库读取 Excel 文件的 Sheet 问题

    你遇到的问题是:使用 OpenSLX 库在 C++ 中读取 Excel 文件的 Sheet 名称,输出打印出来的是乱码。

    解决方案:

    1. 确保 OpenSLX 库正确安装和配置。
    2. 使用 BSTR 类型来存储 Sheet 名称,避免乱码问题。
    3. 使用 WideCharToMultiByte 函数将 Unicode 字符转换为 ANSI 字符。

    示例代码:

    #include <openslx.h>
    #include <windows.h>
    
    int main() {
        // 创建 OpenSLX 对象
        XLApplication app;
        XLWorkbook workbook;
        XLWorksheet worksheet;
    
        // 打开 Excel 文件
        app.LoadFile("example.xlsx");
    
        // 获取工作簿
        workbook = app.GetWorkbook();
    
        // 获取工作表
        worksheet = workbook.GetWorksheet(1);
    
        // 获取工作表名称
        BSTR sheetName = worksheet.GetSheetName();
        WCHAR wideSheetName[256];
        wcscpy(wideSheetName, sheetName);
        char sheetNameAnsi[256];
        WideCharToMultiByte(CP_ACP, 0, wideSheetName, -1, sheetNameAnsi, 256, NULL, NULL);
        printf("%s\n", sheetNameAnsi);
    
        return 0;
    }
    

    在上面的代码中,我们使用 BSTR 类型来存储 Sheet 名称,然后使用 WideCharToMultiByte 函数将 Unicode 字符转换为 ANSI 字符,最后输出打印出来的 Sheet 名称。


    评论

报告相同问题?

问题事件

  • 系统已结题 10月16日
  • 修改了问题 10月9日
  • 创建了问题 10月8日