OLE方式控制WORD生成一个文档,包括自动生成表格

delphi操作word delphi操作word一、Delphi程序启动Word采用CreateOleObjects的方法来启动Word,调用VBA代码,具体实现过程为:首先使用GetActiveOleObject(Word.Application)判断当前内存中是否存在Word程序,如果存在,则直接连接,如果没有Word程序,则使用CreateOleObject(Word.Application)启动Wor 阅读详情

 

 

 

unit Unit1;

interface

uses  
      Windows,   Messages,   SysUtils,   Classes,   Graphics,   Controls,   Forms,   Dialogs,  
      StdCtrls;  
  type  
      TForm1   =   class(TForm)  
          Button1:   TButton;  
          procedure   Button1Click(Sender:   TObject);  
          procedure   InsertLines(LineNum   :   Integer);  
          procedure   CreateMailMergeDataFile;  
          procedure   FillRow(Doc   :   Variant;   Row   :   Integer;  
                                    Text1,Text2,Text3,Text4   :   String);  
      private  
          {   Private   declarations   }  
      public  
          wrdApp,   wrdDoc:   Variant;  
          {   Public   declarations   }  
      end;  
   
  var  
      Form1:   TForm1;  
   
  implementation  
   
  uses   ComObj;  
   
  Const   wdAlignParagraphLeft   =   0;  
  Const   wdAlignParagraphCenter   =   1;  
  Const   wdAlignParagraphRight   =   2;  
  Const   wdAlignParagraphJustify   =   3;  
  Const   wdAdjustNone   =   0;  
  Const   wdGray25   =   16;  
  Const   wdGoToLine   =   3;  
  Const   wdGoToLast   =   -1;  
  Const   wdSendToNewDocument   =   0;  
   
  {$R   *.DFM}  
   
  procedure   TForm1.InsertLines(LineNum   :   Integer);  
  var  
      iCount   :   Integer;  
  begin  
      for   iCount   :=   1   to   LineNum   do  
            wrdApp.Selection.TypeParagraph;  
  end;  
   
  procedure   TForm1.FillRow(Doc   :   Variant;   Row   :   Integer;  
                                    Text1,Text2,Text3,Text4   :   String);
  begin  
      Doc.Tables.Item(1).Cell(Row,1).Range.InsertAfter(Text1);  
      Doc.Tables.Item(1).Cell(Row,2).Range.InsertAfter(Text2);  
      Doc.Tables.Item(1).Cell(Row,3).Range.InsertAfter(Text3);  
      Doc.Tables.Item(1).Cell(Row,4).Range.InsertAfter(Text4);  
  end;  
   
  procedure   TForm1.CreateMailMergeDataFile;
  var  
      wrdDataDoc   :   Variant;  
      iCount   :   Integer;  
  begin  
      //   Create   a   data   source   at   C:/DataDoc.doc   containing   the   field   data  
      wrdDoc.MailMerge.CreateDataSource('C:/DataDoc.doc',,,'FirstName,   LastName,'   +  
                '   Address,   CityStateZip');  
      //   Open   the   file   to   insert   data  
      wrdDataDoc   :=   wrdApp.Documents.Open('C:/DataDoc.doc');  
      for   iCount   :=   1   to   2   do  
          wrdDataDoc.Tables.Item(1).Rows.Add;  
      //   Fill   in   the   data  
      FillRow(wrdDataDoc,   2,   'Steve',   'DeBroux',  
                  '4567   Main   Street',   'Buffalo,   NY     98052');  
      FillRow(wrdDataDoc,   3,   'Jan',   'Miksovsky',  
                  '1234   5th   Street',   'Charlotte,   NC     98765');  
      FillRow(wrdDataDoc,   4,   'Brian',   'Valentine',  
                  '12348   78th   Street     Apt.   214',   'Lubbock,   TX     25874');  
      //   Save   and   close   the   file  
      wrdDataDoc.Save;  
      wrdDataDoc.Close(False);  
  end;  

  procedure   TForm1.Button1Click(Sender:   TObject);
  var  
      StrToAdd   :   String;  
      wrdSelection,   wrdMailMerge,   wrdMergeFields   :   Variant;  
  begin  
      //   Create   an   instance   of   Word   and   make   it   visible
      wrdApp   :=   CreateOleObject('Word.Application');  
      wrdApp.Visible   :=   True;  
      //   Create   a   new   document  
      wrdDoc   :=   wrdApp.Documents.Add();  
      wrdDoc.Select;  
   
      wrdSelection   :=   wrdApp.Selection;  
      wrdMailMerge   :=   wrdDoc.MailMerge;  
   
      //   Create   MailMerge   data   file  
      CreateMailMergeDataFile;
   
      //   Create   a   string   and   insert   it   into   the   document  
      StrToAdd   :=   'State   University'   +   Chr(13)   +  
                              'Electrical   Engineering   Department';  
      wrdSelection.ParagraphFormat.Alignment   :=   wdAlignParagraphCenter;  
      wrdSelection.TypeText(StrToAdd);  
   
      InsertLines(4);  
   
      //   Insert   Merge   Data  
      wrdSelection.ParagraphFormat.Alignment   :=   wdAlignParagraphLeft;  
      wrdMergeFields   :=   wrdMailMerge.Fields;  
      wrdMergeFields.Add(wrdSelection.Range,'FirstName');  
      wrdSelection.TypeText('   ');  
      wrdMergeFields.Add(wrdSelection.Range,'LastName');  
      wrdSelection.TypeParagraph;  
      wrdMergeFields.Add(wrdSelection.Range,'Address');  
      wrdSelection.TypeParagraph;  
      wrdMergeFields.Add(wrdSelection.Range,'CityStateZip');  
   
      InsertLines(2);  
   
      //   Right   justify   the   line   and   insert   a   date   field   with  
      //   the   current   date  
      wrdSelection.ParagraphFormat.Alignment   :=   wdAlignParagraphRight;  
      wrdSelection.InsertDateTime('dddd,   MMMM   dd,   yyyy',False);  
   
      InsertLines(2);  
   
      //   Justify   the   rest   of   the   document  
      wrdSelection.ParagraphFormat.Alignment   :=   wdAlignParagraphJustify;  
   
      wrdSelection.TypeText('Dear   ');  
      wrdMergeFields.Add(wrdSelection.Range,'FirstName');  
      wrdSelection.TypeText(',');  
      InsertLines(2);  
   
      //   Create   a   string   and   insert   it   into   the   document  
      StrToAdd   :=   'Thank   you   for   your   recent   request   for   next   '   +  
              'semesters   class   schedule   for   the   Electrical   '   +
              'Engineering   Department.     Enclosed   with   this   '   +  
              'letter   is   a   booklet   containing   all   the   classes   '   +
              'offered   next   semester   at   State   University.     '   +  
              'Several   new   classes   will   be   offered   in   the   '   +  
              'Electrical   Engineering   Department   next   semester.     '   +  
              'These   classes   are   listed   below.';  
      wrdSelection.TypeText(StrToAdd);  
   
      InsertLines(2);  
   
      //   Insert   a   new   table   with   9   rows   and   4   columns  
      wrdDoc.Tables.Add(wrdSelection.Range,9,4);  
      wrdDoc.Tables.Item(1).Columns.Item(1).SetWidth(51,wdAdjustNone);  
      wrdDoc.Tables.Item(1).Columns.Item(2).SetWidth(170,wdAdjustNone);  
      wrdDoc.Tables.Item(1).Columns.Item(3).SetWidth(100,wdAdjustNone);  
      wrdDoc.Tables.Item(1).Columns.Item(4).SetWidth(111,wdAdjustNone);  
      //   Set   the   shading   on   the   first   row   to   light   gray  
      wrdDoc.Tables.Item(1).Rows.Item(1).Cells  
              .Shading.BackgroundPatternColorIndex   :=   wdGray25;  
      //   BOLD   the   first   row  
      wrdDoc.Tables.Item(1).Rows.Item(1).Range.Bold   :=   True;  
      //   Center   the   text   in   Cell   (1,1)  
      wrdDoc.Tables.Item(1).Cell(1,1).Range.Paragraphs.Alignment   :=  
                  wdAlignParagraphCenter;  
   
      //   Fill   each   row   of   the   table   with   data  
      FillRow(wrdDoc,   1,   'Class   Number',   'Class   Name',   'Class   Time',    
            'Instructor');  
      FillRow(wrdDoc,   2,   'EE220',   'Introduction   to   Electronics   II',  
            '1:00-2:00   M,W,F',   'Dr.   Jensen');  
      FillRow(wrdDoc,   3,   'EE230',   'Electromagnetic   Field   Theory   I',  
            '10:00-11:30   T,T',   'Dr.   Crump');  
      FillRow(wrdDoc,   4,   'EE300',   'Feedback   Control   Systems',  
            '9:00-10:00   M,W,F',   'Dr.   Murdy');  
      FillRow(wrdDoc,   5,   'EE325',   'Advanced   Digital   Design',  
            '9:00-10:30   T,T',   'Dr.   Alley');  
      FillRow(wrdDoc,   6,   'EE350',   'Advanced   Communication   Systems',  
            '9:00-10:30   T,T',   'Dr.   Taylor');  
      FillRow(wrdDoc,   7,   'EE400',   'Advanced   Microwave   Theory',  
            '1:00-2:30   T,T',   'Dr.   Lee');  
      FillRow(wrdDoc,   8,   'EE450',   'Plasma   Theory',  
            '1:00-2:00   M,W,F',   'Dr.   Davis');  
      FillRow(wrdDoc,   9,   'EE500',   'Principles   of   VLSI   Design',  
            '3:00-4:00   M,W,F',   'Dr.   Ellison');  
   
      //   Go   to   the   end   of   the   document  
      wrdApp.Selection.GoTo(wdGotoLine,wdGoToLast);  
      InsertLines(2);  
   
      //   Create   a   string   and   insert   it   into   the   document  
      StrToAdd   :=   'For   additional   information   regarding   the   '   +  
                            'Department   of   Electrical   Engineering,   '   +  
                            'you   can   visit   our   website   at   ';  
      wrdSelection.TypeText(StrToAdd);  
      //   Insert   a   hyperlink   to   the   web   page  
      wrdSelection.Hyperlinks.Add(wrdSelection.Range,'http://www.ee.stateu.tld');  
      //   Create   a   string   and   insert   it   into   the   document  
      StrToAdd   :=   '.     Thank   you   for   your   interest   in   the   classes   '   +  
                            'offered   in   the   Department   of   Electrical   '   +  
                            'Engineering.     If   you   have   any   other   questions,   '   +  
                            'please   feel   free   to   give   us   a   call   at   '   +  
                            '555-1212.'   +   Chr(13)   +   Chr(13)   +  
                            'Sincerely,'   +   Chr(13)   +   Chr(13)   +  
                            'Kathryn   M.   Hinsch'   +   Chr(13)   +  
                            'Department   of   Electrical   Engineering'   +   Chr(13);  
      wrdSelection.TypeText(StrToAdd);  
   
      //   Perform   mail   merge  
      wrdMailMerge.Destination   :=   wdSendToNewDocument;  
      wrdMailMerge.Execute(False);  
   
      //   Close   the   original   form   document  
      wrdDoc.Saved   :=   True;  
      wrdDoc.Close(False);  
   
      //   Notify   the   user   we   are   done.  
      ShowMessage('Mail   Merge   Complete.');  
   
      //   Clean   up   temp   file  
      DeleteFile('C:/DataDoc.doc');  
  end;

end.

office 复合文档数据结构解析“初探” 一、OLE(Object Linking and Embedding) 文件二进制结构 Office 文档(如:.doc、.ppt、.xls等)很多是复合文档(OLE文件),所有文件数据都是存储在一个或多个流中。每 个流都有一个相似的数据结构,用于存储元数据的数据结构。这些元数据有用户和系统的信息、文件属性、格式信 息、文本内容、媒体内容。宏代码信息也是以这种方式存储在复合文档中的。为了在...... 阅读详情

相关推荐

告别OLE和DOI:用SAP ABAP的cl_docx_document类搞定复杂Word模板打印(附完整代码)

本文详细介绍了如何利用SAP ABAP的cl_docx_document类实现高效、稳定的Word模板打印解决方案,替代传统的OLE和DOI方法。通过XML操作原理,该方法解决了格式控制、性能瓶颈和服务器兼容性问题,并附有完整代码示例和实战技巧。

weixin_33734785的博客 415

用bcb实 现Word 97 自 动 化

  ---- 要 在 应 用 程 序 中 控 制Word 97的 运 行, 首 先 必 须 在 编 制 自 动 化 客 户 程 序 时 使 其 头 文 件中 包 含 文 件ComObj.hpp, 写 入 #include 。 编 程 工具C + + Builder 的 开 发 者 把 调 用Word 97 自 动 化 对 象 的 功 能 大致 包 装 成 了 几 个Ole object class

fleamboy的专栏 1071

java导出生成word技术选型

1. 背景 在项目中需要将一些信息导出到word中,目前导出到word大致有6种解决方案 jacob Apache POI java2word itext JSP输出样式 使用xml 2. 技术选型 pageoffice 集成还是挺方便的,但是要安装它的软件 2.1 Jacob Jacob是Java-COM Bridge的缩写。他在java与微软的COM组件之间构建一座桥梁。使用Jacob自带的DLL动态链接库,并通过JNI的方式实现了在Java平台上对COM程序的调用。DLL动态链接

建洋的博客 1160

用Delphi进行word开发

使用以CreateOleObjects方式调用Word 实际上还是Ole,但是这种方式能够真正做到完全控制Word文件,能够使用Word的所有属性,包括自己编写的VBA宏代码。 ----------------------------------------- Word宏编辑器 Word能够真正地进行VBA代码的编辑,可以编写窗体、函数。 进入Word宏编辑器的方法:工具->宏->Vis

diligentcat的专栏 2537

PowerBuilder调用Word文档处理实战详解

htmltable {th, td {th {pre {简介:在IT开发中,PowerBuilder(PB)作为强大的数据库应用开发工具,常需与Microsoft Word集成以实现文档自动化处理。本文介绍如何通过OLE自动化技术在PB中调用Word,完成文档的创建、编辑、保存与关闭等操作。内容涵盖OLE对象创建、Word对象模型调用、错误处理机制及性能优化策略,适用于报告生成、模板打印等企业级应用场景。

weixin_42527665的博客 1070

Java基于Apache POI动态生成Word文档实战

在现代企业级应用开发中,文档自动化已成为提升效率、减少人工干预的重要手段。尤其是在报表生成、合同定制、数据导出等业务场景下,Java作为主流后端语言,具备强大的生态支持来实现Word文档的动态生成。本章将系统性地介绍Java动态生成Word的核心价值与技术背景,阐述其相较于传统手动编写文档的优势,包括可重复性、准确性以及与业务系统的无缝集成能力。当前主流技术方案中,Apache POI凭借对 Microsoft Office 格式的深度兼容,成为处理.docx文件的事实标准。

weixin_42581003的博客 1222

在Delphi中很精确地控制生成的WORD文档的格式

var    WordApplication1: TWordApplication; 通过以下的方式就可以在DELPHI中很精确地控制生成的WORD文档的格式。     //-----------------打开WORD-------------------------------      Wordapplication1.visible := true;    //显示WROD    

han99yi的专栏 4876

Delphi实现Word文档内容读取指南

Ole Automation(对象链接与嵌入自动化)技术是一项由微软公司开发的组件对象模型(COM)的扩展技术。这项技术允许应用程序通过编程方式控制另一个应用程序或组件,实现自动化处理。它建立在Ole技术的基础上,让应用程序能够通过定义好的接口进行交互,从而实现复杂功能的自动化。Ole Automation广泛应用于Windows操作系统中,用于实现文档处理、数据管理、网络管理等自动化任务。

weixin_26805451的博客 541

用DELPHI怎样生成WORD表格文档

Delphi与Word之间的融合技术      一、VBA代码含义      Microsoft   Word是一个集成化环境,是美国微软公司的字处理系统,但是它决不仅仅是一个字处      理系统,它集成了Microsoft   Visual   Basic,可以通过编程来实现对Word功能的扩展。      Microsoft   Visual   Basic在word中的代码即Wor

woshizhaoxuhui的专栏 2252

pb oleobject word使用

pb oleobject word使用

Labelme安装教程(附Anaconda安装教程)

本文详细介绍了如何安装Anaconda和Labelme,还提供了常见问题的解决建议。

HanYan_ing的博客 1万+

记录一次用Java生成word文档的经验

业务背景 最近接到一个需求需要将学员的基本信息生成word格式的内容,word的格式如下图所示 开发的任务就是将学员的信息替换掉表格中的** 即可,感觉还蛮简单的。 相信大家以前做的最多的是Java和Excel的转换的功能比较多吧,我也是如此,之前也没有做过word转换的功能,所以此次接到这个任务我也是一样,从网上找方法,在网上找了一些博客论坛大概有几种方法可以尝试。 几种解决思路 1:Jaco...

xiongyouqiang的博客 1万+

#基于原生JS的交互式代码高亮编辑器实现教程

本文介绍了一个轻量级交互式代码高亮编辑器的实现方案。该编辑器采用原生JavaScript开发,支持语法高亮、行号显示、主题切换等核心功能,适合嵌入博客、文档等场景使用。 项目技术栈包括HTML5/CSS3/JavaScript,使用Prism.js实现语法高亮,prettier提供代码格式化功能。编辑器界面分三个区域:顶部工具栏(语言选择/主题切换)、中间编辑区(行号+代码)、底部状态栏(语言/字符数)。 核心功能实现包括:通过contenteditable属性创建可编辑区域,Flex布局实现行号与代码同步

qq_42386733的博客 1035

java POI 导出 word 文档

优点:跨平台支持windows、unix和linux,生成word文件格式标准,支持文本、图片、表格、字体、段落、颜色、超链、页眉等各种格式的操作,支持多word合并,无需处理并发,不耗费服务器资源,运行稳定。这些服务包括: 打开文档、新建文档、查找文字、替换文字,插入文字、插入图片、插入表格,在书签处插入文字、插入图片、插入表格等。缺点:生成的文件本质上是xml,不是真正的word文件格式,有很多常用的word格式无法处理或表现怪异,比如:超链、换行、乱码、部分生成的文件打不开等。

weixin_42396752的博客 3856

Qt Design Studio 入门指南:从零开始打造炫酷UI(详细+实用+轻松上手)

本文是Qt Design Studio的详细入门指南,旨在帮助UI设计新手从零开始轻松打造炫酷界面。文章系统介绍了软件的核心概念、安装步骤、主界面解析,并通过创建一个完整的登录界面实例,手把手教学如何拖拽组件、设置属性、添加交互状态与动画。同时,分享了创建自定义组件、管理资源以及提升效率的实用技巧与常见问题解决方案,让读者能够快速上手并应用于实际项目开发。

devops8pract的博客 588

硬件工程师的蜗牛成长路

1、《模拟电路课程》R/L/C/继电器/光耦/二极管/三极管/MOS管磁珠/ESD/TVS/肖特基二极管/稳压二极管/保险丝/GDT/TSS/光耦/MOS/运放/BJT比较器/面板开关/按键开关/拨码开关/BUCK/LDO/电源防护器件LM5069单输出PLL/多路输出PLL/单端晶振/差分晶振/晶体(这方面不熟悉,待以后补充)1)速度传感器2)温度传感器3)倾斜角传感器4)火焰传感器5)红外传感器6)呼吸心跳采集chaunganqi1)数字隔离 电平转换芯片/磁隔离/专用隔离芯片。

caozhaokun的博客 1979

如何使用Java将Excel数据(含合并单元格)转换为Word表格

这篇文章介绍如何使用Java将Excel数据(含合并单元格)转换为Word表格并保留格式。

nuclear2011的博客 2959

29、集成电路测试技术解析

本文深入解析了集成电路测试技术,涵盖定制电路测试资源与策略、混合模拟/数字电路测试方法、数字测试模式生成难点与解决方案,以及可控性和可观测性的核心概念。同时详细讨论了固定故障、桥接故障和开路故障等主要故障模型及其检测方法。在测试技术的综合应用与优化方面,提出了合理配置测试资源、优化测试模式和设计测试流程的策略。最后展望了测试技术的发展趋势,包括集成化测试、自动化测试和智能化测试。通过全面掌握这些测试技术,可以有效提高集成电路的质量和可靠性,推动集成电路产业的发展。

work3的博客 204

java生成word的几种方案

1、 Jacob是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建一座桥梁。使用Jacob自带的DLL动态链接库,并通过JNI的方式实现了在Java平台上对COM程序的调用。DLL动态链接库的生成需要windows平台的支持。 2、 Apache POI包括一系列的API,它们可以操作基于MicroSoft OLE 2 Compound Document Format的...

qq_33271461的博客 1107

跨平台也要跑得像原生一样顺:SAP GUI for Java 的安装、配置、运维与自动化实战

摘要:SAP GUI for Java 作为跨平台客户端解决方案,在 S/4HANA 时代仍发挥关键作用,特别适用于 macOS/Linux 环境下的 ABAP 开发和系统运维。其主要优势包括:平台无关性(支持 Windows/macOS/Linux/UNIX)、与 Windows 版本一致的交互体验、对核心事务码(如 ST22/SM21)的完整支持。版本管理需注意 7.80 已停止支持,建议升级至 8.10。安装支持原生包和通用 JAR 两种方式,推荐团队标准化版本和连接配置(通过 SAP UI Land

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 678

【AI Agent 记忆共享实战】【下篇】多 Agent 会话 Session 统一共享实战:全链路工程落地、采集归一、MCP 服务、私有化部署、源码级实战

中篇我们已经锁定最终最优架构方案: 非侵入式、外部旁路采集、只读归一、中心化存储、MCP 按需检索注入。摒弃「改 Agent 源码」「软链接互通」「原生 Session 互导」等不现实方案。本篇直接落地可上线、可简历复用、可个人私有化部署多 Agent 异构 Session专属采集器(Claude/CODex/DSH/OpenCode/Kimi/WorkBuddy/ 豆包)统一消息归一化解析层(解决所有 Schema 异构)增量同步、去重、时间戳对齐核心逻辑。

十年老程序猿,AI 疯狂研究专家,前沿硬核知识分享 480

Java生成复杂word方案(FreeMarker + xml)

首先介绍几种java导出word方案   1、Jacob是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建一座桥梁。使用Jacob自带的DLL动态链接库,并通过JNI的方式实现了在Java平台上对COM程序的调用。DLL动态链接库的生成需要windows平台的支持。   2、 Apache POI包括一系列的API,它们可以操作基于MicroSoft OLE...

keke_Xin的专栏 1451

视图库对接系列(GA-T 1400)一、简单介绍

GA/T 1400《公安视频图像信息应用系统》 是我们需要参考看看的相关文档,里面有对应的标准和介绍,没有这个文档的话可以加群找我要。群的话 我放在最下面了。我们先简单想几个问题, 也就是这个协议主要干什么用的,为什么要有, 能做什么。

qq_37716298的博客 4285

java导出生成word的简单方法

最近做的项目,需要将一些信息导出到word中。在网上找了好多解决方案,现在将这几天的总结分享一下。 目前来看,java导出word大致有6种解决方案:   1、Jacob是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建一座桥梁。使用Jacob自带的DLL动态链接库,并通过JNI的方式实现了在Java平台上对COM程序的调用。DLL动态链接库的生成需要windows平台的支持。该方案只能在windows平台实现,是其局限性。   2、Apache POI包括一系列的API,它

lgxzzz的博客 1297

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

上一篇: OLE方式 word中插入图片
下一篇: TOLEContainer部件
pgnet
博客等级 码龄20年 9粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值