自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Ep流苏的博客

但行好事,莫问前程。

  • 博客(112)
  • 收藏
  • 关注

原创 常用regex正则表达式

正则标记【单个】字符匹配任意字符:表示由任意字符组成\\:匹配一个‘\’\n:匹配换行\t:匹配制表符【单个】字符集(可以从里面任选一个字符)[abc]:可以是字母abc中任意一个[^abc]:非字母abc中的任意一个[a-zA-Z]:一个任意字母,不区分大小写[0-9]:一位任意数字【单个】简化字符集.:一个任意字符\d:等价于[0-9]\D:等...

2018-12-18 10:48:42 485

原创 Java8 时间字符串校验是否为对应的日期格式

这是因为在 Java 8 的新日期 API 下,yyyy 表示公元纪年(year-era),这种格式在解析日期时会检查公元位(G),不存在时会报错;上面例子中使用 parseDefaulting(ChronoField.ERA, 1) 设置一个默认的公元纪年位,表示公元后,就和我们正常的日期保持一致。如果使用非严格模式的 DateTimeFormatter 可能并不会真正的检查出日期字符串的错误,比如 20230230,转日期类型并不会报错,会自动转成一个正确的日期 20230228;

2023-11-06 22:44:12 564

原创 SpringBoot MVC 接口传参总结

1. URL 地址传参请求形式:http://localhost:8080/get/url/10086请求方法:GET POST获取参数:@RequestMapping(value = "url/{id}", method = {RequestMethod.GET, RequestMethod.POST})public String testPathParam(@PathVariable("id") String id) { return "URL 传参 " + id;}2. URL

2022-04-15 14:38:22 689

原创 请求第三方接口通用逻辑

/** * post 请求第三方接口 * * @param url 请求地址 * @param dto 请求参数 * @param apiDesc 接口描述 */private void postThird(String url, Object dto, String apiDesc) { try { log.info("【请求第三方】{},请求url: {}, 请求参数: {}", apiDesc, url, JSON.toJSONString(dto

2022-04-13 17:45:36 605

原创 Java实体类转URL参数

在请求某些第三方接口的时候,遇到了 POST 请求传参方式为拼接 URL 参数的形式,所以整了个实体类转 URL 参数的方法处理。代码实现只转换当前类属性/** * 通过实体类获取 URL Params * * @param clazz 实体类 * @return URL Params */public static String parseUrlParams(Object clazz) { // 遍历属性类、属性值 Field[] fields = clazz.getCl

2022-04-13 16:59:21 2151

原创 使用Redis进行接口限流

流程图代码实现/** * 是否限制接口请求 * * @param request 请求体 * @return true-禁止请求 false-允许请求 */private boolean limitApi(HttpServletRequest request) { String uri = request.getRequestURI(); String ip = request.getRemoteAddr(); String key = "limit:" + uri

2022-04-13 16:48:49 763

原创 【Java设计模式】六、6.11 行为型模式——解释器模式

6.11 解释器模式6.11.1 概述如上图,设计一个软件用来进行加减计算。我们第一想法就是使用工具类,提供对应的加法和减法的工具方法。//用于两个整数相加public static int add(int a,int b){ return a + b;}//用于两个整数相加public static int add(int a,int b,int c){ return a + b + c;}//用于n个整数相加public static int add(Integ

2022-03-19 20:26:05 144

原创 【Java设计模式】六、6.10 行为型模式——备忘录模式

6.10 备忘录模式6.10.1 概述备忘录模式提供了一种状态恢复的实现机制,使得用户可以方便地回到一个特定的历史步骤,当新的状态无效或者存在问题时,可以使用暂时存储起来的备忘录将状态复原,很多软件都提供了撤销(Undo)操作,如 Word、记事本、Photoshop、IDEA等软件在编辑时按 Ctrl+Z 组合键时能撤销当前操作,使文档恢复到之前的状态;还有在 浏览器 中的后退键、数据库事务管理中的回滚操作、玩游戏时的中间结果存档功能、数据库与操作系统的备份操作、棋类游戏中的悔棋功能等都属于这类。定

2022-03-16 16:39:36 125

原创 【Java设计模式】六、6.9 行为型模式——访问者模式

6.9 访问者模式6.9.1 概述定义:封装一些作用于某种数据结构中的各元素的操作,它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作。6.9.2 结构访问者模式包含以下主要角色:抽象访问者(Visitor)角色:定义了对每一个元素(Element)访问的行为,它的参数就是可以访问的元素,它的方法个数理论上来讲与元素类个数(Element的实现类个数)是一样的,从这点不难看出,访问者模式要求元素类的个数不能改变。具体访问者(ConcreteVisitor)角色:给出对每一个元素类

2022-03-16 16:36:24 124

原创 【Java设计模式】六、6.8 行为型模式——迭代器模式

6.8 迭代器模式6.8.1 概述定义:提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。6.8.2 结构迭代器模式主要包含以下角色:抽象聚合(Aggregate)角色:定义存储、添加、删除聚合元素以及创建迭代器对象的接口。具体聚合(ConcreteAggregate)角色:实现抽象聚合类,返回一个具体迭代器的实例。抽象迭代器(Iterator)角色:定义访问和遍历聚合元素的接口,通常包含 hasNext()、next() 等方法。具体迭代器(Con

2022-03-16 16:33:00 115

原创 【Java设计模式】六、6.7 行为型模式——中介者模式

6.7 中介者模式6.7.1 概述一般来说,同事类之间的关系是比较复杂的,多个同事类之间互相关联时,他们之间的关系会呈现为复杂的网状结构,这是一种过度耦合的架构,即不利于类的复用,也不稳定。例如在下左图中,有六个同事类对象,假如对象1发生变化,那么将会有4个对象受到影响。如果对象2发生变化,那么将会有5个对象受到影响。也就是说,同事类之间直接关联的设计是不好的。如果引入中介者模式,那么同事类之间的关系将变为星型结构,从下右图中可以看到,任何一个类的变动,只会影响的类本身,以及中介者,这样就减小了系统的

2022-03-16 16:31:54 140

原创 【Java设计模式】六、6.6 行为型模式——观察者模式

6.6 观察者模式6.6.1 概述定义:又被称为发布-订阅(Publish/Subscribe)模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。6.6.2 结构在观察者模式中有如下角色:Subject:抽象主题(抽象被观察者),抽象主题角色把所有观察者对象保存在一个集合里,每个主题都可以有任意数量的观察者,抽象主题提供一个接口,可以增加和删除观察者对象。ConcreteSubject:具体主

2022-03-16 16:29:44 121

原创 【Java设计模式】六、6.5 行为型模式——状态模式

6.5 状态模式6.5.1 概述【例】通过按钮来控制一个电梯的状态,一个电梯有开门状态,关门状态,停止状态,运行状态。每一种状态改变,都有可能要根据其他状态来更新处理。例如,如果电梯门现在处于运行时状态,就不能进行开门操作,而如果电梯门是停止状态,就可以执行开门操作。类图如下:代码如下:public interface ILift { //电梯的4个状态 //开门状态 public final static int OPENING_STATE = 1; //关门状

2022-03-16 16:26:58 84

原创 【Java设计模式】六、6.4 行为型模式——责任链模式

6.4 责任链模式6.4.1 概述在现实生活中,常常会出现这样的事例:一个请求有多个对象可以处理,但每个对象的处理条件或权限不同。例如,公司员工请假,可批假的领导有部门负责人、副总经理、总经理等,但每个领导能批准的天数不同,员工必须根据自己要请假的天数去找不同的领导签名,也就是说员工必须记住每个领导的姓名、电话和地址等信息,这增加了难度。这样的例子还有很多,如找领导出差报销、生活中的“击鼓传花”游戏等。定义:又名职责链模式,为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象

2022-03-16 16:18:58 201

原创 【Java设计模式】六、6.3 行为型模式——命令模式

6.3 命令模式6.3.1 概述日常生活中,我们出去吃饭都会遇到下面的场景。定义:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行存储、传递、调用、增加与管理。6.3.2 结构命令模式包含以下主要角色:抽象命令类(Command)角色: 定义命令的接口,声明执行的方法。具体命令(Concrete Command)角色:具体的命令,实现命令接口;通常会持有接收者,并调用接收者的功能来完成命令要执行的操作。实现者/

2022-03-14 18:11:33 187

原创 【Java设计模式】六、6.2 行为型模式——策略模式

6.2 策略模式6.2.1 概述先看下面的图片,我们去旅游选择出行模式有很多种,可以骑自行车、可以坐汽车、可以坐火车、可以坐飞机。作为一个程序猿,开发需要选择一款开发工具,当然可以进行代码开发的工具有很多,可以选择Idea进行开发,也可以使用eclipse进行开发,也可以使用其他的一些开发工具。定义:​ 该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委

2022-03-14 17:07:07 255

原创 【Java设计模式】六、6.1 行为型模式——模板方法模式

6、行为型模式行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象行为模式比类行为模式具有更大的灵活性。行为型模式分为:模板方法模式策略模式命令模式职责链模式状态模式观察者模式中介者模式迭代器模式访问者模式

2022-03-14 16:56:54 126

原创 【Java设计模式】五、5.7 结构型模式——享元模式

5.7 享元模式5.7.1 概述定义:​ 运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似对象的开销,从而提高系统资源的利用率。5.7.2 结构享元(Flyweight )模式中存在以下两种状态:内部状态,即不会随着环境的改变而改变的可共享部分。外部状态,指随环境改变而改变的不可以共享的部分。享元模式的实现要领就是区分应用中的这两种状态,并将外部状态外部化。享元模式的主要有以下角色:抽象享元角色(Flyweight):

2022-03-14 15:40:36 90

原创 【Java设计模式】五、5.6 结构型模式——组合模式

5.6 组合模式5.6.1 概述​ 对于这个图片肯定会非常熟悉,上图我们可以看做是一个文件系统,对于这样的结构我们称之为树形结构。在树形结构中可以通过调用某个方法来遍历整个树,当我们找到某个叶子节点后,就可以对叶子节点进行相关的操作。可以将这颗树理解成一个大的容器,容器里面包含很多的成员对象,这些成员对象即可是容器对象也可以是叶子对象。但是由于容器对象和叶子对象在功能上面的区别,使得我们在使用的过程中必须要区分容器对象和叶子对象,但是这样就会给客户带来不必要的麻烦,作为客户而已,它始终希望能够一致的对

2022-03-14 15:15:53 135

原创 【Java设计模式】五、5.5 结构型模式——外观模式

5.5 外观模式5.5.1 概述有些人可能炒过股票,但其实大部分人都不太懂,这种没有足够了解证券知识的情况下做股票是很容易亏钱的,刚开始炒股肯定都会想,如果有个懂行的帮帮手就好,其实基金就是个好帮手,支付宝里就有许多的基金,它将投资者分散的资金集中起来,交由专业的经理人进行管理,投资于股票、债券、外汇等领域,而基金投资的收益归持有者所有,管理机构收取一定比例的托管管理费用。定义:​ 又名门面模式,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一

2022-03-10 14:29:04 125

原创 【Java设计模式】五、5.4 结构型模式——桥接模式

5.4 桥接模式5.4.1 概述现在有一个需求,需要创建不同的图形,并且每个图形都有可能会有不同的颜色。我们可以利用继承的方式来设计类的关系:我们可以发现有很多的类,假如我们再增加一个形状或再增加一种颜色,就需要创建更多的类。试想,在一个有多种可能会变化的维度的系统中,用继承方式会造成类爆炸,扩展起来不灵活。每次在一个维度上新增一个具体实现都要增加多个子类。为了更加灵活的设计系统,我们此时可以考虑使用桥接模式。定义:​ 将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从

2022-03-10 14:27:25 109

原创 【Java设计模式】五、5.3 结构型模式——装饰者模式

5.3 装饰者模式5.3.1 概述我们先来看一个快餐店的例子。快餐店有炒面、炒饭这些快餐,可以额外附加鸡蛋、火腿、培根这些配菜,当然加配菜需要额外加钱,每个配菜的价钱通常不太一样,那么计算总价就会显得比较麻烦。使用继承的方式存在的问题:扩展性不好如果要再加一种配料(火腿肠),我们就会发现需要给FriedRice和FriedNoodles分别定义一个子类。如果要新增一个快餐品类(炒河粉)的话,就需要定义更多的子类。产生过多的子类定义:​ 指在不改变现有对象结构的情况下,动态地给

2022-03-10 14:19:02 84

原创 【Java设计模式】五、5.2 结构型模式——适配器模式

5.2 适配器模式5.2.1 概述如果去欧洲国家去旅游的话,他们的插座如下图最左边,是欧洲标准。而我们使用的插头如下图最右边的。因此我们的笔记本电脑,手机在当地不能直接充电。所以就需要一个插座转换器,转换器第1面插入当地的插座,第2面供我们充电,这样使得我们的插头在当地能使用。生活中这样的例子很多,手机充电器(将220v转换为5v的电压),读卡器等,其实就是使用到了适配器模式。定义:​ 将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。​ 适配器

2022-03-10 13:56:58 103

原创 【Java设计模式】五、5.1 结构型模式——代理模式

5 结构型模式结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。结构型模式分为以下 7 种:代理模式适配器模式装饰者模式桥接模式外观模式组合模式享元模式5.1 代理模式5.1.1 概述由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者

2022-03-10 11:04:48 96

原创 【Java设计模式】四、4.4 创建者模式——建造者模式

4.4 建造者模式4.4.1 概述将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。分离了部件的构造(由Builder来负责)和装配(由Director负责)。 从而可以构造出复杂的对象。这个模式适用于:某个对象的构建过程复杂的情况。由于实现了构建和装配的解耦。不同的构建器,相同的装配,也可以做出不同的对象;相同的构建器,不同的装配顺序也可以做出不同的对象。也就是实现了构建算法、装配算法的解耦,实现了更好的复用。建造者模式可以将部件和其组装过程分开,一步一步创建一个复杂的对

2022-03-02 17:47:34 159 1

原创 【Java设计模式】四、4.3 创建者模式——原型模式

4.3 原型模式4.3.1 概述用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的新对象。4.3.2 结构原型模式包含如下角色:抽象原型类:规定了具体原型对象必须实现的的 clone() 方法。具体原型类:实现抽象原型类的 clone() 方法,它是可被复制的对象。访问类:使用具体原型类中的 clone() 方法来复制新的对象。接口类图如下:4.3.3 实现原型模式的克隆分为浅克隆和深克隆。浅克隆:创建一个新对象,新对象的属性和原来对象完全相同,对于非基

2022-03-02 17:44:40 96

原创 【Java设计模式】四、4.2 创建者模式——工厂模式

4.2 工厂模式4.2.1 概述需求:设计一个咖啡店点餐系统。设计一个咖啡类(Coffee),并定义其两个子类(美式咖啡【AmericanCoffee】和拿铁咖啡【LatteCoffee】);再设计一个咖啡店类(CoffeeStore),咖啡店具有点咖啡的功能。具体类的设计如下:在java中,万物皆对象,这些对象都需要创建,如果创建的时候直接new该对象,就会对该对象耦合严重,假如我们要更换对象,所有new对象的地方都需要修改一遍,这显然违背了软件设计的开闭原则。如果我们使用工厂来生产对象,我们

2022-03-01 19:25:57 189

原创 【Java设计模式】四、4.1 创建者模式——单例模式

创建型模式的主要关注点是“怎样创建对象?”,它的主要特点是“将对象的创建与使用分离”。这样可以降低系统的耦合度,使用者不需要关注对象的创建细节。创建型模式分为:单例模式工厂方法模式抽象工程模式原型模式建造者模式4.1 单例设计模式单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的

2022-03-01 11:26:20 188

原创 【Java设计模式】三、软件设计原则

在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据6条原则来开发程序,从而提高软件开发效率、节约软件开发成本和维护成本。3.1 开闭原则对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类。因为抽象灵活性好,适应性广,只要抽象的合理,可以基本保持软件架构的稳定。而软件中易变的细节可以从抽象派生来的实现类来进行扩展,当软件需

2022-02-26 21:55:41 136

原创 【Java设计模式】二、UML图(类图)

统一建模语言(Unified Modeling Language,UML)是用来设计软件的可视化建模语言。它的特点是简单、统一、图形化、能表达软件设计中的动态与静态信息。UML 从目标系统的不同角度出发,定义了用例图、类图、对象图、状态图、活动图、时序图、协作图、构件图、部署图等 9 种图。2.1 类图概述类图(Class diagram)是显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。类图不显示暂时性的信息。类图是面向对象建模的主要组成部分。2.2 类图的作用

2022-02-26 21:47:06 5625

原创 【Java设计模式】一、设计模式概述

1 设计模式概述1.1 软件设计模式的产生背景"设计模式"最初并不是出现在软件设计中,而是被用于建筑领域的设计中。1977年美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫·亚历山大(Christopher Alexander)在他的著作《建筑模式语言:城镇、建筑、构造》中描述了一些常见的建筑设计问题,并提出了 253 种关于对城镇、邻里、住宅、花园和房间等进行设计的基本模式。1990年软件工程界开始研讨设计模式的话题,后来召开了多次关于设计模式的研讨会。直到1995 年,艾瑞克

2022-02-26 21:35:28 92

原创 文件上传接口Feign远程调用报错:MultipartException: Current request is not a multipart request

问题复现服务A 文件上传接口:@PostMapping("/upload")public R upload( @RequestParam("file") MultipartFile file, @RequestParam("otherparam") String otherParam) { //..... return R.success();}服务B使用Feign远程调用服务A的上传接口:@PostMapping("/service_a/up

2022-01-18 16:34:12 1349 1

原创 zip文件加密、解密解压实操,附带文件上传安全检查

Zip4J 使用今天接触到一个要解压上传的加密zip的需求,这里使用 zip4j 来实现加密解密。依赖<dependency> <groupId>net.lingala.zip4j</groupId> <artifactId>zip4j</artifactId> <version>2.9.0</version></dependency>加密/** * 添加普通文件为zip文

2022-01-05 20:48:41 3906

原创 IDEA远程debug调试JavaWeb项目

配置服务器上 web 项目所在 tomcat 文件:calalina.sh在文件开头增加CATALINA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=6666"这里 address=6666 端口要跟下面 IDEA 中配置相同。配置 IDEA :Edit Configurations -> 点击 + 选择 Remote(新版可能是 Remote JVM Debug) -> 配置服..

2021-11-24 09:42:26 517

原创 Java 类的五大成分

更多 Java 知识总结查看我的语雀知识库:https://www.yuque.com/zhangshuaiyin/java里面有更多Java 知识点总结和面试题关于类五大成分的修饰符,详情查看我的语雀Java 类的五大成分:成员变量构造方法代码块成员方法内部类成员变量在类中定义的变量叫做成员变量,由不同关键字修饰可分为:普通成员变量:没有特殊关键字修饰;静态成员变量:由 static 修饰;常量:由 static 和 final 修饰;示例:public clas.

2021-10-08 17:24:51 1961 1

原创 Java 内部类总结

更多 Java 知识总结查看我的语雀知识库:https://www.yuque.com/zhangshuaiyin/java里面有更多Java 知识点总结和面试题Java 内部类Java 内部类是 Java 类的五大成分之一,五大成分包括:成员变量、构造器、代码块、成员方法、内部类。在 Java 中,可以将一个类的定义放在另外一个类的定义内部,这就是内部类。内部类本身就是类的一个属性,与其他属性定义方式一致。​内部类分为:成员内部类、局部内部类、匿名内部类和静态内部类。静态内部类定义在类内.

2021-10-08 17:03:58 195

原创 Java 关键字总结

this、superthis 关键字代表当前类的实例对象的引用;super 关键字代表当前类的父类实例对象的引用;this() 方法代表当前类的构造方法,可以重载不同参数;super() 方法代表当前类父类的构造方法,可以重载不同参数;this(),super() 方法必须放在构造器的第一行(都要在第一行,所以不可能同时出现);finalfinal 关键字可以用来修饰类、方法、变量。final 修饰类:表示这个类不能被继承,final 类中的所有成员方法都会被隐式地指定为 final

2021-10-08 16:58:28 115

原创 Redis 基本数据结构

Redis 基础数据结构1. SDSSDS 是 Redis 实现的简单动态字符串(Simple Dynamic String),其结构定义如下:struct sdshdr { // 记录buf数组中已使用的字节数,即SDS字符串长度 int len; // 记录buf数组中未使用的字节数 int free; // 字节数组,用于保存字符串 char buf[];}结构上,len 属性记录了当前字符串的长度,与 C 字符串相比,能够以常数复杂度获取

2021-10-07 00:55:18 844

原创 【Excel】给Excel生成工作表目录

当工作表太多时,尽管有响应的命名,但还是不容易维护。所以通过以下步骤制作一个Excel工作表目录就方便很多了。操作步骤:第一步,在第一个工作表前面插入新的工作表,并命名为目录;第二步,打开公式选项卡中的名称管理器选项;第三步,点击新建,新建一个名称为 目录,引用位置为 =INDEX(GET.WORKBOOK(1),ROW(A1))&T(NOW()) 的名称;4. 第四步,在目录工作表的 B1 单元格内输入公式:=IFERROR(HYPERLINK(目录&"!

2021-09-23 10:16:44 6985 3

原创 【Excel】计算Excel中工作表的个数

第一种方法在常规单元格内输入 =INFO("numfile") 查看单元格数值就是工作表个数第二种方法Ctrl + F3 弹出名称管理器,点击新建,输入:=get.workbook(4) 并设置名称 x;在单元格内输入 =x ,单元格显示数值就是工作表个数第三种方法ALT+F11,弹出VBE窗口,CTRL+G在命令窗口输入 ?sheets.Count 回车输出的数字就是工作表个数...

2021-09-23 09:39:48 2658

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除