在VS2017中使用Xlslib对Excel进行操作

/*
2018-10-12 16:57:05
使用xlslib来对Excel文件的一些操作
VS2017编译的一些问题    (这个库只支持写)
*/
详细的编译过程见
参考:https://www.cnblogs.com/dongc/p/8256813.html

参照上述解决问题之前
先将所有的文件转换成dos风格
使用notepad++进行转化
    Edit->EOLConversion->Windows(CR LF) 转换成这种格式
    

错误信息:
error MSB3073: 命令“
echo 
D:\WindowsProgram\xlslib-package-2.5.0\xlslib\xlslib\build\msvc2017\bin/Win32_MSVC2012.Debug\createDLL -MWin32 -n
D:\WindowsProgram\xlslib-package-2.5.0\xlslib\xlslib\build\msvc2017\bin/Win32_MSVC2017.Debug\xlslib_dll.map -l
D:\WindowsProgram\xlslib-package-2.5.0\xlslib\xlslib\build\msvc2017\obj/xlslib_dll_Win32_MSVC2017.Debug\ -i
D:\WindowsProgram\xlslib-package-2.5.0\xlslib\xlslib\build\msvc2017\bin/Win32_MSVC2017.Debug\xlslib_dll.lib -W
D:\WindowsProgram\xlslib-package-2.5.0\xlslib\xlslib\build\msvc2017\obj/xlslib_dll_Win32_MSVC2012.Debug\

错误解决方式
属性->生成事件->生成后的事件 -> 命令行 ->从父集继承    (编译一次 就会出现该选项的)

如果需要写入中文 该怎么使用?
测试使用xlslib进行写文件
在写入的时候默认用的string

写入的部分代码:

    workbook wb;
    xf_t* xf = wb.xformat();
    worksheet* ws = wb.sheet(L"中文");
    std::string label = "Hello, World!";
    ws->label(0, 0, label, xf); // 从0开始数,第1行,第2列,即C3
    wb.Dump("workbook.xls");


看sheet 以及 label的实现

//sheet实现部分
worksheet* workbook::sheet(const string& sheetname)
{
    u16string str16;

    worksheet* pnewsheet = new worksheet(m_GlobalRecords, m_sheetIndex++);
    m_GlobalRecords.char2str16(sheetname, str16);

    m_Sheets.push_back(pnewsheet);

    // NOTE: Streampos defaults to 0
    // It has to be set somewhere else
    m_GlobalRecords.AddBoundingSheet(0, BSHEET_ATTR_WORKSHEET, str16);

    // Return a pointer to the just added sheet
    return m_Sheets.back();
}

worksheet* workbook::sheet(const ustring& sheetname)    //ustring 看定义 知道是 wstring
{
    u16string str16;

    worksheet* pnewsheet = new worksheet(m_GlobalRecords, m_sheetIndex++);
    m_GlobalRecords.wide2str16(sheetname, str16);

    m_Sheets.push_back(pnewsheet);

    // NOTE: Streampos defaults to 0
    // It has to be set somewhere else
    m_GlobalRecords.AddBoundingSheet(0, BSHEET_ATTR_WORKSHEET, str16);

    // Return a pointer to the just added sheet
    return m_Sheets.back();
}

//label实现部分
cell_t* worksheet::label(unsigned32_t row, unsigned32_t col,
                         const std::string& strlabel, xf_t* pxformat)
{
    label_t* lbl;

    lbl = new label_t(m_GlobalRecords, row, col, strlabel, pxformat);
    AddCell(lbl);

    return lbl;
}

cell_t* worksheet::label(unsigned32_t row, unsigned32_t col,
                         const ustring& strlabel, xf_t* pxformat)
{
    label_t* lbl;

    lbl = new label_t(m_GlobalRecords, row, col, strlabel, pxformat);

    AddCell(lbl);

    return lbl;
}


根据上面给出的接口 可以很好的写入中文

在需要使用中文的情况下 使用宽字符的形式即可

这个库只支持写Excel文件 我的天啦 = =

设置字体
参考:https://blog.csdn.net/davidsu33/article/details/43153701?utm_source=copy 

Windows的一些:

新细明体:PMingLiU
细明体:MingLiU
标楷体:DFKai-SB
黑体:SimHei
宋体:SimSun
新宋体:NSimSun
仿宋:FangSong
楷体:KaiTi
仿宋_GB2312:FangSong_GB2312
楷体_GB2312:KaiTi_GB2312
微软正黑体:Microsoft JhengHei
微软雅黑体:Microsoft YaHei

装Office会生出来的一些:

隶书:LiSu
幼圆:YouYuan
华文细黑:STXihei
华文楷体:STKaiti
华文宋体:STSong
华文中宋:STZhongsong
华文仿宋:STFangsong
方正舒体:FZShuTi
方正姚体:FZYaoti
华文彩云:STCaiyun
华文琥珀:STHupo
华文隶书:STLiti
华文行楷:STXingkai
华文新魏:STXinwei
--------------------- 

有更好的处理Excel的开源库 Xlnt

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你想在C程序调用xlslib库来创建和写入Excel文件,你需要按照以下步骤进行。 1. 下载并安装xlslib库。你可以从官网下载相应的源代码包并按照README文件的说明进行编译和安装。如果你使用Linux系统,可以使用以下命令安装xlslib库: ``` sudo apt-get install libxls-dev ``` 2. 在你的C程序引入xlslib库的头文件。例如,如果你想创建一个xls文件并写入数据,你需要包含`xlslib.h`头文件: ```c #include <xlslib.h> ``` 3. 创建一个xlsworkbook对象并添加一个worksheet: ```c xlsWorkBook* pWB; xlsWorkSheet* pWS; pWB = xls_new_book("UTF-8"); pWS = xls_add_sheet(pWB, "Sheet1"); ``` 4. 在worksheet写入数据。你可以使用`xls_write_str()`函数来写入字符串,`xls_write_number()`函数来写入数字,`xls_write_blank()`函数来写入空格等等。 ```c xls_write_str(pWS, 0, 0, "Name"); xls_write_str(pWS, 0, 1, "Age"); xls_write_str(pWS, 0, 2, "City"); xls_write_str(pWS, 1, 0, "John"); xls_write_number(pWS, 1, 1, 25); xls_write_str(pWS, 1, 2, "New York"); xls_write_str(pWS, 2, 0, "Mary"); xls_write_number(pWS, 2, 1, 30); xls_write_str(pWS, 2, 2, "London"); ``` 5. 保存并关闭workbook对象。 ```c xls_save(pWB, "example.xls"); xls_delete_book(pWB); ``` 6. 编译你的C程序时需要链接xlslib库。例如,如果你使用gcc编译器,可以使用以下命令: ``` gcc -o my_program my_program.c -lxls ``` 这将生成一个名为`my_program`的可执行文件,其包含你的C程序和xlslib的代码和符号。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值