在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>
缺点: 由于要预先生成模板,格式比较固定,修改起来也比较困难, 但是不依赖任何组件,使用起来效果也还不错
分享到:
相关推荐
c++控制台程序,导出EXCEl格式文件,小巧方便。
C++提供导出excel库,C++提供导出excel库,C++提供导出excel库,C++提供导出excel库
程序中想导出EXcel表格的朋友可下载!!要是没有资源分可联系我,可免费好用的类!C++ /MFC VS2008
VS2010(C++)MFC应用程序,List Control控件中数据导出到Excel VS2010,XP,Excel2003
我们在程序中处理Office文档的时候,常用的方法是OLE。在此提供了一个不依赖于OLE的对Excel操作的类...经测试在各个版本的vc和Borland C++下都能使用。兼容windows 系列下office 97 到office 2007所有版本的Excel文档。
本工程以ole的方式实现了用C++编程对excel表进行操作。 运行本工程需要计算机安装office2003和VC6.0。无需配置环境,可以直接运行。 实现了把当前模板另存为一份,往表格中填写数据等比较基础重要的功能。扩展性很...
使用VC/C++生成excel的方式有很多,但是绝大部分要么是简单的csv文件,要么需要COM并已经安装ms excel,局限性比较大。 我这里提供一种使用C++编写以html脚本的方式生成xls文件的方法。不使用任何非C++标准库,支持...
Visual C++源代码 173 如何把水晶报表导出到Excel文件Visual C++源代码 173 如何把水晶报表导出到Excel文件Visual C++源代码 173 如何把水晶报表导出到Excel文件Visual C++源代码 173 如何把水晶报表导出到Excel文件...
C++Builder 导出数据到EXCEL表格 C++Builder 导出数据到EXCEL表格 C++Builder 导出数据到EXCEL表格 C++Builder 导出数据到EXCEL表格
Visual C++源代码 194 如何使用剪贴板导出Excel文件Visual C++源代码 194 如何使用剪贴板导出Excel文件Visual C++源代码 194 如何使用剪贴板导出Excel文件Visual C++源代码 194 如何使用剪贴板导出Excel文件Visual ...
Visual C++源代码 150 如何以数据源方式导出Excel文件Visual C++源代码 150 如何以数据源方式导出Excel文件Visual C++源代码 150 如何以数据源方式导出Excel文件Visual C++源代码 150 如何以数据源方式导出Excel文件...
C++MFC 使用VS2010导出Excel的方法及步骤 ,基本方法与步骤,带有少量的代码实例,具有参考意义
Visual C++源代码 195 如何使用自动化导出Excel文件Visual C++源代码 195 如何使用自动化导出Excel文件Visual C++源代码 195 如何使用自动化导出Excel文件Visual C++源代码 195 如何使用自动化导出Excel文件Visual ...
QT导出EXCEL,从tableWidget列表获取数据导出到excel文件。导出过程使用了excel模板文件,可以从tableWidget读取固定的几列数据导出到excel文件中。其中excel事先设置好文件格式,后续直接读数写数即可。开发过程...
导出Excel示例(C++)【设置边框、设置背景色、合并单元格的示例】 点击确定按钮,导出EXCEL
c++读取excel表格并在控件中绘制曲线,通过命令可以读取excel表格中的数据,然后在teechart控件中可以绘制出一些曲线图,散点图,饼状图等等
DataGridView 添加图片 导出 excel 插入图片 添加图片 ,图片设置大小c# 包含源码
MFC C++ Excel 导出 打印