0

我正在尝试将西里尔字符写入在 OSX 应用程序中生成的电子表格中:

sheet = xlBookAddSheet(book, "Output", 0);
detailFormat = xlBookAddFormat(book, 0);
wchar_t *w_user = (wchar_t*)malloc(max_chars * sizeof(wchar_t));
//get wchar_t characters...
xlSheetWriteStr(sheet, row, column, w_user, detailFormat);

但最后一行将无法编译,因为xlSheetWriteStr期望const char*代替 w_user。

根据文档,我应该能够传入const wchar_t*. 有没有办法将我的国际字符写入单元格?

4

1 回答 1

1

LibXL 提供函数的头文件ANSIUNICODE版本。

愿意使用 API 的 unicode 版本的程序应该定义UNICODE宏。如果您使用的是 Visual Studio,则只需将其Project -> Properties -> Character Set设置为Use Unicode Character Set.

您所看到xlSheetWriteStr的实际上是一个最终具有值xlSheetWriteStrAor的宏xlSheetWriteStrW。ifUNICODE不定义前者,如果是 de 后者。

该函数xlSheetWriteStrA在 中声明SheetA.h,而xlSheetWriteStrW在 中声明SheetW.h

注意:如果你是一致的,那就更好了。如果您使用函数的 unicode 版本,请使用所有函数的 unicode 版本。我这样说是因为在您的示例中,我看到您使用的是 ansi 版本的xlBookAddSheet.

更新:对于库的 OSX 版本,宏是_UNICODE,前面带有下划线(有关详细信息,请参阅 libxl.h)。

于 2017-11-23T14:14:32.900 回答