使用VB将excel用例自动转填到word规程用例

如何用单机版deepseek编写示例 以下是一个简单的 DeepSeek 编程示例,通过 API 调用实现智能对话功能:文末有链接。 阅读详情

一、背景描述

最近工作遇到需要繁琐的复制粘贴工作,即需要将excel格式的测试用例某些内容复制,再填写到word格式的版本中作为规程存档,这需要将excel用例中的对应内容复制粘贴到word模版的指定位置,用例太多这种复制粘贴较耗时。因此自己借助deepseek编写VB代码,实现自动将excel指定内容复制到word模版的指定位置,以此减少这一枯燥的工作量。接下来对我实现过程进行总结分享。

下面以几个简单登录的测试用例为例,如下图为excel表格中三个字段分别为‘TC步骤’、‘TC操作’、‘TC预期结果’,其中‘TC步骤’表示测试用例有几步,可见第一个用例有3步,每从1开始就是一个新用例,如下图可见有四个关于登录验证的用例,我打算将每个用例的测试操作和结果填写到对应的word表格中,有几个用例就循环填写到几个word表格中。

将要填写的word表格格式如下:其中‘标题’、‘测试目的’、‘预置条件’、‘测试步骤’、‘预期结果’中的内容都是从excel中自动获取的,实现了将excel中若干个用例逐个填写到多个word表格中。具体想在excel中获取哪些字段填写到word的哪个位置,根据下面代码灵活调整即可。

最后,在代码执行过程中,在excel下方会显示进度条用于查看执行进度.....

二、AI交互

编码过程中请求AI协助,和deepseek进行数轮交互,其中也遇到了很多问题,但最后都在其帮助下解决了,截取部分prompt提示词如下。

1、VBA在操作word文档时.Collapse Direction:=1的用法举例

2、使用Selection.InsertRowsBelow 1编程方法后,提示对象不支持该属性或方法

3、添加语句"Dim tbl As Table"后执行系统报错“用户定义类型未定义”是什么原因

4、我在代码中使用的是"Dim wordApp As Object, wordDoc As Object"来声明的对象,所以以这种对象声明的方式应该没有类似Table.Row(),Selection.InsertRowsBelow等类似直接对表格行处理的操作对么

5、Set tb1 = wordDoc.Tables(1) tb1.Rows.Add (tb1.Rows(3))这个是在表格中插入一行的方法,有没有类似指定某一行进行删除的方法?

6、上面代码中‘.Collapse Direction:=0 ' 0=wdCollapseEnd(定位到段落末尾)‌:ml-citation{ref="2,3" data="citationList"} ’这条代码什么意思

7、例如我有word文档,有编号:1.1.1.1.、1.1.1.2.、1.1.1.3.等等。。。如何将excel数据直接插入到这些编号后面

8、我使用如下代码并运行 “If para.Range.ListFormat.ListValueString Like "1.1.1.*" Then ”这行代码报错不支持这种属性或者方法?

9、我的word中有一个三级标题,三级标题下有四级标题,四级标题下有个表格。我想选中四级标题和其下面的表格将其复制到下面,并执行粘贴多次,假设我之前有一个四级标题和一个表格,那么经过我粘贴三次后,当前就有了四个四级标题和四个表格,如何通过VBA编程来实现

10、运行上输出代码提示‘headingRange.End = tableRange.Range.End’代码中的Range参数不可选?

11、这行代码如何理解“progressBar = WorksheetFunction.Rept("■", i \ 5) & WorksheetFunction.Rept("□", 20 - (i \ 5)) '每5%显示一个块‌:ml-citation{ref="2" data="citationList"}”

12、progressBar = WorksheetFunction.Rept("■", i \ 5) & WorksheetFunction.Rept("□", 20 - (i \ 5)) '每5%显示一个块‌:ml-citation{ref="2" data="citationList"}将这个代码放到程序中,本想让他实时显示程序执行进度,但是在程序执行中excel是进度条是不动的,直到程序执行完成才显示最终100%完成的进度条结果

三、代码实现

打开需要获取内容的excel文档,选择【开发工具】---【VB编辑器】进入VB编辑器后,点击新建【模块】后,将代码粘贴到模块上执行。

注:1、由于WPS使用了宏,所以的excel需要另存为xlsm格式。

2、有几个excel用例需要转填,就需要几个word模版表格,所以运行前需要准备好word模版,直接按照上面word模版复制和excel用例个数相同的word表格即可,word表格中原有内容不需要删除会自动覆盖。

Sub excel2word()
    Dim ws As Worksheet
    Dim DataRange As Range
    Dim wordApp As Object, wordDoc As Object, tbl As Object
      
    Dim str, str2, str3, headername1, headername2, headername3, headername4, headername5 As String
    Dim num, rowCount, colCount, i, g, p As Integer
    Dim found As Boolean
    Dim title, precondition, TCstep, TCop, TCpredict, progress As Long
    Dim searchtext As String
    
    Dim para As Object
    
    'Dim wordApp As Application
    'Dim wordDoc As Document
    'Dim tbl As Table
    Dim progressBar As String
    
    
    '【初始化excel文档、word文档,获取excel行数、列数以及需要的字段内容】
    Set ws = ThisWorkbook.Sheets("template")
    headername1 = "标题"
    headername2 = "预置条件"
    headername3 = "TC步骤"
    headername4 = "TC操作"
    headername5 = "TC预期结果"
    found = False
    
    colCount = ws.UsedRange.Columns.Count '获取excel有数据的列数
    rowCount = ws.UsedRange.Rows.Count '获取excel有数据的行数
    
    Set DataRange = ws.Range(ws.Cells(1, 1), ws.Cells(rowCount, colCount))
    i = 0
    g = 0
    p = 0
   
  '优化前54.47秒  优化后49.76秒 (不加最后的and判断)
  title = 0
  precondition = 0
  TCstep = 0
  TCop = 0
  TCpredict = 0
  
    For Each cell In DataRange.Rows(1).Cells
        If cell.Value = headername1 Then
            title = cell.Column
        ElseIf cell.Value = headername2 Then
            precondition = cell.Column
        
        ElseIf cell.Value = headername3 Then
            TCstep = cell.Column
        
        ElseIf cell.Value = headername4 Then
            TCop = cell.Column
        
        ElseIf cell.Value = headername5 Then
            TCpredict = cell.Column
            
        'ElseIf title > 0 And precondition > 0 And TCstep > 0 And TCop > 0 And TCpredict > 0 Then
        '    Exit For ' 全部找到后退出循环
        End If
    Next cell
        
    
    Set wordApp = CreateObject("Word.Application") ' 创建Word对象并打开文档
    'Set wordApp = New Word.Application
   
    wordApp.Visible = True  ' 显示Word程序以便调试
    Set wordDoc = wordApp.Documents.Open("D:\wng项目\VBAexcel2word\ceshi.docx", ReadOnly:=False) 'readonly可以不写只要后面释放正确,就不担心word再次打开为只读

     
    
    '【每个word表格行数调整,确保每个表格行数正好适配每个用例】
    searchtext = "其它说明"
     '判断行数够不够,多则删除少则增加,先将除第一行以后的多余行删除,再根据需要在所有word表格中进行前向插入。
    For h = 2 To rowCount
        str = DataRange.Cells(h, TCstep).Value '获取TC步骤的数值
        num = CInt(str) '将字符转为数字
        
        If num = 1 Then
            g = g + 1
        End If
        
        
        If num > 1 Then
            Set tb1 = wordDoc.Tables(g) '无效的调用过程或参数,原因是word当中缺少表格,把表格加全就好了
            
            While InStr(wordDoc.Tables(g).cell(num + 5, 1).Range.Text, searchtext) = 0 '将word表格中num+5后多余的行删除
                tb1.Rows(num + 5).Delete
            Wend
            
            If InStr(wordDoc.Tables(g).cell(num + 5, 1).Range.Text, searchtext) Then
                      
                tb1.Rows.Add (tb1.Rows(num + 4)) '在num+4前插入行,deepseek说是在num+4后插入行,deepseek说错了,应该是在前插入行

            End If
        End If
    Next h
        

    
    
   '【循环向word中插入excel数据】

    For k = 2 To rowCount
        str = DataRange.Cells(k, TCstep).Value '获取TC步骤的数值
        num = CInt(str) '将字符转为数字
        

        If num = 1 Then
            i = i + 1
            str2 = CStr(i)
            str3 = "1.1.1." + str2 + "."
            
             '将excel标题插入到word类似1.1.1.1标题后
            For Each para In wordDoc.Paragraphs
            
             ' 判断段落是否包含目标编号(如 1.1.1.1)
                If para.Range.ListFormat.ListString Like str3 Then
                     ' 在编号后插入数据
                     With para.Range
                        .Collapse Direction:=1  ' 参数设置为0插入了段落的后面,但是结果是插入到了表格里面了。参数为1插入了段落的最前面。
                        .InsertAfter ws.Columns(title).Cells(k)  ' 插入 Excel 数据?:ml-citation{ref="4" data="citationList"}
                     End With
                     
                     Exit For '插入后退出循环
                 End If
            Next para
            
            wordDoc.Tables(i).cell(1, 2) = ws.Columns(title).Cells(k)
            wordDoc.Tables(i).cell(4, 2) = ws.Columns(precondition).Cells(k)
        End If
        
           
        wordDoc.Tables(i).cell(num + 5, 1).Range.Text = DataRange.Cells(k, TCop).Value
        wordDoc.Tables(i).cell(num + 5, 2).Range.Text = DataRange.Cells(k, TCpredict).Value
        
        
        
        
        '【进度条显示】
          
        'MsgBox "处理中。。。%" '需要每次进行点击确定的用户交互操作,不适用
        p = k
        progressBar = WorksheetFunction.Rept("■", p \ 1) & WorksheetFunction.Rept("□", rowCount - (p \ 1)) '每5%显示一个块?:ml-citation{ref="2" data="citationList"}
        Application.StatusBar = "处理进度: " & progressBar & " " & Format(p / rowCount, "0%")  '实时更新?:ml-citation{ref="1" data="citationList"}
        DoEvents      '解决excel不更新问题
          
    Next k
    
   
   

    ' 释放对象
    wordDoc.Save
    wordDoc.Close
    wordApp.Quit
    Set DataRange = Nothing
    Set ws = Nothing
    Set wordDoc = Nothing
    Set wordApp = Nothing
    Application.Wait Now + TimeValue("0:00:01")
    Application.StatusBar = False
End Sub


四、编程过程中AI交互总结

需求很明确,看着实现逻辑也比较清晰、简单,但实际编程过程又是一次缝缝补补,因为虽然了解VB是用于处理office软件的开发工具。但是真正使用VB语言操作office办公软件还是第一次。

经过和AI多次洽谈主要总结如下:

1、每次询问让大模型给出实例,根据实例运行结果将错误出现的位置代码复制,结合报错的原因一起再对AI追问

2、执行报错可能是因为你对某行代码不理解而错误使用对象导致,可复制不理解的代码让AI给出详细解释并举例说明,或直接询问我这样使用了但是报错这种使用方式是否正确

3、不同时刻AI的回答可能是相反的,比如这次回答:Direction:=0 ' 0=wdCollapseEnd,Direction:=1 ' 0=wdCollapsestart

下次回答Direction:=0 ' 0=wdCollapseStart,Direction:=1 ' 0=wdCollapseEnd,又或者回答错误,例如:某行代码AI说实现是在后插入行,运行结果是在前插入了行。可以下次提问中纠正其错误

4、有时发现自己提问中对某个场景的语言描述不够精准,但AI的回答中却使用了你想用却想不起来的词汇,那么你下次再提问就可以用这个词汇了。所以应该没啥提问技巧吧,所谓的提问技巧就是在不断提问中得到的。

【CSS中Flex布局详解】 Flex 布局由‌‌(父元素)和‌‌(子元素)构成:ml-citation{ref=“2,6” data=“citationList”}。通过设置容器属性或启用弹性布局:ml-citation{ref=“2,4” data=“citationList”}。 阅读详情

相关推荐

小程序强制更新避坑指南:手把手教你实现无缝升级

本文详细解析小程序强制更新的实现方法,重点介绍wx.getUpdateManager API的使用技巧,帮助开发者规避冷热启动机制下的版本管理陷阱。通过实战案例展示如何设计多级更新提示策略,确保用户无缝升级,提升小程序版本更新率。

star的博客 281

作业5

【代码】作业5。

David424242的博客 1122

Windows下TensorRT+YOLOv11部署避坑指南:从CUDA配置到模型加密全流程

本文详细解析了在Windows平台部署YOLOv11与TensorRT的全流程,重点涵盖从CUDA环境配置、工程编译适配到模型加密保护的实战指南。基于wang-xinyu的tensorrtx仓库,提供了详细的版本选择、编译问题修复方案,并深入探讨了如何对TensorRT引擎进行加密,以实现高效且安全的端到端部署。

vscode5coder的博客 450

flink web ui未授权漏洞处理

sudo htpasswd -c /etc/nginx/conf.d/.passwd flink # 需安装httpd-tools‌:ml-citation{ref="1,4" data="citationList"}# 指向Flink实际端口‌:ml-citation{ref="2" data="citationList"}# 基础认证配置‌:ml-citation{ref="1,4" data="citationList"}http://IP地址:8082 #8082未nginx代理端口。

jiedaodezhuti的博客 1272

Second-Order Cone Programming(SOCP) 二阶锥规划

个人博客Glooow,欢迎各位老师来踩踩 文章目录1. 二阶锥1.1 二阶锥定义1.2 二阶锥约束2. 优化问题建模3. 类似问题转化3.1 二次规划3.2 随机线性规划4. 问题求解 1. 二阶锥 1.1 二阶锥定义 在此之前,先给出二阶锥的定义。 在 kkk 维空间中二阶锥 (Second-order cone) 的定义为 Ck={[ut]∣u∈Rk−1,t∈R,∥u∥≤t} \mathc...

Glooow的博客 3万+

UE5与Cesium for Unreal结合:打造高效离线地图解决方案

本文详细介绍了如何利用UE5与Cesium for Unreal结合打造高效离线地图解决方案,特别适用于数字孪生、军事仿真等网络不稳定场景。通过优化配置、数据处理和性能调优,实现TB级地形数据的流畅渲染,并结合实战案例展示了在油田巡检等复杂环境中的应用效果。

weixin_29007135的博客 493

简单构造类型

在C语言中,一维数组的定义和初始化可以通过以下方式进行:// 定义一个整型数组,并初始化5个元素int arr[5];// 定义一个整型数组,未初始化arr[0] = 1;// 初始化第一个元素arr[1] = 2;// 初始化第二个元素// ...可以逐个初始化其他元素// 所有元素初始化为0// 前两个元素初始化为1和2,其余自动初始化为0// 数组大小为5在C语言中,数组的大小必须在编译时确定,且数组索引是从0开始到数组长度减1。

MeyrlNotFound的博客 1672

RK3588 实战级 YOLOv5 Android 全解析:NPU 量化 + 多线程 + 跟踪算法,源码一次买齐

本文将带你完成一个完整的AI视觉项目:在搭载RK3588芯片的Android开发板上运行实时目标检测与跟踪应用。实战目标:成功运行官方YOLOV5摄像头实时检测案例技术深度:深入理解RKNN开发框架和源码实现核心技能:掌握NPU推理、多线程并发、目标跟踪等关键技术。

FJN110的博客 158

LabVIEW互感器校验系统:从比差角差到自动测量

互感器校验是电力计量与检测中的基础环节,核心在于准确测量比差与角差两个关键指标。传统校验依赖专用仪器与人工读数,流程繁琐且易引入误差。借助LabVIEW虚拟仪器技术,结合精密电流源与纳伏表等硬件,可以实现信号的同步采集与自动处理。通过正弦拟合或FFT算法提取幅值与相位,进而计算比差角差,并自动生成校验报告。这一方案不仅适用于互感器生产厂家的出厂检验、计量机构的实验室校准,也可用于高校电力测量教学实验,有效提升测试效率与数据可信度。本文从测量原理出发,介绍硬件同步方案、软件框架及实践中的常见问题,为自建自动校

weixin_34038293的博客 164

整理 钢琴 约翰汤普森-简易钢琴(小汤)

文件名:(小汤1)约翰-汤普森钢琴1 超清PDF (原版引进)文件名:(小汤2)约翰-汤普森钢琴2 超清PDF (原版引进)文件名:(小汤3)约翰-汤普森钢琴3 超清PDF (原版引进)文件名:(小汤4)约翰-汤普森钢琴4 超清PDF (原版引进)文件名:(小汤5)约翰-汤普森钢琴5 超清PDF (原版引进)文件大小:20.1 MB。文件大小:23.7 MB。文件大小:45.7 MB。文件大小:51.7 MB。文件大小:72.0 MB。

TS的博客 5万+

基于STM32的设计智慧超市管理系统(带收银系统+物联网环境监测)_167

本系统主要由超市环境监测部分和商品管理部分组成。环境监测部分主控芯片采用STM32F103C8T6,主要包括温湿度传感器、烟雾传感器和空调制热开关、空调制冷开关,采集的数据通过ESP8266模块+MQTT协议上传至OneNet云平台,在OneNet云平台设计手机和电脑版本可视化页面,能够在页面上查看超市的环境信息,还能在页面上手动打开空调制热开关和空调制冷开关。商品管理部分主要由RC522-RFID读卡器、上位机组成,实现商品选购、结算、顾客的VIP会员卡注册管理等功能。

6071

CnOpenData A股上市公司招聘数据

就业是经济的“晴雨表”,更是社会的“稳定器”。稳定和扩大就业一直是国家宏观调控的重要目标,2021年中央经济工作会议八次提到“就业”这一关键词。在新冠肺炎疫情蔓延、世界经济下行及人口老龄化加快等多重因素的叠加之下,稳就业保民生成为我国当前及今后一段时间内的工作重点。招聘最直接的目的就是弥补企业人力资源的不足,这是招聘工作的前提。

CnOpenData_wj的博客 372

【62】OpenCV C++实战篇——【项目实战】OpenCV C++ 精准定位“十字刻度尺”中心坐标,过滤图片中的干扰,精准获取十字交点坐标

本文针对工业相机拍摄的2000万像素图像中十字刻度尺的精确定位问题进行了研究。面对图像较暗、存在红黄干扰、记号笔涂抹及细节模糊等难点,提出了一种基于霍夫变换的解决方案。通过灰度化、反色、二值化预处理后,对比分析了多尺度霍夫直线(HoughLines)和渐进概率霍夫线段(HoughLinesP)两种方法的定位效果。实验结果表明,HoughLinesP由于具有最小线段长度和间隙约束,在直线贴合度和交点定位精度上表现更优,其返回的线段端点坐标也更便于后续处理。该研究为工业视觉中微小目标的精确定位提供了实用参考。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 976

搭建MongoDB的分片集群

每个分片集群初始化方式同上,需区分不同的副本集名称‌3。

靡不有初,鲜克有终 488

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

c语言从键盘输入一组数据,当输入#时停止输入,求输入的这组数据中奇数与偶数的个数

【代码】c语言从键盘输入一组数据,当输入#时停止输入,求输入的这组数据中奇数与偶数的个数。

cuitlse的博客 359

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

10. 示例:设计APB总线接口并驱动时钟信号

APB是AMBA总线的一部分,主要用于低带宽的外设连接,比如UART、SPI等。需要设计一个APB接口,包含必要的信号,比如PCLK(时钟)、PRESETn(复位)、PADDR(地址)、PWRITE(读写控制)、PWDATA(写数据)、PRDATA(读数据)、PSELx(选择信号)、PENABLE(使能信号)和PREADY(传输完成)。APB接口应该包括modport定义,区分Master和Slave的端口方向。时钟块用于同步Master和Slave的信号,比如在时钟上升沿驱动和采样。

啄缘之间的博客 1876

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

11. 示例:实现一个带随机化和覆盖率的简单ALU验证环境

本文展示了一个完整的SystemVerilog ALU验证环境,包含接口定义、DUT实现和测试平台架构。DUT支持8种运算操作(加减、逻辑运算、移位等),测试平台采用带约束的随机化验证方法,定义了覆盖组监测操作码和零标志交叉覆盖率。验证环境包含事务驱动、结果检查、断言验证和错误注入机制,支持Xcelium/VCS仿真工具,并提供波形调试示例和覆盖率目标(100%操作码覆盖)。该环境通过随机测试、边界值检测和功能断言确保ALU设计正确性。

啄缘之间的博客 1443

第四五课:HarmonyOS Next社交应用开发全解析:功能实现与实战案例

HarmonyOS Next凭借‌分布式能力‌与‌原生ArkTS语言‌,为社交应用开发提供了从消息通信到数据安全的全链路解决方案。通过模块化架构设计‌6、高性能渲染引擎‌5及多设备协同能力‌3,开发者可快速构建即时通讯、社交平台等创新应用。建议优先采用系统级API(如分布式数据管理、GPU加速)提升性能,并结合分层权限控制保障用户隐私‌12。

m0_71441912的博客 1118

JavaScript表单验证demo

【代码】JavaScript表单验证demo。

weixin_42017221的博客 295

2024年Linux桌面革命:Wayland、HDR与Steam Deck如何改变游戏规则

这场变革不仅重塑了开发者工具链(如GNOME 46引入的GPU资源隔离机制)‌:ml-citation{ref="4" data="citationList"},更在消费市场催生出全新品类——搭载SteamOS的掌机设备全球出货量突破800万台,推动Linux在Steam平台用户占比达到4.7%的历史新高‌:ml-citation{ref="8" data="citationList"}。2024年Linux HDR技术栈在显示管线各环节实现深度整合,形成从底层驱动到上层应用的完整技术闭环。

小筱在线博客 1596

Vue2 → Vue3迁移实战:从Options API到Element Plus的避坑指南

Vue3响应式系统 vs Element Plus组件对比示意图核心差异总结:• 层级关系:Element Plus组件构建在Vue3响应式系统之上‌:ml-citation{ref=“3,6” data=“citationList”}• 交互方式:响应式系统处理数据变化 → 组件库处理UI渲染更新‌:ml-citation{ref=“1,6” data=“citationList”}

2202_75708745的博客 1393

第四十课:HarmonyOS Next物联网应用开发全指南:设备连接、数据处理与实战解析

/ 获取已信任设备列表‌:ml-citation{ref="3,4" data="citationList"}{ "name": "ohos.permission.ACCESS_TEE_SERVICE" } // TEE加密访问‌:ml-citation{ref="7" data="citationList"}conflictResolver: 'server_wins' // 冲突以云端为准‌:ml-citation{ref="1,6" data="citationList"}

m0_71441912的博客 1341

Mage第六周

配置文件格式说明:/etc/sudoers, /etc/sudoers.d/ 该文件由一系列规则组成,用于定义哪些用户或用户组可以在哪些主机上以哪些身份执行哪些命令。配置文件中支持使用通配符 glob格式:user host=(runas) [TAG:]command‌【user‌】:表示被授权的用户或用户组。可以是用户名、用户ID、%组名或%gid。使用用户名时,前面不需要加%;使用组名时,需要加%。‌【host‌】:表示主机名、IP地址、网络/子网掩码或Host_Alias别名。

weixin_51420358的博客 1069

服务器分区调整方案(不影响服务)

‌:数据备份与恢复占主要时间,分区调整通常在10分钟内完成。

qq_42281648的博客 1333
上一篇: 转载:一口气搞懂模型蒸馏
下一篇: 图像识别dlib工具的安装
罗德里格斯胡闳图
博客等级 码龄7年 60粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

罗德里格斯胡闳图

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值