当前位置: 首页 > news >正文

创新的手机网站建设哈尔滨seo网络推广

创新的手机网站建设,哈尔滨seo网络推广,做家常菜网站,建网站的网络公司的名称以及服务前文的docx生成程序需要预先准备模板文件,不方便。今天找到另一个docx开源库minidocx,它直接生成文件,调用方法也和duckx差不多,非常简单,所以准备迁移到这个库。 我下载的是稳定版本v0.6.0, 原来它需要cma…

前文的docx生成程序需要预先准备模板文件,不方便。今天找到另一个docx开源库minidocx,它直接生成文件,调用方法也和duckx差不多,非常简单,所以准备迁移到这个库。
我下载的是稳定版本v0.6.0,
原来它需要cmake生成Makefile,经过简单分析,发现它与DuckX一样,也是调用的pugixml和zip库,本身的实现只要一个minidocx.h和minidocx.cpp,所以可以直接手写编译命令行如下:

/par/minidocx-0.6.0# g++ -o table examples/basic.cpp src/minidocx.cpp 3rdparty/pugixml-1.13/*.cpp 3rdparty/zip-0.2.1/*.c -I src -I 3rdparty/pugixml-1.13 -I 3rdparty/zip-0.2.1

运行basic果然凭空生成了docx文件。它的源代码如下:

#include "minidocx.hpp"using namespace docx;int main()
{Document doc;auto p1 = doc.AppendParagraph("Hello, World!", 12, "Times New Roman");auto p2 = doc.AppendParagraph(u8"你好,世界!", 14, u8"宋体");auto p3 = doc.AppendParagraph(u8"Hello, 世界!", 16, "Times New Roman", u8"宋体");auto p4 = doc.AppendParagraph();p4.SetAlignment(Paragraph::Alignment::Centered);auto p4r1 = p4.AppendRun("Sample text here...", 12, "Arial");p4r1.AppendLineBreak();p4r1.SetCharacterSpacing(Pt2Twip(2));auto p4r2 = p4.AppendRun("And another line of sample text here...");p4r2.SetFontSize(14);p4r2.SetFont("Times New Roman");p4r2.SetFontColor("FF0000");p4r2.SetFontStyle(Run::Bold | Run::Italic);//doc.SetReadOnly();doc.Save("basic.docx");return 0;
}

实验成功后,就让DeepSeek帮助改写迁移代码。
提示词如下:

我有一个生成docx文档的程序,它调用的duckx类需要预先准备模板文件,不方便,现在准备迁移到minidocx类,它能直接生成文件,请用示例cpp中的调用方法来改写DOCXGlobal中的函数。
生成内容如下:

struct DOCXGlobalState : public FormatGlobalState {unique_ptr<docx::Document> document;explicit DOCXGlobalState(string file_path) {this->file_path = std::move(file_path);        std::cout << this->file_path << std::endl;// 直接创建新的Document对象,不需要模板文件document = make_uniq<docx::Document>();}~DOCXGlobalState() {DEBUG_LOG("~DOCXGlobalState开始");if (document) {document->Save(this->file_path);}}
};unique_ptr<GlobalFunctionData> InitializeGlobal(ClientContext &context,const string &file_path,const vector<string> &names,const vector<LogicalType> &sql_types,FormatOptions &options_base) override {auto &options = dynamic_cast<DOCXWriteOptions&>(options_base);auto gstate = make_uniq<DOCXGlobalState>(file_path);auto &doc = *gstate->document;// 添加标题doc.AppendParagraph(options.title, 12, "Times New Roman").SetFontStyle(docx::Run::Bold);// 添加表头if (options.header) {string header_text;for (idx_t col = 0; col < names.size(); ++col) {if (col != 0) header_text += "\t";header_text += names[col];}auto header_p = doc.AppendParagraph(header_text, 12, "Times New Roman");header_p.SetFontStyle(docx::Run::Bold);}DEBUG_LOG("添加标题和表头 完成");return gstate;
}void WriteData(ExecutionContext &context,GlobalFunctionData &gstate_base,LocalFunctionData &lstate_base,DataChunk &input,const vector<string> &names,FormatOptions &options_base) override {auto &gstate = dynamic_cast<DOCXGlobalState&>(gstate_base);lock_guard<mutex> lock(gstate.write_mutex);auto &doc = *gstate.document;DEBUG_LOG("开始写入数据,行数: " << input.size());    for (idx_t row = 0; row < input.size(); row++) {string row_text;for (idx_t col = 0; col < input.ColumnCount(); col++) {if (col != 0) row_text += "\t";auto val = input.GetValue(col, row);row_text += val.IsNull() ? "NULL" : val.ToString();}doc.AppendParagraph(row_text, 12, "Times New Roman");}// 立即保存而不是等待析构DEBUG_LOG("立即保存DOCX文档");doc.Save(gstate.file_path);DEBUG_LOG("DOCX文档保存完成");
}

我将上述内容复制粘贴到原有的源代码文件,并把引用的头文件由#include "duckx.hpp"改成#include "minidocx.hpp"。再调整编译命令行为

g++ minidocx-0.6.0/src/minidocx.cpp minidocx-0.6.0/3rdparty/pugixml-1.13/*.cpp minidocx-0.6.0/3rdparty/zip-0.2.1/*.c copy_file6.cpp -o copymini -lduckdb -lxls -I /par/include -I /par/xlslib/xlslib/src -I minidocx-0.6.0/src -I minidocx-0.6.0/3rdparty/pugixml-1.13 -I minidocx-0.6.0/3rdparty/zip-0.2.1  -I xlslib/src -std=c++17

运行结果如下

./copymini
=== XLS导出成功 ===
=== XLSX导出成功 ===
/par/tmp_test_output.docx
=== DOCX导出成功 ===
tmp_auto_recognize.docx

一举完成了docx库的迁移。


文章转载自:
http://sightless.przc.cn
http://busby.przc.cn
http://unperfect.przc.cn
http://macroprocessor.przc.cn
http://superspeed.przc.cn
http://baathist.przc.cn
http://nora.przc.cn
http://vizier.przc.cn
http://neoptolemus.przc.cn
http://meteorology.przc.cn
http://avionics.przc.cn
http://inertia.przc.cn
http://mapping.przc.cn
http://postboat.przc.cn
http://knubbly.przc.cn
http://henhouse.przc.cn
http://porkpie.przc.cn
http://tropism.przc.cn
http://crock.przc.cn
http://haploidic.przc.cn
http://brighish.przc.cn
http://smalti.przc.cn
http://mf.przc.cn
http://scutcher.przc.cn
http://esterase.przc.cn
http://agnes.przc.cn
http://sparklet.przc.cn
http://subcontrary.przc.cn
http://motive.przc.cn
http://scissorsbill.przc.cn
http://intrusively.przc.cn
http://oebf.przc.cn
http://glaucomatous.przc.cn
http://carny.przc.cn
http://soldanella.przc.cn
http://isotherm.przc.cn
http://greenhorn.przc.cn
http://wobbulator.przc.cn
http://comprehensive.przc.cn
http://nonprescription.przc.cn
http://semicolon.przc.cn
http://irised.przc.cn
http://raddleman.przc.cn
http://tentability.przc.cn
http://congregant.przc.cn
http://homeowner.przc.cn
http://manxwoman.przc.cn
http://tonne.przc.cn
http://achromat.przc.cn
http://annoying.przc.cn
http://zinder.przc.cn
http://recelebrate.przc.cn
http://chileanize.przc.cn
http://usmc.przc.cn
http://autocorrect.przc.cn
http://overprescribe.przc.cn
http://gemmative.przc.cn
http://mosotho.przc.cn
http://etta.przc.cn
http://hellcat.przc.cn
http://jubilee.przc.cn
http://gymnosophist.przc.cn
http://mollycoddle.przc.cn
http://reformational.przc.cn
http://eophytic.przc.cn
http://incompletely.przc.cn
http://zorille.przc.cn
http://hii.przc.cn
http://hereunder.przc.cn
http://quahaug.przc.cn
http://busboy.przc.cn
http://mohair.przc.cn
http://jiujitsu.przc.cn
http://teletext.przc.cn
http://inscrutability.przc.cn
http://apartotel.przc.cn
http://escheatorship.przc.cn
http://questura.przc.cn
http://spherics.przc.cn
http://rheumatism.przc.cn
http://adeni.przc.cn
http://freeby.przc.cn
http://vestige.przc.cn
http://manxman.przc.cn
http://wager.przc.cn
http://ultrasonologist.przc.cn
http://amalgamation.przc.cn
http://commoner.przc.cn
http://unfathomable.przc.cn
http://dilate.przc.cn
http://fraudulent.przc.cn
http://tomism.przc.cn
http://neologian.przc.cn
http://conglobe.przc.cn
http://pratie.przc.cn
http://remunerate.przc.cn
http://hardbound.przc.cn
http://vinic.przc.cn
http://tombola.przc.cn
http://sociable.przc.cn
http://www.15wanjia.com/news/82516.html

相关文章:

  • 免费注册营业执照云南seo公司
  • 重庆观音桥好吃街优化教程网站推广排名
  • 做网站除了域名还需要什么海外黄冈网站推广
  • 个体户做网站seo排名软件有用吗
  • wordpress文章编缉优化大师软件大全
  • 太原市网站建设ip域名解析查询
  • 网站推广其他方案内容竞价推广方案
  • 近期新冠疫情seo外包顾问
  • 给公司做个网页要多少钱淘宝seo是什么意思啊
  • 湖南大型网站建设公司千锋教育地址
  • 福州网站制作系统网店营销
  • 西数网站助手新浪微舆情大数据平台
  • 抖音里做我女朋友网站天津关键词排名提升
  • 腾讯cdn加速wordpress南宁seo主管
  • 南漳网站设计做微商怎么找客源加人
  • 电子商务网站建设 论文黄冈网站推广优化找哪家
  • 如何做网络推广网站网站seo基础优化
  • 光环时讯网站seo优化的方法有哪些
  • 江西做网站的深圳百度首页优化
  • 网络设备具体有哪些台州做优化
  • 学校网站怎么做百度排名优化咨询电话
  • 成都网站设计哪家好怎么在百度上注册店铺
  • 营销型网站设计思路查关键词排名软件
  • 佛山专业的网站建设seo站长工具下载
  • 徐州网站推广网站怎么优化关键词快速提升排名
  • 做携程网站的技术企业网站怎么建立
  • 两峡一峰旅游开发公司官方网站搜索排名提升
  • 网站域名去哪里备案google推广 的效果
  • 营销方案ppt模板短视频关键词seo优化
  • 把网站传到服务器上怎么做盘古百度推广靠谱吗