在C++下导出excel还是件比较棘手的,虽说目前有很多方式导出,但是都不太方便. 没有像java下强大的poi直接导出二进制格式的excel文件.
1. QT下通过com组件调用excel
pro文件添加: LIBS += -lqaxserver -lqaxcontainer
获取com api文档:
QAxObject* excel = new QAxObject("excel.Application"); // wps 下 ET.Application
QFile outfile("d:/excel_doc.html");
QTextStream out( &outfile );
outfile.open( IO_WriteOnly | IO_Translate );
QString doc = excel->generateDocumentation();
out<<doc;
outfile.close();
缺点: excel导出严重依赖系统程序,QT com api虽说封装的很彻底,但是仍然很晦涩,使用起来不太方便. 仅仅设置单元格背景色这个功能在API找了半天,还是没解决
2. 第三方开源库
C++下几个开源库,大多数都是收费的(libxl等). libxls库不错免费,但是在windows下编译很不方便,libExcel也是采用libxls的核心库编译的,可以很方便在windows下编译,但是只能在vs05及以上版本编译,而且不支持中文.
3. excel特定html格式导出
excel可以打开特定格式的txt,html, 其中txt的表现形式太弱,只能简单显示单元格数据,无法设置格式
bool writeTxtToExcel()
{
QFile data("d:/test.xls");
if(!data.open(QFile::WriteOnly | QFile::Truncate))
{
return false;
}
QTextStream out(&data);
QString tt1=QString::fromLocal8Bit("外国");
QString tt2=QString::fromLocal8Bit("人文关怀");
out<<tt1<<"\t"<<tt2<<"\t"<<"\n"; //每个单元格以\t分隔,每行以\n分隔
out<<"25\t"<<"26\t";
data.close();
return true;
}
至于html格式,我们可以预先定义好一个excel模块文档,后另存为*.htm格式就行了; 打开代码发现真正数据部分就是一个Table,我们只要构建一个有数据的Table字符串,然后替换模块文档就可以了
<table width="665" border="0" cellpadding="0" cellspacing="0" style='width:498.75pt;border-collapse:collapse;table-layout:fixed;'>
<col width="72" span="4" style='width:54.00pt;'/>
<col width="137" style='mso-width-source:userset;mso-width-alt:4384;width:102.75pt;'/>
<col width="121" style='mso-width-source:userset;mso-width-alt:3872;width:90.75pt;'/>
<col width="119" style='mso-width-source:userset;mso-width-alt:3808;width:89.25pt;'/>
<tr height="19" style='height:14.25pt;'>
<td class="xl26" height="19" width="72" style='height:14.25pt;width:54.00pt;'/>
<td class="xl26" width="72" style='width:54.00pt;' x:num="3.472222222222222e-003">0:05</td>
<td class="xl26" width="72" style='width:54.00pt;' x:num="6.9444444444444441e-003">0:10</td>
</tr>
<tr height="19" style='height:14.25pt;'>
<td class="xl24" height="19" style='height:14.25pt;' x:str>1A1</td>
<td class="xl23"/>
<td class="xl23"/>
</tr>
</table>
缺点: 由于要预先生成模板,格式比较固定,修改起来也比较困难, 但是不依赖任何组件,使用起来效果也还不错
分享到:
相关推荐
在IT领域,C++是一种强大的...总之,C++导出Excel是一种实用的技能,它允许开发人员在不依赖于特定平台工具的情况下生成报表和数据分析文件。通过选用合适的库,可以轻松地将程序输出的数据转换为用户熟悉的Excel格式。
"mfc c++中导出Excel表格类"这个主题涉及如何使用C++和MFC来创建一个功能,允许程序生成并操作Excel文件。下面我们将深入探讨这一技术。 首先,你需要了解的是,微软并没有提供直接在C++中操作Excel的API。然而,...
然而,由于C++本身并不内置对处理像Microsoft Excel这样的电子表格文件的功能,开发者通常需要借助第三方库来实现从C++程序导出数据到Excel的工作。本文将详细介绍如何使用C++和特定的库,如`libxl`,来实现这个目标...
总结起来,"C++(VS2010)实现导出到Excel"项目涵盖了Windows桌面应用开发,MFC控件的使用,数据读取与文件写入,以及与Excel的交互。具体实现时,开发者需要对C++、MFC以及Excel编程有深入理解,同时考虑代码的兼容性...
我们在程序中处理Office文档的时候,常用的方法是OLE。在此提供了一个不依赖于OLE的对Excel操作的类...经测试在各个版本的vc和Borland C++下都能使用。兼容windows 系列下office 97 到office 2007所有版本的Excel文档。
VS2013 C++用list control 导入导出EXCEL2010/2003文件,导入(只做了简单插入,文件导入listcontrol后面上传),导出自定义路径和文件名,导出数据后自动获取文件名显示文件,对新手来说,网上的代码一个小错误都要...
在C++环境中,使用Microsoft Foundation Class (MFC) 库并结合Visual Studio 2010来导出数据到Excel是一种常见的需求。本教程将详细解释如何实现这一过程,包括必要的步骤和代码示例。 首先,你需要创建一个C++工程...
本工程以ole的方式实现了用C++编程对excel表进行操作。 运行本工程需要计算机安装office2003和VC6.0。无需配置环境,可以直接运行。 实现了把当前模板另存为一份,往表格中填写数据等比较基础重要的功能。扩展性很...
在C++Builder中,开发人员经常需要将应用程序中的数据导出到常见的电子表格格式,例如Microsoft Excel。在这个示例中,我们看到一个使用AdvStringGrid控件和VCL(Visual Component Library)组件来实现从数据库读取...
在这个“C++ Builder (BCB) Oracle 导出 Excel 表”的场景中,开发者的目标是将Oracle数据库中的特定表格数据导出到Excel文件中。为了实现这一功能,我们需要了解以下关键知识点: 1. **ODAC组件**:ODAC是Devart...
使用VC/C++生成excel的方式有很多,但是绝大部分要么是简单的csv文件,要么需要COM并已经安装ms excel,局限性比较大。 我这里提供一种使用C++编写以html脚本的方式生成xls文件的方法。不使用任何非C++标准库,支持...
Visual C++源代码 150 如何以数据源方式导出Excel文件Visual C++源代码 150 如何以数据源方式导出Excel文件Visual C++源代码 150 如何以数据源方式导出Excel文件Visual C++源代码 150 如何以数据源方式导出Excel文件...
Visual C++源代码 173 如何把水晶报表导出到Excel文件Visual C++源代码 173 如何把水晶报表导出到Excel文件Visual C++源代码 173 如何把水晶报表导出到Excel文件Visual C++源代码 173 如何把水晶报表导出到Excel文件...
2. **导出Excel库中的类**: 要在C++中使用Excel对象,首先需要导入相应的头文件,如"CApplication.h", "CRange.h", "CWorkbook.h", "CWorkbooks.h", "CWorksheet.h", 和 "CWorksheets.h"。这些类对应于Excel的COM...
Visual C++源代码 194 如何使用剪贴板导出Excel文件Visual C++源代码 194 如何使用剪贴板导出Excel文件Visual C++源代码 194 如何使用剪贴板导出Excel文件Visual C++源代码 194 如何使用剪贴板导出Excel文件Visual ...
本主题聚焦于如何利用C++Builder将数据导出到Excel表格,这对于数据分析、报表生成以及数据共享等场景至关重要。 在C++Builder中实现数据导出到Excel通常涉及以下步骤: 1. **引入必要的库**:首先,你需要包含...
"pb导出excel2007"这个主题涉及到的是如何在PowerBuilder中将数据窗口(DataWindow)的内容导出到Excel 2007格式的文件中。在实际开发中,有时我们需要将PB的数据窗口数据导出到Excel以便于分析、处理或分享,而这个...
在本主题"cxGrid带正副标题导出Excel"中,我们将探讨如何利用cxGrid控件在导出数据到Excel文件时,同时包含主标题(正标题)和副标题(副标题)。 首先,我们需要了解cxGrid的基本结构。cxGrid通常由几个主要部分...
QT导出EXCEL,从tableWidget列表获取数据导出到excel文件。导出过程使用了excel模板文件,可以从tableWidget读取固定的几列数据导出到excel文件中。其中excel事先设置好文件格式,后续直接读数写数即可。开发过程...