精华内容
下载资源
问答
  • XSLT不仅对发布网站有用,而且对转换或处理XML文档也很有用。 既然XSLT处理器随Java平台一起提供了(通过javax.xml.transform )包,您就不能忽略它。 XSLT程序员经常提出的问题是,您应该如何处理多个文档? ...

    xslt合并单元格

    XSLT提供了灵活性和强大功能的完美结合。 XSLT不仅对发布网站有用,而且对转换或处理XML文档也很有用。 既然XSLT处理器随Java平台一起提供了(通过javax.xml.transform )包,您就不能忽略它。

    XSLT程序员经常提出的问题是,您应该如何处理多个文档? Java API仅需要两个参数:源(输入XML文档)和结果(保存输出的位置)。 尽管此API适用于许多应用程序,但在某些情况下,您需要组合多个源。 一些示例包括:

    • 邮件合并 ,例如直接邮件营销活动,其中样式表将客户文件中的名称和地址与信函模板合并。
    • 转换代码列表,例如产品参考。 国家/地区代码通常要求将目录文件与存储在单独文件中的代码列表进行匹配。
    • 合并各个文档以进行发布。 例如,当出版一本书时,您可能希望合并章节文件,或者-如您在下一节中看到的-照片文件。

    一个例子

    以下示例说明了如何使用XML和XSLT合并多个文档以进行发布。 每张照片都有两个文件:照片本身(JPEG格式)和带有标题,日期和位置的XML描述。 描述文件可能类似于清单1。

    清单1. geneva.xml -照片的XML描述
    <?xml version="1.0"?>
    <ph:photo xmlns:ph="http://ananas.org/2003/tips/photo">
       <ph:title>The Jet d'Eau fountain</ph:title>
       <ph:location>Geneva</ph:location>
       <ph:date>April 2003</ph:date>
       <ph:description>
          The Jet d'Eau fountain is the most recognizable symbol of Geneva.
          The fountain reaches 140 meters (460 feet) high, roughly the same height
          as the Embassy Suites hotel in Times Square.
       </ph:description>
    </ph:photo>

    清单1中的标记很简单。 编写用HTML发布样式表的时间不会太长。 一个更有趣的问题是如何创建一个将清单1与其他照片描述(例如清单2)相结合的画廊? (你会发现在可下载的代码,你会发现在更说明相关主题 。)

    清单2. london.xml -照片的另一个XML描述
    <?xml version="1.0"?>
    <ph:photo xmlns:ph="http://ananas.org/2003/tips/photo">
       <ph:title>Double-decker bus</ph:title>
       <ph:location>London</ph:location>
       <ph:date>October 2002</ph:date>
       <ph:description>
          An inescapable symbol of London, the double-decker bus is much taller
          than typical buses to carry many passengers through the city's overcrowded
          streets.
       </ph:description>
    </ph:photo>

    在继续之前,我想向您展示一些定义。 通过Java API传递给样式表的XML文档称为主要来源 。 样式表加载的其他文档称为辅助源 。

    document()函数

    由于Java API仅接受一个来源,因此您必须从样式表本身加载次要来源。 这是通过document()函数完成的,该函数将URI作为参数。 该函数解析文档并返回节点集。

    为了完整起见, document()还接受一个节点集作为参数,在这种情况下,该函数假定每个节点都是一个URI。 最后,您可以传递字符串和节点集的组合作为参数。 该功能将两者结合起来,以确定要加载的文档。 不过,在大多数情况下,传递单个URI更简单。

    例如,以下XPath加载清单1中所示的geneva.xml文档:

    document('geneva.xml')

    由于document()返回一个节点集,因此您几乎可以在XPath有效的任何位置插入它。 更具体地说,您可以将选择器添加到路径。 例如,以下XPath加载geneva.xml文档并返回其标题:

    document('geneva.xml')/ph:photo/ph:title

    具有document()函数的XPath可以出现在XPath合法的任何地方,例如xsl:value-ofxsl:apply-templates指令的select属性。 因此,要显示文档标题,您可以编写以下指令:

    <xsl:value-of select="document('geneva.xml')/ph:photo/ph:title"/>

    为辅助源编写XPath时要小心。 忘记根很容易,但是如果这样做,XPath将返回一个空节点集。 例如,如果我忘记了XPath中的ph:photo (辅助文档的根目录),则会得到以下XPath,该XPath返回空的节点集:

    document('geneva.xml')/ph:title

    合并文件

    总而言之,将文档与XSLT结合使用时,您要从主要来源开始并加载次要来源。 最简单的解决方案之一是在主要解决方案中列出次要资源。 主要资源类似于清单3 -仅列出要合并的文档(以及为集合提供标题)。

    清单3. index.xml列出了辅助源
    <?xml version="1.0"?>
    <ph:index xmlns:ph="http://ananas.org/2003/tips/photo">
       <ph:title>City sights</ph:title>
       <ph:entry>geneva</ph:entry>
       <ph:entry>london</ph:entry>
       <ph:entry>paris</ph:entry>
       <ph:entry>roma</ph:entry>
    </ph:index>

    清单4是样式表本身。 它为主要来源和次要来源中的元素定义模板。 两者之间的链接位于ph:index模板中,该模板可解析辅助资源。 xsl:apply-templates指令意味着处理器将遍历辅助源并随其应用模板。 在实践中,它的行为就像辅助资源包含在主要资源中。

    清单4. merge.xsl -样式表处理主要来源中列出的文档
    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0"
                    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                    xmlns:ph="http://ananas.org/2003/tips/photo">
    
    <xsl:output method="html"/>
    
    <xsl:template match="ph:index">
       <html>
          <head><title><xsl:value-of select="ph:title"/></title></head>
          <xsl:apply-templates/>
       </html>
    </xsl:template>
    
    <xsl:template match="ph:index/ph:title">
       <h1><xsl:apply-templates/></h1>
    </xsl:template>
    
    <xsl:template match="ph:entry">
       <img src="{concat(.,'.jpg')}" align="right"/>
       <xsl:apply-templates select="document(concat(.,'.xml'))"/>
       <br clear="right"/>
    </xsl:template>
    
    <xsl:template match="ph:photo/ph:title">
       <h2><xsl:apply-templates/></h2>
    </xsl:template>
    
    <xsl:template match="ph:location">
       <h3>in <xsl:apply-templates/></h3>
    </xsl:template>
    
    <xsl:template match="ph:date">
       <p>Date: <xsl:apply-templates/></p>
    </xsl:template>
    
    <xsl:template match="ph:description">
       <p><xsl:apply-templates/></p>
    </xsl:template>
    
    </xsl:stylesheet>

    将清单4应用于清单3的结果是一个包含所有照片HTML文档。 这种方法的好处之一是,您可以通过编辑index.xml文档将照片添加到图库中或从中删除照片。 此外,在不同画廊之间共享照片也很容易。 假设您想要第二个画廊,里面有更多日内瓦的照片。 您只需要创建另一个清单,类似于清单3 ,就指向这些照片。 您可以在两个画廊中都包含清单1中的描述,但是不必重复它。

    其他应用

    本技巧文章中描述的技术具有许多应用。 您可以使用document()函数创建跨越多个文件的索引或目录。 我还用它来检索链接标题:只需在URI后面加上document()函数并恢复文档标题即可。 我还用它来查看每日日志并生成月度报告。


    翻译自: https://www.ibm.com/developerworks/xml/library/x-tipcombxslt/index.html

    xslt合并单元格

    展开全文
  • 发现阶段和同步合并为 Recovery Phase(恢复阶段)) 投票机制 Zookeeper工作原理(原子广播) Znode有四种形式的目录节点 Kafka Kafka概念 Kafka数据存储设计 partition的数据文件(offset,MessageSize,data) ...

    JAVA基础

    1. JAVA异常分类及处理
    2. 异常分类
    3. 异常的处理方式
    4. Throw和throws的区别
    5. JAVA反射
    6. 动态语言
    7. 反射机制概念 (运行状态中知道类所有的属性和方法)
    8. Java反射API
    9. 反射使用步骤(获取Class对象、调用对象方法)
    10. 获取Class对象的3种方法
    11. 创建对象的两种方法
    12. JAVA注解
    13. JAVA内部类
    14. JAVA泛型
    15. JAVA序列化(创建可复用的Java对象)
    16. JAVA复制

    JAVA集合

    1. 接口继承关系和实现
    2. List
    3. ArrayList(数组)
    4. Vector(数组实现、线程同步)
    5. LinkList(链表)
    6. Set
    7. HashSet(Hash表)
    8. TreeSet(二叉树)
    9. LinkHashSet(HashSet+LinkedHashMap)
    10. Map
    11. HashMap(数组+链表+红黑树)
    12. JAVA7实现
    13. JAVA8实现
    14. ConcurrentHashMap
    15. Segment段
    16. 线程安全(Segment 继承 ReentrantLock 加锁)
    17. 并行度(默认16)
    18. HashTable(线程安全)
    19. TreeMap(可排序)
    20. LinkHashMap(记录插入顺序)

    JAVA多线程并发

    1. JAVA并发知识库
    2. JAVA线程实现/创建方式
    3. 4种线程池
    4. 线程生命周期(状态)
    5. 终止线程4种方式
    6. sleep与wait 区别
    7. start与run区别
    8. JAVA后台线程
    9. JAVA锁
    10. 线程基本方法
    11. 线程上下文切换
    12. 同步锁与死锁
    13. 线程池原理
    14. JAVA阻塞队列原理
    15. CyclicBarrier、CountDownLatch、Semaphore的用法
    16. volatile关键字的作用(变量可见性、禁止重排序)
    17. 如何在两个线程之间共享数据
    18. ThreadLocal作用(线程本地存储)
    19. synchronized和ReentrantLock的区别
    20. ConcurrentHashMap并发
    21. Java中用到的线程调度
    22. 进程调度算法
    23. 什么是CAS(比较并交换-乐观锁机制-锁自旋)
    24. 什么是 AQS(抽象的队列同步器)

    JVM

    1. 线程
    2. JVM内存区域
    3. JVM运行时内存
    4. 垃圾回收与算法
    5. JAVA 四种引用类型
    6. GC分代收集算法 VS 分区收集算法
    7. GC垃圾收集器
    8. JAVA IO/NIO
    9. JVM 类加载机制

    Spring 原理

    1. Spring 特点
    2. 轻量级
    3. 控制反转
    4. 面向切面
    5. 容器
    6. 框架集合
    7. Spring 核心组件
    8. Spring 常用模块
    9. Spring 主要包
    10. Spring 常用注解
    11. Spring IOC原理
    12. Spring APO原理
    13. Spring MVC原理
    14. Spring Boot原理
    15. JPA原理
    16. Mybatis缓存
    17. Tomcat架构

    微服务

    1. 服务注册发现
    2. 客户端注册(zookeeper)
    3. 第三方注册(独立的服务Registrar)
    4. 客户端发现
    5. 服务端发现
    6. Consul
    7. Eureka
    8. SmartStack
    9. Etcd
    10. API 网关
    11. 请求转发
    12. 响应合并
    13. 协议转换
    14. 数据转换
    15. 安全认证
    16. 配置中心
    17. zookeeper配置中心
    18. 配置中心数据分类
    19. 事件调度(kafka)
    20. 服务跟踪(starter-sleuth)
    21. 服务熔断(Hystrix)
    22. Hystrix断路器机制
    23. API管理

    Netty 与RPC

    1. Netty 原理
    2. Netty 高性能
    3. 多路复用通讯方式
    4. 异步通讯NIO
    5. 零拷贝(DIRECT BUFFERS使用堆外直接内存)
    6. 内存池(基于内存池的缓冲区重用机制)
    7. 高效的Reactor线程模型
    8. 无锁设计、线程绑定
    9. 高性能的序列化框架
    10. Netty RPC实现
    11. 关键技术
    12. 核心流程
    13. 消息编解码
    14. 通讯过程
    15. RMI实现方式
    16. 实现步骤
    17. Protoclol Buffer
    18. Thrift

    分布式缓存

    1. 缓存雪崩
    2. 缓存穿透
    3. 缓存预热
    4. 缓存更新
    5. 缓存降级

    网络

    1. 网络7层架构
    2. TCP/IP原理
    3. 网络访问层(Network Access Layer)
    4. 网络层(Internet Layer)
    5. 传输层(Tramsport Layer-TCP/UDP)
    6. 应用层(Application Layer)
    7. TCP三次握手/四次挥手
    8. HTTP原理
    9. 传输流程
    10. HTTP状态
    11. HTTPS
    12. CDN 原理
    13. 分发服务系统
    14. 负载均衡系统
    15. 管理系统

    日志

    1. Slf4j
    2. Log4j
    3. LogBack
    4. Logback优点
    5. ELK

    Zookeeper

    1. Zookeeper概念
    2. Zookeeper角色
    3. Leader
    4. Follower
    5. Observer
    6. ZAB协议
    7. 事务编号 Zxid(事务请求计数器+ epoch)
    8. epoch
    9. Zab协议有两种模式-恢复模式(选主)、广播模式(同步)
    10. ZAB协议4阶段
    11. Leader election(选举阶段-选出准Leader)
    12. ZAB协议JAVA实现(FLE-发现阶段和同步合并为 Recovery Phase(恢复阶段))
    13. 投票机制
    14. Zookeeper工作原理(原子广播)
    15. Znode有四种形式的目录节点

    Kafka

    1. Kafka概念
    2. Kafka数据存储设计
    3. partition的数据文件(offset,MessageSize,data)
    4. 数据文件分段segment(顺序读写、分段命令、二分查找)
    5. 数据文件索引(分段索引、稀疏存储)
    6. 生产者设计
    7. 负载均衡(partition会均衡分布到不同broker上)
    8. 批量发送
    9. 压缩(GZIP或Snappy)
    10. 消费者设计
    11. Consumer Group

    RabbitMQ

    1. RabbitMQ概念
    2. RabbitMQ架构
    3. Exchange 类型

    Hbase

    1. Hbase概念
    2. 列式存储
    3. Hbase核心概念
    4. Hbase核心架构
    5. Hbase的写逻辑
    6. HBase vs Cassandra
    7. MongoDB
    8. MongoDB概念
    9. MongoDB特点

    Cassandra

    1. Cassandra概念
    2. 数据模型
    3. Cassandra一致Hash和虚拟节点
    4. Gossip协议
    5. 数据复制
    6. 数据写请求和协调者
    7. 数据读请求和后台修复
    8. 数据存储(CommitLog、MemTable、SSTable)
    9. 二级索引(对要索引的value摘要,生成RowKey)
    10. 数据读写

    设计模式

    1. 设计原则
    2. 工厂方法模式
    3. 抽象工厂模式
    4. 单例模式
    5. 建造者模式
    6. 原型模式
    7. 适配器模式
    8. 装饰器模式
    9. 代理模式
    10. 外观模式
    11. 桥接模式
    12. 组合模式
    13. 享元模式
    14. 策略模式
    15. 模板方法模式
    16. 观察者模式
    17. 迭代的模式
    18. 责任链模式
    19. 命令模式
    20. 备忘录模式

    负载均衡

    1. 四层负载均衡 vs 七层负载均衡
    2. 负载均衡算法/策略
    3. LVS
    4. Keepalive
    5. Nginx反向代理负载均衡
    6. HAProxy

    数据库

    1. 存储引擎
    2. 索引
    3. 数据库三范式
    4. 数据库是事务
    5. 存储过程(特定功能的SQL 语句集)
    6. 触发器(一段能自动执行的程序)
    7. 数据库并发策略
    8. 数据库锁
    9. 基于Redis分布式锁
    10. 分区分表
    11. 两阶段提交协议
    12. 三阶段提交协议
    13. 柔性事务
    14. CAP

    一致性算法

    1. Paxos
    2. Zab
    3. Raft
    4. NWR
    5. Gossip
    6. 一致性Hash
    7. 一致性Hash特性
    8. 一致性Hash原理

    JAVA算法

    1. 二分查找
    2. 冒泡排序算法
    3. 插入排序算法
    4. 快速排序算法
    5. 希尔排序算法
    6. 归并排序算法
    7. 桶排序算法
    8. 基数排序算法
    9. 剪枝算法
    10. 回溯算法
    11. 最短路径算法
    12. 最大的数组算法
    13. 最长公共子序算法
    14. 最小生成树算法

    数据结构

    1. 栈(stack)
    2. 队列(queue)
    3. 链表(Link)
    4. 散列表(Hash Table)
    5. 排序二叉树
    6. 红黑树
    7. B-TREE
    8. 位图

    加密算法

    1. AES
    2. RSA
    3. CRC
    4. MD5

    Hadoop

    1. Hadoop概念
    2. HDFS
    3. Client
    4. NameNode
    5. Secondary NameNode
    6. DataNode
    7. MapReduce
    8. JobTracker
    9. TaskTracker
    10. Task
    11. Reduce Task 执行过程
    12. Hadoop MapReduce 作业的生命周期
    13. 作业提交与初始化
    14. 任务调度与监控。
    15. 任务运行环境准备
    16. 任务执行
    17. 作业完成

    Spark

    1. Spark概念
    2. 核心架构
    3. 核心组件
    4. SPARK编程模型
    5. SPARK计算模型
    6. SPARK运行流程
    7. SPARK RDD流程
    8. SPARK RDD

    Storm

    1. Storm概念
    2. 集群架构
    3. Nimbus(master-代码分发给Supervisor)
    4. Supervisor(slave-管理Worker进程的启动和终止)
    5. Worker(具体处理组件逻辑的进程)
    6. Task
    7. ZooKeeper
    8. 编程模型(spout->tuple->bolt)
    9. opology运行
    10. Storm Streaming Grouping
    11. ResourceManager
    12. NodeManager
    13. ApplicationMaster
    14. YARN运行流程

    机器学习

    1. 决策树
    2. 随机森林算法
    3. 逻辑回归
    4. SVM
    5. 朴素贝叶斯
    6. K 最近邻算法
    7. K 均值算法
    8. Adaboost 算法
    9. 神经网络
    10. 马尔可夫

    云计算

    1. SaaS
    2. PaaS
    3. IaaS
    4. Docker
    5. Openstack
    6. Namespaces
    7. 进程(CLONE_NEWPID 实现的进程隔离)
    8. Libnetwork与网络隔离
    9. 资源隔离与CGroups
    10. 镜像与UnionFS
    11. 存储驱动

    总结

    虽然面试套路众多,但对于技术面试来说,主要还是考察一个人的技术能力和沟通能力。不同类型的面试官根据自身的理解问的问题也不尽相同,没有规律可循。

    上面提到的关于这些JAVA基础、三大框架、项目经验、并发编程、JVM及调优、网络、设计模式、spring+mybatis源码解读、Mysql调优、分布式监控、消息队列、分布式存储等等面试题笔记及资料都是免费分享的,有需要学习的小伙伴可以直接点点点点点这里免费下载

    程隔离)
    8. Libnetwork与网络隔离
    9. 资源隔离与CGroups
    10. 镜像与UnionFS
    11. 存储驱动

    总结

    虽然面试套路众多,但对于技术面试来说,主要还是考察一个人的技术能力和沟通能力。不同类型的面试官根据自身的理解问的问题也不尽相同,没有规律可循。

    [外链图片转存中…(img-voTB9ker-1626279164529)]

    [外链图片转存中…(img-9CfJcD1I-1626279164532)]

    上面提到的关于这些JAVA基础、三大框架、项目经验、并发编程、JVM及调优、网络、设计模式、spring+mybatis源码解读、Mysql调优、分布式监控、消息队列、分布式存储等等面试题笔记及资料都是免费分享的,有需要学习的小伙伴可以直接点点点点点这里免费下载

    有些面试官喜欢问自己擅长的问题,比如在实际编程中遇到的或者他自己一直在琢磨的这方面的问题,还有些面试官,尤其是大厂的比如 BAT 的面试官喜欢问面试者认为自己擅长的,然后通过提问的方式深挖细节,刨根到底。

    展开全文
  • python中使用xlrd获取合并单元格

    万次阅读 2016-11-23 15:22:32
    处理excel表格的时候经常遇到合并单元格的情况,使用xlrd中的merged_cells的方法可以获取当前文档中的所有合并单元格的位置信息。 import xlrd xls = xlrd.open_workbook('test.xls') sh = xls.sheet_by_index(0)...

    处理excel表格的时候经常遇到合并单元格的情况,使用xlrd中的merged_cells的方法可以获取当前文档中的所有合并单元格的位置信息。

    import xlrd

    xls = xlrd.open_workbook('test.xls')

    sh = xls.sheet_by_index(0)

    读取excel并读取第一页的内容。

    for crange in sh.merged_cells:

        rs, re, cs, ce = crange

    merged_cells返回的是一个列表,每一个元素是合并单元格的位置信息的数组,数组包含四个元素(起始行,结束行,起始列,结束列)。

    这样就可以计算出合并的单元格:

    (rs, cs) : (re - rs, ce - cs) 

    展开全文
  • 合并单元格可能会在某些情况下很有用,例如,当工作表中有多个列共享相同的标题时,可以合并列上方的单元格以使其具有共同的标题。如果不再需要合并单元格,则可以轻松地取消合并它们。为此,本文将教您如何使用C ...

    合并和取消合并单元格是Microsoft Excel的一项简单且常用功能。合并单元格可能会在某些情况下很有用,例如,当工作表中有多个列共享相同的标题时,可以合并列上方的单元格以使其具有共同的标题。如果不再需要合并的单元格,则可以轻松地取消合并它们。为此,本文将教您如何使用C ++以编程方式合并和取消合并Excel工作表中的单元格。

    • 使用C ++在Excel工作表中合并单元格
    • 使用C ++取消Excel工作表中的单元格
    • 使用C ++合并Excel工作表中的一系列单元格
    • 使用C ++取消Excel工作表中的单元格范围
    • 使用C ++合并Excel工作表中命名范围的单元格

    Aspose.Cells for C++是本机C ++库,使用它可以创建,读取和修改Excel文件,而无需安装Microsoft Excel。该API还支持合并和取消合并Excel工作表中的单元格。下载Aspose.Cells for C++


    使用C ++在Excel工作表中合并单元格

    在此示例中,我们将创建一个空的Excel工作表,并按照以下步骤合并几个单元格。

    • 首先,创建一个IWorkbook类的实例。
    • 使用 IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index) 方法检索工作表。
    • 使用IWorksheet->GetICells()方法来检索单元格。
    • 使用ICells->Merge(Aspose::Cells::Systems::Int32 firstRow, Aspose::Cells::System::Int32 firstColumn, Aspose::Cells::System::Int32 totalRows, Aspose::Cells::System::Int32 totalColumns) 方法合并这些单元格。
    • 对合并后的单元格应用样式。
    • 最后,使用 IWorkbook->Save (intrusive_ptrfileName) 方法保存输出的Excel文件。

    下面的示例代码显示了如何使用C ++合并Excel工作表中的单元格。

    // Output directory path.
    StringPtr outDir = new String("OutputDirectory\\");
    
    // Load the input Excel file
    intrusive_ptrworkbook = Factory::CreateIWorkbook();
    
    // Access the first worksheet in the Excel file
    intrusive_ptrworksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);
    
    // Create a Cells object ot fetch all the cells.
    intrusive_ptrcells = worksheet->GetICells();
    
    // Merge cells
    cells->Merge(5, 2, 2, 3);
    
    // Put data into the cell
    cells->GetObjectByIndex(5, 2)->PutValue((StringPtr)new String("This is a test value"));
    
    // Create a Style object 
    intrusive_ptrstyle = cells->GetICell(5, 2)->GetIStyle();
    
    // Create a Font object
    intrusive_ptrfont = style->GetIFont();
    
    // Set the name
    font->SetName(new String("Times New Roman"));
    
    // Set the font size
    font->SetSize(18);
    
    // Set the font color
    font->SetColor(Systems::Drawing::Color::GetCyan());
    
    // Make the text bold
    font->SetBold(true);
    
    // Make the text italic
    font->SetItalic(true);
    
    // Set the Foreground color
    style->SetForegroundColor(Systems::Drawing::Color::GetRed());
    
    // Set the Pattern
    style->SetPattern(BackgroundType_Solid);
    
    // Apply the Style
    cells->GetICell(5, 2)->SetIStyle(style);
    
    // Save the Excel file
    workbook->Save(outDir->StringAppend(new String("MergeCells_out.xlsx")));

    无需MS Office创建Excel!使用C ++以编程方式合并Excel工作表中的单元格

    使用C ++取消Excel工作表中的单元格

    以下是取消合并Excel工作表中单元格的步骤。

    • 使用 IWorkbook 类加载 Excel 文件。
    • 使用 IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index) 方法检索包含合并单元格的工作表。
    • 使用IWorksheet->GetICells()方法来检索单元格。
    • 使用ICells->UnMerge(Aspose::Cells::Systems::Int32 firstRow, Aspose::Cells::Systems::Int32 firstColumn, Aspose::Cells::Systems::Int32 totalRows, Aspose::Cells::Systems::Int32 totalColumns) 方法取消合并单元。
    • 最后,使用 IWorkbook->Save (intrusive_ptrfileName) 方法保存输出的Excel文件。

    下面的示例代码演示了如何使用C ++取消合并Excel工作表中的单元格。

    // Source directory path.
    StringPtr srcDir = new String("SourceDirectory\\");
    
    // Output directory path.
    StringPtr outDir = new String("OutputDirectory\\");
    
    // Load the input Excel file
    intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("SampleMergedCells.xlsx")));
    
    // Access the first worksheet in the Excel file
    intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);
    
    // Create a Cells object ot fetch all the cells.
    intrusive_ptr<ICells> cells = worksheet->GetICells();
    
    // Unmerge cells.
    cells->UnMerge(5, 2, 2, 3);
    
    // Save the Excel file
    workbook->Save(outDir->StringAppend(new String("UnmergeCells_out.xlsx")));

    无需MS Office创建Excel!使用C ++以编程方式合并Excel工作表中的单元格

    使用C ++合并Excel工作表中的一系列单元格

    以下是合并Excel工作表中的一系列单元格的步骤。

    • 使用 IWorkbook 类加载 Excel 文件。
    • 使用 IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index) 方法来检索所需的工作表。
    • 在单元格中插入数据。
    • 使用IWorksheet->GetICells()->CreateIRange(intrusive_ptraddress)方法创建范围。
    • 使用IRange->Merge()方法合并该范围。
    • 最后,使用 IWorkbook->Save (intrusive_ptrfileName) 方法保存输出的Excel文件。

    下面的示例代码显示了如何使用C ++合并Excel工作表中的一系列单元格。

    // Output directory path.
    StringPtr outDir = new String("OutputDirectory\\");
    
    // Load the input Excel file
    intrusive_ptrworkbook = Factory::CreateIWorkbook();
    
    // Access the first worksheet in the Excel file
    intrusive_ptrworksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);
    
    // Input data into A1 Cell.
    worksheet->GetICells()->GetObjectByIndex(0, 0)->PutValue((StringPtr)new String("This is a test value"));
    
    // Create a range
    intrusive_ptrrange = worksheet->GetICells()->CreateIRange(new String("A1:D4"));
    
    // Merge range into a single cell
    range->Merge();
    
    // Save the Excel file
    workbook->Save(outDir->StringAppend(new String("MergeRangeOfCells_out.xlsx")));

    无需MS Office创建Excel!使用C ++以编程方式合并Excel工作表中的单元格

    用C++合并Excel工作表中的单元格区域

    以下是在Excel工作表中取消合并单元格区域的步骤。

    • 使用ICworkbook类加载Excel文件。
    • 使用 IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index) 方法检索包含合并单元格的工作表。
    • 使用IWorksheet->GetICells()->CreateIRange(intrusive_ptraddress)方法创建范围。
    • 使用IRange->UnMerge()方法取消合并该范围。
    • 最后,使用 IWorkbook->Save (intrusive_ptrfileName) 方法保存输出的 Excel 文件。

    下面的示例代码显示了如何使用C++在Excel工作表中取消合并一个单元格的范围。

    // Source directory path.
    StringPtr srcDir = new String("SourceDirectory\\");
    
    // Output directory path.
    StringPtr outDir = new String("OutputDirectory\\");
    
    // Load the input Excel file
    intrusive_ptrworkbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("SampleMergedRangeOfCells.xlsx")));
    
    // Access the first worksheet in the Excel file
    intrusive_ptrworksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);
    
    // Create a range
    intrusive_ptrrange = worksheet->GetICells()->CreateIRange(new String("A1:D4"));
    
    // UnMerge range
    range->UnMerge();
    
    // Save the Excel file
    workbook->Save(outDir->StringAppend(new String("UnmergeRangeOfCells_out.xlsx")));

    无需MS Office创建Excel!使用C ++以编程方式合并Excel工作表中的单元格

    使用C++合并Excel工作表中的指定范围的单元格

    Aspose.Cells for C++还提供了合并指定区域的单元格的能力。为了实现这一功能,请按照下面的步骤进行操作。

    • 使用ICworkbook类加载Excel文件。
    • 使用 IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index) 方法检索工作表。
    • 使用IWorksheet->GetICells()->CreateIRange(intrusive_ptraddress)方法创建范围。
    • 使用IRange->SetName(intrusive_ptrvalue)方法设置范围的名称。
    • 为命名的单元格创建并应用样式。
    • 使用IRange->Merge()方法合并命名区域的单元格。
    • 最后,使用 IWorkbook->Save (intrusive_ptrfileName) 方法保存输出的Excel文件。

    下面的示例代码演示了如何使用C++合并一个命名区域的单元格。

    // Source directory path.
    StringPtr srcDir = new String("SourceDirectory\\");
    
    // Output directory path.
    StringPtr outDir = new String("OutputDirectory\\");
    
    // Load the input Excel file
    intrusive_ptrworkbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("SampleMergedRangeOfCells.xlsx")));
    
    // Access the first worksheet in the Excel file
    intrusive_ptrworksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);
    
    // Create a range
    intrusive_ptrrange = worksheet->GetICells()->CreateIRange(new String("A1:D4"));
    
    // Set Range name
    range->SetName(new String("Named_Range"));
    
    // Define style object
    intrusive_ptrstyle = workbook->CreateIStyle();
    
    // Set horizontal alignment
    style->SetHorizontalAlignment(TextAlignmentType::TextAlignmentType_Center);
    
    // Create a StyleFlag object
    intrusive_ptrstyleFlag = Factory::CreateIStyleFlag();
    
    // Set horizontal alignment to true
    styleFlag->SetHorizontalAlignment(true);
    
    // Apply the style to the range
    range->ApplyIStyle(style, styleFlag);
    
    // Put data in the range
    range->GetObjectByIndex(0, 0)->PutValue((StringPtr)new String("This is a test value"));
    
    // Merge Range
    range->Merge();
    
    // Save the Excel file
    workbook->Save(outDir->StringAppend(new String("MergeNamedRange_out.xlsx")));

    无需MS Office创建Excel!使用C ++以编程方式合并Excel工作表中的单元格


    如果您有任何疑问或需求,请随时加入Aspose技术交流群(761297826),我们很高兴为您提供查询和咨询。

    展开全文
  • 首先建立一个空白的工作簿用作测试,并在其中建立空白工作表,在表中建立空白行,在行中建立单元格,并填入内容:   //建立空白工作簿 IWorkbook workbook = new HSSFWorkbook(); //在工作簿中:建立空白工作表...
  • java 合并和拆分单元格Whether you want to merge collections of short stories into a DIY anthology, or you want to split a greatest-works volume you recently acquired into the author’s individual ...
  • PHPEXCEL 合并单元格出现不可读取内容,即 合并单元格引起了excel软件读取EXCEL文件异常: 距离如下: 假设F50到 I50已经合并过, J50:K50合并过,再去合并就会出现上述提示 $phpexcel->getActiveSheet()->...
  • } } } } /** * 当前单元格向上合并 * * @param writeSheetHolder * @param cell 当前单元格 * @param curRowIndex 当前行 * @param curColIndex 当前列 */ private void mergeWithPrevRow(WriteSheetHolder ...
  • 首先建立一个空白的工作簿用作测试,并在其中建立空白工作表,在表中建立空白行,在行中建立单元格,并填入内容:   //建立空白工作簿 IWorkbook workbook = new HSSFWorkbook(); //在工作簿中:建立空白工作表...
  • 首先建立一个空白的工作簿用作测试,并在其中建立空白工作表,在表中建立空白行,在行中建立单元格,并填入内容:  //建立空白工作簿 IWorkbook workbook = new HSSFWorkbook(); //在工作簿中:建立空白工作表 ...
  • // 若上一个单元格已经被合并,则先移出原有的合并单元,再重新添加合并单元 if (cellRangeAddr.isInRange(curRowIndex - 1, curColIndex)) { sheet.removeMergedRegion(i); cellRangeAddr.setLastRow(curRowIndex)...
  • 使用PB合并Excel中重复单元格

    千次阅读 2015-01-07 17:41:59
    从数据库或PB中转的数据到Excel中,为了便于阅读,通常希望把某些列的上下行相同的数据合并单元格,查看Excel中好像没有此功能,于是通过PB来完成了该需求。 如下代码: String docname,named String current_...
  • 请问怎么将table中所有的元素值合并并输出到element中,按钮实现的javascript函数reviewFlowNum怎么写? 用数组 push join 性能是远远高于字符串拼接的 非大数据量字符串拼接 没有必要使用数组的...
  • 首先建立一个空白的工作簿用作测试,并在其中建立空白工作表,在表中建立空白行,在行中建立单元格,并填入内容://建立空白工作簿IWorkbookworkbook=newHSSFWorkbook();//在工作簿中:建立空白工作表ISheetsheet=...
  • 本文告诉大家如何利用 Office 对于 OpenXML 支持的特性,在 PPT 的表格里面,通过合并单元格存放一些额外的信息,这些信息对用户来说是不可见的,但是进行拷贝表格等的时候,可以保存此信息内容

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,857
精华内容 5,542
关键字:

共享文档如何合并单元格