提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|使用教程|编辑:何跃|2022-01-06 11:00:24.437|阅读 1075 次
概述:我们在一些项目中仅需要导出简单的数据至Excel,这个过程有很多方法,但是今天我将为您分享的是在C++中导出自定义格式的Excel实现方法。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
本篇将分享如何导出如上图供货清单的代码实例
第一步:下载LibXL类库
第二步:新建项目并引入
#include "libxl.h" #include <sstream> using namespace libxl;第三步:主要功能实现
Book* book = xlCreateBook(); int logoId = book->addPicture(L"logo.png"); // 字体预设,包含字号、字色等,可以提前定义几个 Font* textFont = book->addFont(); textFont->setSize(8); textFont->setName(L"Century Gothic"); Font* titleFont = book->addFont(textFont); titleFont->setSize(38); titleFont->setColor(COLOR_GRAY25); Font* font12 = book->addFont(textFont); font12->setSize(12); Font* font10 = book->addFont(textFont); font10->setSize(10); // 格式预设,比如对齐、文本格式、边框格式等 Format* textFormat = book->addFormat(); textFormat->setFont(textFont); textFormat->setAlignH(ALIGNH_LEFT); Format* titleFormat = book->addFormat(); titleFormat->setFont(titleFont); titleFormat->setAlignH(ALIGNH_RIGHT); Format* companyFormat = book->addFormat(); companyFormat->setFont(font12); Format* dateFormat = book->addFormat(textFormat); dateFormat->setNumFormat(book->addCustomNumFormat(L"[$-409]mmmm\\ d\\,\\ yyyy;@")); Format* phoneFormat = book->addFormat(textFormat); phoneFormat->setNumFormat( book->addCustomNumFormat(L"[<=9999999]###\\-####;\\(###\\)\\ ###\\-####") ); Format* borderFormat = book->addFormat(textFormat); borderFormat->setBorder(); borderFormat->setBorderColor(COLOR_GRAY25); borderFormat->setAlignV(ALIGNV_CENTER); Format* percentFormat = book->addFormat(borderFormat); percentFormat->setNumFormat(book->addCustomNumFormat(L"#%_)")); percentFormat->setAlignH(ALIGNH_RIGHT); Format* textRightFormat = book->addFormat(textFormat); textRightFormat->setAlignH(ALIGNH_RIGHT); textRightFormat->setAlignV(ALIGNV_CENTER); Format* thankFormat = book->addFormat(); thankFormat->setFont(font10); thankFormat->setAlignH(ALIGNH_CENTER); Format* dollarFormat = book->addFormat(borderFormat); dollarFormat->setNumFormat( book->addCustomNumFormat(L"_($* # ##0.00_);_($* (# ##0.00);_($* -??_);_(@_)") ); // 数据填充,先根据我们自定义内容按照坐标添加sheet、title、绑定格式等 Sheet* sheet = book->addSheet(L"Sales Receipt"); sheet->setDisplayGridlines(false); sheet->setCol(1, 1, 36); sheet->setCol(0, 0, 10); sheet->setCol(2, 4, 11); sheet->setRow(2, 47.25); sheet->writeStr(2, 1, L"Sales Receipt", titleFormat); sheet->setMerge(2, 2, 1, 4); sheet->setPicture(2, 1, logoId); sheet->writeStr(4, 0, L"Apricot Ltd.", companyFormat); sheet->writeStr(4, 3, L"Date:", textFormat); sheet->writeFormula(4, 4, L"TODAY()", dateFormat); sheet->writeStr(5, 3, L"Receipt #:", textFormat); sheet->writeNum(5, 4, 652, textFormat); sheet->writeStr(8, 0, L"Sold to:", textFormat); sheet->writeStr(8, 1, L"John Smith", textFormat); sheet->writeStr(9, 1, L"Pineapple Ltd.", textFormat); sheet->writeStr(10, 1, L"123 Dreamland Street", textFormat); sheet->writeStr(11, 1, L"Moema, 52674", textFormat); sheet->writeNum(12, 1, 2659872055, phoneFormat); sheet->writeStr(14, 0, L"Item #", textFormat); sheet->writeStr(14, 1, L"Description", textFormat); sheet->writeStr(14, 2, L"Qty", textFormat); sheet->writeStr(14, 3, L"Unit Price", textFormat); sheet->writeStr(14, 4, L"Line Total", textFormat); for(int row = 15; row < 38; ++row) { sheet->setRow(row, 15); for(int col = 0; col < 3; ++col) { sheet->writeBlank(row, col, borderFormat); } sheet->writeBlank(row, 3, dollarFormat); std::wstringstream stream; stream << "IF(C" << row + 1 << ">0;ABS(C" << row + 1 << "*D" << row + 1 << ");\"\")"; sheet->writeFormula(row, 4, stream.str().c_str(), dollarFormat); } sheet->writeStr(38, 3, L"Subtotal ", textRightFormat); sheet->writeStr(39, 3, L"Sales Tax ", textRightFormat); sheet->writeStr(40, 3, L"Total ", textRightFormat); sheet->writeFormula(38, 4, L"SUM(E16:E38)", dollarFormat); sheet->writeNum(39, 4, 0.2, percentFormat); sheet->writeFormula(40, 4, L"E39+E39*E40", dollarFormat); sheet->setRow(38, 15); sheet->setRow(39, 15); sheet->setRow(40, 15); sheet->writeStr(42, 0, L"Thank you for your business!", thankFormat); sheet->setMerge(42, 42, 0, 4); // 数据写入,也是沿袭上述方法,根据定位填写,开发人员可以根据数据结构自定义该过程 sheet->writeNum(15, 0, 45, borderFormat); sheet->writeStr(15, 1, L"Grapes", borderFormat); sheet->writeNum(15, 2, 250, borderFormat); sheet->writeNum(15, 3, 4.5, dollarFormat); sheet->writeNum(16, 0, 12, borderFormat); sheet->writeStr(16, 1, L"Bananas", borderFormat); sheet->writeNum(16, 2, 480, borderFormat); sheet->writeNum(16, 3, 1.4, dollarFormat); sheet->writeNum(17, 0, 19, borderFormat); sheet->writeStr(17, 1, L"Apples", borderFormat); sheet->writeNum(17, 2, 180, borderFormat); sheet->writeNum(17, 3, 2.8, dollarFormat); // 保存表格并释放资源 book->save(L"receipt.xls"); book->release();以上,如果感兴趣的朋友可以揣摩一下这几个步骤,预设字体、格式、填充数据,是不是很简单呢。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn
本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢