POI 导出Excel 并且根据内容设置列宽自适应

POI:解决使用poi自带的excel自适应列宽方法导出的excel表头被遮挡问题 项目情况:       pmdb项目中需要导出excel文件,因为文件格式为最简单的表格样式,所以编写了一个通用的方法,通过输入查询出来的数据,生成excel,使用自适应的方式设置列宽。这时候虽然根据表格内容设置的列宽满足要求,但是表头的部分标题因为过长导致被遮挡。 解决方式:      查询了poi底层实现之后,发觉它是通过SheetUtil的getColumnWidth方法获取每列... 阅读详情

POI 导出Excel 并且根据内容设置列宽自适应

转载:POI 导出Excel 并且根据内容设置列宽自适应

package com.**;

import java.io.IOException;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Set;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;

import com.eos.system.annotation.Bizlet;
import commonj.sdo.DataObject;

public class ExcelExportUtil {

    /**
     * Excel导出
     *
     * @param criteriaEntity     DataObject 获取填充数据源的查询对象
     * @param fileName           生成的文件名前缀
     * @param response           HttpServletResponse响应
     * @param colToProperty      表格列名和DataObject对象Property应的LinkedHashMap
     * @param datePattern        日期格式数据格式
     * @param HttpServletRequest request 请求对象,用于无数据输出时,内部跳转
     * @param backPage           执行查询后无数据时返回画面
     * @author RangoLan
     */
    @Bizlet("数据写入Excel并生成下载")
    public static void exportExcel(String fileName, HttpServletRequest request, HttpServletResponse response, DataObject criteriaEntity, LinkedHashMap<String, String> colToProperty, String datePattern, String backPage) throws Exception {

        //根据查询对象criteria填充数据源
        DataObject[] datas = (DataObject[]) com.eos.foundation.database.DatabaseUtil.queryEntitiesByCriteriaEntity("default", criteriaEntity);
        if (datas != null && datas.length > 0) {

            if (datePattern == null) {
                datePattern = "yyyy-MM-dd";
            }

            SXSSFWorkbook workbook = new SXSSFWorkbook(1000);

            /** 设置格式* */
            workbook.setCompressTempFiles(true);

            // 表头样式
            CellStyle headerStyle = workbook.createCellStyle();

            //水平居中
            headerStyle.setAlignment(CellStyle.ALIGN_CENTER);
            //垂直居中
            headerStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
            //设置边框
            headerStyle.setBorderTop(CellStyle.BORDER_THIN);
            headerStyle.setBorderRight(CellStyle.BORDER_THIN);
            headerStyle.setBorderBottom(CellStyle.BORDER_THIN);
            headerStyle.setBorderLeft(CellStyle.BORDER_THIN);

            //设置颜色
            headerStyle.setFillForegroundColor(HSSFColor.LIGHT_GREEN.index);
            headerStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

            Font headerFont = workbook.createFont();
            headerFont.setFontHeightInPoints((short) 12);
            headerFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
            headerStyle.setFont(headerFont);
            // 单元格样式
            CellStyle cellStyle = workbook.createCellStyle();
            cellStyle.setAlignment(CellStyle.ALIGN_CENTER);
            //垂直居中
            cellStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
            //设置边框
            cellStyle.setBorderTop(CellStyle.BORDER_THIN);
            cellStyle.setBorderRight(CellStyle.BORDER_THIN);
            cellStyle.setBorderBottom(CellStyle.BORDER_THIN);
            cellStyle.setBorderLeft(CellStyle.BORDER_THIN);

            //设置自动换行
            cellStyle.setWrapText(true);

            //设置字体
            Font cellFont = workbook.createFont();
            cellFont.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
            cellStyle.setFont(cellFont);

            //DataObject属性Property数组
            String[] properties = new String[colToProperty.size()];
            //表头数组
            String[] headers = new String[colToProperty.size()];

            int ii = 0;
            for (Iterator<String> iter = colToProperty.keySet().iterator(); iter.hasNext(); ) {
                String fieldName = iter.next();

                headers[ii] = fieldName;

                properties[ii] = colToProperty.get(fieldName);

                ii++;
            }

            // 遍历集合数据,产生数据行,填充Excel
            int rowIndex = 0;
            Sheet sheet = null;
            for (DataObject data : datas) {
                if (rowIndex == 65535 || rowIndex == 0) {
                    sheet = workbook.createSheet();// 如果数据超过了,则在第二页显示
                    Row headerRow = sheet.createRow(0);// 表头 rowIndex=0
                    for (int i = 0; i < headers.length; i++) {
                        headerRow.createCell(i).setCellValue(headers[i]);
                        //设置表头样式
                        headerRow.getCell(i).setCellStyle(headerStyle);
                    }
                    rowIndex = 1;// 数据内容从 rowIndex=1开始
                }

                //创建行
                Row dataRow = sheet.createRow(rowIndex);
                for (int i = 0; i < properties.length; i++) {
                    //创建单元格
                    Cell newCell = dataRow.createCell(i);

                    Object o = data.get(properties[i]);
                    String cellValue = "";
                    if (o == null) {//为空处理
                        cellValue = "";
                    } else if (o instanceof Date) {//日期格式化处理
                        cellValue = new SimpleDateFormat(datePattern).format(o);
                    } else {
                        cellValue = o.toString();
                    }
                    //单元格赋值
                    newCell.setCellValue(cellValue);
                    //单元格格式设置
                    newCell.setCellStyle(cellStyle);
                }
                rowIndex++;
            }

            OutputStream out = null;

            //设置自动列宽
            for (int i = 0; i < headers.length; i++) {
                sheet.autoSizeColumn(i);
                sheet.setColumnWidth(i, sheet.getColumnWidth(i) * 17 / 10);
            }

            try {
                out = response.getOutputStream();
                fileName = fileName
                        + "_"
                        + new SimpleDateFormat("yyyyMMDDhh24mmssSSS")
                        .format(System.currentTimeMillis()) + ".xlsx";
                response.setContentType("application/x-msdownload");
                response.setHeader("Content-Disposition",
                        "attachment; filename="
                                + URLEncoder.encode(fileName, "UTF-8"));
                // 保存报表文件
                workbook.write(out);
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (out != null)
                        out.close();
                    response.flushBuffer();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        } else {
            // 无导出数据
            request.setAttribute("noDataToExport", "没有数据可以导出!");
            request.getRequestDispatcher(backPage).forward(request, response);
        }
    }
}

强调的是设置自适应列宽:sheet.autoSizeColumn(i);只这样设置是没有很好的效果的。

所以采取了以下两步:

//先设置自动列宽 
sheet.autoSizeColumn(i);
//设置列宽为自动列宽的1.7倍(当然不是严格的1.7倍,int的除法恕不再讨论),这个1.6左右也可以,这是本人测试的经验值
sheet.setColumnWidth(i,sheet.getColumnWidth(i)17/10);

经过测试,能够将excel的列宽很好的更具单元格的内容进行设置。

poi生成excel整理(设置边框/字体/颜色/加粗/居中/)

HSSFWorkbook wb = new HSSFWorkbook();

HSSFSheet sheet = wb.createSheet();

HSSFCellStyle setBorder = wb.createCellStyle();

一、设置背景色:

setBorder.setFillForegroundColor((short) 13);// 设置背景色
setBorder.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

二、设置边框:

setBorder.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框
setBorder.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框
setBorder.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
setBorder.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框

三、设置居中:

setBorder.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 居中

四、设置字体:

HSSFFont font = wb.createFont();
font.setFontName("黑体");
//设置字体大小
font.setFontHeightInPoints((short) 16);

HSSFFont font2 = wb.createFont();
font2.setFontName("仿宋_GB2312");
//粗体显示
font2.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
font2.setFontHeightInPoints((short) 12);
//选择需要用到的字体格式
setBorder.setFont(font);

五、设置列宽:

//第一个参数代表列id(从0开始),第2个参数代表宽度值
sheet.setColumnWidth(0, 3766);

六、设置自动换行:

//设置自动换行
setBorder.setWrapText(true);

七、通过row 对象设置行高

HSSFRow row = sheet.createRow(0);
//heightInPoints 设置的值永远是height属性值的20倍
row.setHeightInPoints(20);
HSSFRow row1 = sheet.createRow(5);
row1.setHeight((short) (25 * 20));

八、设置默认宽度、高度值

HSSFSheet sheet2 =  wb.createSheet("sheet2");   
sheet2.setDefaultColumnWidth(20);
sheet2.setDefaultRowHeightInPoints(20);

九、设置cell宽度(通过sheet 对象,setColumnWidth设置cell的宽度)

HSSFSheet sheet = wb.createSheet("sheet1");     
sheet.setColumnWidth(0, 20 * 256);

十、合并单元格:

// 参数1:行号 参数2:起始列号 参数3:行号 参数4:终止列号  
Region region1 = new Region(0, (short) 0, 0, (short) 6);
// 此方法在POI3.8中已经被废弃,建议使用下面一个  
CellRangeAddress region1 = new CellRangeAddress(rowNumber, rowNumber, (short) 0, (short) 11);  
// 参数1:起始行 参数2:终止行 参数3:起始列 参数4:终止列   
// 但应注意两个构造方法的参数不是一样的,具体使用哪个取决于POI的不同版本。 
sheet.addMergedRegion(region1); 

目前用过的就这么多,后续有新的会继续添加。

十一、加边框

 HSSFCellStyle cellStyle= wookBook.createCellStyle();
 cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
 cellStyle.setBorderBottom(HSSFCellStyle.BorderBORDER_MEDIUM);
 cellStyle.setBottomBorderColor(HSSFColor.BLACK.index);
 cellStyle.setBorderLeft(HSSFCellStyle.BORDER_MEDIUM);
 cellStyle.setLeftBorderColor(HSSFColor.BLACK.index);
 cellStyle.setBorderRight(HSSFCellStyle.BORDER_MEDIUM);
 cellStyle.setRightBorderColor(HSSFColor.BLACK.index);
 cellStyle.setBorderTop(HSSFCellStyle.BORDER_MEDIUM);
 cellStyle.setTopBorderColor(HSSFColor.BLACK.index);

十二、字体颜色

 Font font = wb.createFont();
 font.setFontHeightInPoints((short) 12); // 字体高度
 font.setFontName("宋体"); // 字体
 font.setColor(HSSFColor.RED.index); //颜色
 cellStyle.setFont(font);//选择需要用到的字体格式 
EasyExcel(一)导出Excel表列宽自适应 Easyexcel重写了poi对07版Excel的解析,一个3M的excel用POI sax解析依然需要100M左右内存,改用easyexcel可以降低到几M,并且再大的excel也不会出现内存溢出。。在EasyExcel中,LongestMatchColumnWidthStyleStrategy是一个列宽自适应策略。当我们在写入Excel数据时,如果希望根据数据的实际长度来自适应调整列宽,就可以使用这个策略。 阅读详情

相关推荐

Python:操作 Excel 设置行高和列宽

如何使用 Python 的 `openpyxl` 库,优雅地控制 Excel 表格的排版布局,实现行高、列宽的灵活设置与自动适配!

Kant2048的博客 2427

POI自定义excel样式及自适应列宽

POI版本 org.apache.poi:poi:3.17 org.apache.poi:poi-ooxml:3.17 样式定制 /** * 创建表格样式 * * @param wb 工作薄对象 * @return 样式列表 */ public static Map<String, CellStyle> createStyles(Workbook wb) { //内容样式 Map<

乘风的博客 1万+

电源完整性之Cadence Sigrity Power SI_AC阻抗仿真

之前和大家分享过电源完整性之仿真设计原理链接: [link](https://blog.youkuaiyun.com/weixin_41808082/article/details/117065140?spm=1001.2014.3001.5501).今天接着上一篇文章总结一下电源AC阻抗的的仿真操作流程及一些simulation中的设置参数,用到的时候Cadence Sigrity 中的Power SI组件,下面开始享受仿真的快乐吧: 1.仿真模式选择与文件导入 选择Cadence Sigrity下的Power SI

刘小同学的博客 1万+

poi-tl 列宽自适应

poi-tl ,Word表格,列宽自适应

一枚专心做大数据研发的摆烂程序员 3562

python实现ECMS算法

ECMS(Equivalent Consumption Minimization Strategy)算法是一种用于混合动力汽车能量管理系统的优化策略。它通过计算等效油耗来平衡电池电量消耗和燃油消耗,从而优化整体能耗。以下是一个简单的Python实现,用于演示ECMS算法的基本思想。这个实现假设了一个简单的混合动力汽车模型,其中电池电量和燃油消耗是主要的优化目标。

weixin_45570158的博客 921

ADS入门学习笔记——射频振荡器的设计

振荡器是射频系统中的基本部件之一,可以将直流功率转换为射频功率,在特定的频率点建立起稳定的正弦振荡,成为所需的射频信号源。

weixin_42126696的博客 8942

POI 合并单元格后设置列宽自适应的问题

POI设置列宽自适应的方法public void autoSizeColumn(int column, boolean useMergedCells); 可以看到除了第一个列标参数外,还有第二个useMergedCells的布尔值参数。它的意思是,在进行列宽自适应时,要不要考虑计算已经进行合并的单元格里面的数据,不设置的话默认是false。 区别展示 不进行设置或设置为false: sheet.autoSizeColumn(i); 可以看到流程实例和发起时间这两列,由于进行了单元格合并,并没有根据里面.

weixin_47614032的博客 2498

数控弯管机xyz转换ybc的算法_数控弯管机技术的更新和应用.pdf

您所在位置:网站首页 > 海量文档&nbsp>&nbsp汽车/机械/制造&nbsp>&nbsp机械/模具设计数控弯管机技术的更新和应用.pdf3页本文档一共被下载:次,您可全文免费在线阅读后下载本文档。 下载提示1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。2.该文档所...

weixin_31493101的博客 1520

POI导出Excel:设置字体、颜色、行高自适应、列宽自适应、锁住单元格、合并单元格...

点击关注公众号,利用碎片时间学习1. 前言poi框架可以支持我们在java代码中, 将数据导出成excel , 在实际开发中, 往往还需要设置excel字体,颜色,行高,列宽等属性, 有时候还需要锁住单元格, 防止别人讲数据随意篡改.废话不多说, 直接上代码2. 锁住单元格导出excel , 自然就有导入excel 了, 比如导出一些数据出来, 修改一些再导入进去, 但是...

Java笔记虾 1万+

SAP 公司间库存调拨通过IDOC完成自动发票校验

本文仅用于SAP软件的应用与学习,不代表SAP公司。(注:文中所示截图来源SAP ERP软件,软件相应著作权归SAP所有。公司间采购时,通过SAP内部EDI 数据传输功能, 由销售方开的公司间发票自动触发采购方的发票校验。​欢迎扫码加如下微信,我会把大家拉到SAP PP学习群,随时欢迎跟我和其他SAP PP顾问一起交流和学习,如下图库存调拨订单,系统已经完成了发货方发货和收货方收货。

2402_84262664的博客 923

多周期路径及set_multicycle_path详解

默认情况下,每条路径都被定义为单周期,即源触发器在时钟的任一边沿启动(launch)的数据都应该由目的触发器在时钟的下一上升沿捕获(capture)。 有的设计需要在数据被捕获前提供一些额外的周期,这类路径被称为多周期路径。 一、set_multicycle_path命令 命令格式如下: set_multicycle_path .........

Jackiezhang1993的博客 4万+

poi设置自适应列宽的三种方法

sheet.autoSizeColumn(i); (版本不能太老)sheet.autoSizeColumn(i, true);(合并的单元格使用)sheet.setColumnWidth(i, “列名”.getBytes().length*2*256);(中文适用) 公式单元格自适应的是公式,将值算出后再设置: HSSFFormulaEvaluator evaluator = new HSSFFo...

风铃飞弦的博客 4万+

人形机器人电路板和算法分析

人形机器人电路板与算法深度剖析 电路板领域:人形机器人电子系统分为计算、驱动、感知、能源、通信五大模块。主控板采用高性能SoM(如NVIDIA Jetson AGX Orin),需满足严格电源完整性(PDN)与信号完整性(SI)要求;关节驱动板集成MCU、GaN/SiC功率器件及高精度编码器接口,采用刚柔结合PCB以适应狭小空间。挑战包括热-振可靠性(85°C/10G振动)、高密度互连(3mil线宽)及EMC兼容性。 算法领域:运动控制依赖MPC(模型预测控制)与强化学习(RL),实现实时动态平衡;感知算法

几十年资深高级架构师,技术专家的技术笔记。专注C、Java、Python、微服务、云原生、AI工程化及高并发系统分布式架构实战,分享源码剖析、性能调优与架构治理经验。 305

java导出excel设置行高列宽_POI 导出Excel 并且根据内容设置列宽自适应

package com.XXX;import java.io.IOException;import java.io.OutputStream;import java.net.URLEncoder;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Iterator;import java.util.Lin...

weixin_39929253的博客 2578

Unity Shader之路(一)什么是Unity Shader?

Unity Shader前言什么是UnityShaderUnity Shader和材质的关系 前言 众所周知,要想当游戏开发工程师,Unity中的Shader编写不得不摸,这一系列文章我将描写我的Shader学习之路,致敬冯乐乐的书Unity Shader入门精要,此篇什么是Unity Shader?希望能给后人一点方向 我们刚开始接触Unity的时候,总是会遇到材质,但是不了解材质都是什么,为什么可以在很多材质中选择,为什么有时候选择了其他材质后就不能达到我们想要的结果,为什么资源商店有那么多的材质,山.

TurboQ珞珈 2237

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

java导出excel导出数据加粗_POI 导出Excel 并且根据内容设置列宽自适应

package com.XXX;import java.io.IOException;import java.io.OutputStream;import java.net.URLEncoder;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Iterator;import java.util.Lin...

weixin_35828338的博客 2299

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

excel poi 的xml配置_POI 导出Excel 并且根据内容设置列宽自适应

package com.XXX;import java.io.IOException;import java.io.OutputStream;import java.net.URLEncoder;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Iterator;import java.util.Lin...

weixin_35823099的博客 559

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

POI导出excel--设置字体,颜色,行高自适应,列宽自适应,锁住单元格,合并单元格

1. 前言 poi框架可以支持我们在java代码中, 将数据导出成excel , 在上一篇 如何使用POI导出excel表格,以及处理浏览器无法识别下载文件的问题 中已经详细的进行了介绍 , 但是实际开发中, 往往还需要设置excel字体,颜色,行高,列宽等属性, 有时候还需要锁住单元格, 防止别人讲数据随意篡改. 废话不多说, 直接上代码 2. 锁住单元格 导出excel , 自...

zzzgd_666的博客 9万+

【112期】POI 导出 excel:设置字体、颜色、行高与列宽自适应

面试难免让人焦虑不安。经历过的人都懂的。但是如果你提前预测面试官要问你的问题并想出得体的回答方式,就会容易很多。此外,都说“面试造火箭,工作拧螺丝”,那对于准备面试的朋友,你只需懂一个字:刷!给我刷刷刷刷,使劲儿刷刷刷刷刷!今天既是来谈面试的,那就必须得来整点面试真题,这不花了我整28天,做了份“Java一线大厂高岗面试题解析合集:JAVA基础-中级-高级面试+SSM框架+分布式+性能调优+微服务+并发编程+网络+设计模式+数据结构与算法等”

2301_76348206的博客 2397

poi导出如何设定宽度_POI导出excel列宽自适应

让单元格宽度随着列和单元格值的宽度自适应://存储最大列宽Map maxWidth = new HashMap<>();// 将列头设置到sheet的单元格中for (int n = 0; n < columnNum; n++) {HSSFCell cellRowName = rowRowName.createCell(n); //创建列头对应个...

weixin_39584529的博客 2588

【112期】POI 导出 excel:设置字体、颜色、行高与列宽自适应、锁住与合并单元格

导出excel , 自然就有导入excel 了, 比如导出一些数据出来, 修改一些再导入进去, 但是这时, 一些基本信息我们不希望用户随意去修改, 这里就用到了excel的锁代码:// 创建Excel文件//锁定sheet这样的话, 这个sheet都会被锁定但是我们又希望开放一些单元格可以修改 , 这个时候就要细粒度的进行设置了创建一个cellStyle:然后在我们不需要锁定的单元格上, 给它这个 cellStyle// 设置dataRow这一行的第i个单元格不锁定。

2401_83916355的博客 1795

poi导出如何设定宽度_使用POI导出Excel自适应列宽的实现

使用POI导出Excel时,涉及到如何自适应列宽的问题。方法如下/*** 下载excel文件,内容使用MAP存放** @param response* @param headName* @param tableHead* @param tableBody* @throws IOException*/public static void downloadExcelMap(HttpServletRes...

weixin_30989967的博客 1643

POI导出excel:设置字体颜色、行高自适应、列宽自适应、锁住单元格、合并单元格

1. 前言 poi框架可以支持我们在java代码中, 将数据导出成excel,但是实际开发中, 往往还需要设置excel字体,颜色,行高,列宽等属性, 有时候还需要锁住单元格, 防止别人讲数据随意篡改. 废话不多说, 直接上代码 2. 锁住单元格 导出excel , 自然就有导入excel 了, 比如导出一些数据出来, 修改一些再导入进去, 但是这时, 一些基本信息我们不希望用户随意去修改, 这里就用到了excel的锁 sheet.protectSheet(密码) 代码: //创建Ex.

haiertadiedie的博客 4009

springboot + poi导出(excel)表格,支持中文自适应列宽

前言 优化springboot+poi导出excel表格,支持中文自适应的工具类. 工具类 import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.ap...

上善若水滴世界 2277
上一篇: 效率工具——Hutool 嘎嘎香,被秀到了!
下一篇: easypoi动态设置列宽,解决自动设置列宽失效
默 唁
博客等级 码龄7年 77粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值