LibXL库使用详解:libxl读取显示Excel表格数据

1、LibXL官方介绍

  LibXL是一个可以读写Excel文件的商业库。它不需要Microsoft Excel和.NET框架,结合了易于使用和强大的功能。LibXL库可用于从头开始生成新的电子表格以及从现有电子表格中提取数据或修改现有电子表格。LibXL 可以帮助您的应用程序以最小的工作量将数据导出到/从 Excel 文件中提取数据。
  它也可以用作报表引擎。LibXL库可用于C,C++,C#,Delphi,PHP,Python,PowerBASIC,Xojo,Fortran和其他语言。支持 Excel 97-2003 二进制格式 (xls)、Excel 2007-2021 XML 格式 (xlsx/xlsm)。支持 Unicode 和 64 位平台。有一个针对.NET开发人员的包装器和单独的Linux,Mac和iOS版本。LibXL可以不依赖EXCEL读取XLS和XLSX文件。包括设置对齐方式、字体、颜色等格式。支持C, C++, C#,Python等语言。并且支持多个平台windows、Linux、Mac等。下面仅介绍windows平台,C++语言的使用。详情可见官网介绍https://www.libxl.com/。
在这里插入图片描述

2、LibXL库下载

  官方下载地址:https://www.libxl.com/download.html,下载后打开压缩包后文件目录如下:
在这里插入图片描述

  • 重要文件介绍

bin 32位 动态链接库(需要将其放在可执行文件的目录)
bin64 64位 动态链接库
doc 函数说明的文档,用C++讲解的
examples 一些使用的例子,用C,C++,C#,python等语言的
include_c C的头文件
include_cpp C++的头文件
lib 32位微软Visual C++的库
lib64 64位微软Visual C++的库
net .NET使用的
stdcall 使用stdcall调用约定的32位动态库

3、LibXL库自带例子

3.1 performance项目

  功能:测试libxl库的性能,分别生成20000*256行列数字和字符串数据,分别保存为2个不同的excel文件;统计生成保存时间及速度。
在这里插入图片描述

3.2 invoice项目

  功能:设定格式,包括字体颜色居中等。
在这里插入图片描述

3.3 generate项目

  功能:设定公式,日期等。
在这里插入图片描述

3.4 format项目

在这里插入图片描述

3.5 extract项目

在这里插入图片描述

4、LibXL库VS环境配置

  在项目属性的include包含相应的include和lib;
在代码中需要#pragma comment(lib,”libxl.lib”),或者将lib添加到依赖项。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5、项目展示

功能:读取Excel数据表内容并在表格控件中显示出来。
在这里插入图片描述
源码下载地址:源码下载地址,包含解除行数限制已授权的Libxl_4.1.1库。

void CTestLibxlMFCAppDlg::OnInitExcelList(CString strFilePath)
{
	m_listExcel.DeleteAllItems();

	CReadExcelFile reader(strFilePath);
	m_nRowCount = reader.GetExcelRowsCount(0);
	m_nColumCount = reader.GetExcelColumsCount(0);

	CRect rect;
	m_listExcel.GetClientRect(&rect);
	int nWidth = rect.Width();
	m_listExcel.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_HEADERDRAGDROP | LVS_EX_SUBITEMIMAGES | LVS_EX_FULLROWSELECT);

	CStringArray arrHeaders;
	reader.ReadSheetHeaders(0, arrHeaders);
	for (int i = 0; i < arrHeaders.GetCount(); i++)
	{
		m_listExcel.InsertColumn(i, arrHeaders.GetAt(i), LVCFMT_CENTER, (int)(nWidth * (1.0/ m_nColumCount)));
	}

	for (int i = 0; i < m_nRowCount-1; ++i)
	{
		for (int j = 0; j < m_nColumCount; ++j)
		{
			CString sTmp = reader.GetCellStrValue(0,i+1,j);
			if (j == 0)
			{
				m_listExcel.InsertItem(i, sTmp);
			}
			else
			{
				m_listExcel.SetItemText(i, j, sTmp);
			}
		}
	}
}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

欧特克_Glodon

打赏我五毛,我吃饱接着搞!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值