当前位置: 首页 > 工具软件 > xlsLib > 使用案例 >

xlslib使用

勾起运
2023-12-01

xlslib是一个开源免费的xls生成库。不需要安装office。

编译:

在windows下编译是比较简单的,直接定位到目录xlslib\build下找对应VS版本,如果使用新版本可以使用旧版本的升级。当然些项目文件有些坑,编译不过的对应修改,还有就是配置不对,比如2012的目录还是2010导致后面找不到文件。这些都要仔细修改一下。此外它本身没有使用def也没有在头文件定义__declspec(dllexport) 导出之类,所以只生成dll是没有lib文件的。它提供了一个createDLL的项目,大概看了下好像是通过项目生成时生成map文件,然后通过map文件,生成DEF文件,再调用link.exe 生成dll和lib。

简单使用,lib和头文件根据实现位置调整。切换表好像不支持通过表名来切换,当然试了下,excel里是不能有同名表名的,所以自己建立一个map来保存表名和对应idx就行了。此外dump不支持宽字符,自己加一个就行了,这样可以避免在一些外语系统上使用中文文件名保存出问题的情况。

# define CPP_BRIDGE_XLS

#include "..\xlslibsrc\xlslib.h"

#ifdef WIN64
#pragma comment(lib,"../lib/xlslib_dll_x64.lib")
#else
#pragma comment(lib,"../lib/xlslib_dll.lib")
#endif // X64

class CXlsLib
{
private:
	// 单元格
	//cell_t* cell;
	//font_t* _font;
	//xf_t* xf;
	// //pWS->defaultColwidth(25);  //设置默认列宽
		//pWS->defaultRowHeight(30);  //设置默认行高
		//_font = pWB.font("Arial");
		//_font->SetBoldStyle(BOLDNESS_BOLD);  // 设置粗字体
		//_font->SetHeight(220);              //设置字体大小11
		//xf = pWB.xformat();
		//xf->SetFont(_font);
		//xf->SetFillBGColor(CLR_WHITE);
		//xf->SetFillFGColor(CLR_RED);
	// 工作簿
	workbook m_pWB;
	// 当前操作的工作表
	worksheet* m_pWS=NULL;
public:
	//获取工作簿
	workbook& GetWorkBook()
	{
		return m_pWB;
	}
	//获取当前工作表
	worksheet* GetCurWorksheet()
	{
		return m_pWS;
	}
	//创建新工作表
	worksheet* CreateWorkSheet(const std::wstring& SheetName)
	{
		m_pWS = m_pWB.sheet(SheetName);
		if (m_pWS)
		{
			m_pWS->MakeActive();
			return m_pWS;
		}
		return NULL;
	}
	//切换表
	worksheet* SelWordSheet(unsigned16_t SheetIdx)
	{
		worksheet* _pWS = m_pWB.GetSheet(SheetIdx);
		if (_pWS)
		{
			_pWS->MakeActive();
			m_pWS = _pWS;
		}
		return _pWS;
	}
	//从0开始
	cell_t* InsData(int row, int col, const std::wstring str)
	{
		if (m_pWS)
			return m_pWS->label(row, col, str);
		return NULL;
	}
	//从0开始
	cell_t* InsData(int row, int col, double num)
	{
		if (m_pWS)
			return m_pWS->number(row, col, num);
		return NULL;
	}
	//保存成xls文件
	int SaveExcelFile(const std::wstring& FileName)
	{
		return m_pWB.Dump(FileName);
	}
};

 类似资料: