---
order: 4
navTitle: 条件样式
---
# 条件样式

**条件样式**可以根据指定的条件动态更改单元格的外观。报表填报应用中仅支持**突出显示**和**最前最后**的条件样式，设置方式可参考报表的[条件样式](../../../report/design/style/condition-style.md)文档。本文主要介绍表单单元格特有的**计算**、**只读**、**禁用**等**状态样式**以及他们对应的显示规则。

## 状态样式{#state-style}

**状态样式**是指单元格处于某种特殊状态下才会展示的样式。报表填报应用的单元格拥有多种[状态](#cell-state)，在实际填报过程中，往往需要一目了然的知道各单元格处于什么[状态](#cell-state)，比如哪些单元格是可以填写的或哪些单元格的数据是计算得到的，为了便于区分这些单元格通常都会在样式上提供明显的特点。如下图所示，所有**计算单元格**都默认加上了斜线底纹：

![状态样式](./images/2024-06-13-10-00-00.png)

### 单元格状态{#cell-state}

在报表填报应用中将单元格划分为多种状态，比如某些单元格总是只会显示固定内容，某些单元格的值是通过计算得到的等，在报表填报应用中单元格被划分为以下几种状态：

- **固定单元格**：内容中仅有固定文本或宏表达式的单元格，通常是作为标题使用，没有对应的状态样式，固定单元格的样式一般都是稳定不会修改的。
- **可输入单元格**：设置了[单元格类型](./cell-types.md)且未设置禁用或只读的单元格，没有对应的状态样式。
- **计算单元格**：添加了**计算公式**且满足**计算条件**的单元格，对应**计算状态样式**。
- **只读单元格**：设置了[单元格类型](./cell-types.md)且设置为只读的单元格，对应**只读状态样式**。
- **禁用单元格**：设置了[单元格类型](./cell-types.md)且设置为禁用的单元格，对应**禁用状态样式**。

### 状态样式显示规则{#display-rule}

**状态样式**总是**叠加**显示在当前单元格样式上。以计算单元格为例，当在单元格中添加计算公式后，不论单元格的样式是怎样的，总是会在原本基础上叠加一个斜线底纹：

![计算样式](./images/2024-06-13-10-10-00.gif)

::: tip 覆盖计算样式

默认的**计算样式**只是一个斜线底纹的背景图片，某些情况下即便单元格是计算的也不希望他有这个底纹，此时可以通过单元格**样式设置**>**单元格填充**>**图片填充**中设置背景图片为空来覆盖掉计算样式叠加的背景图片。

:::

## 自动切换状态样式{#change-state}

在填报过程中，单元格的状态有时并不是稳定的，例如某些单元格只有在满足条件的情况下才会计算，不满足条件时需要用户手动填写，这种情况下单元格会在计算和可输入两种状态间根据条件来切换；或是浮动表中不同行的计算规则不一样，某些行需要算合计，某些行需要手动填报：

| 切换状态样式 | 浮动状态样式 |
| :---: | :---: |
| ![切换](./images/2024-06-13-10-40-00.png "=458x250") | ![浮动表](./images/2024-06-13-10-30-00.png "=458x250") |
| 示例地址：[切换状态样式](https://demo.succbi.com/v5/DEMO/app/ci.app?:id=%E5%91%98%E5%B7%A5%E4%BF%A1%E6%81%AF%E7%99%BB%E8%AE%B0&:sheet=%E5%91%98%E5%B7%A5%E4%BF%A1%E6%81%AF) | 示例地址：[浮动状态样式](https://demo.succbi.com/v5/DEMO/app/ci.app?:id=%E4%B8%8A%E6%9C%9F%E5%80%BC&:dataPeriod=202401&:orgId=010101&:sheet=%E6%B5%AE%E5%8A%A8%E8%A1%A8-%E8%A1%A5%E7%BB%B4%E9%A1%B9) |

::: tip

通过**条件样式**能达到一样的效果，因为上述需求根源上也是根据条件在变换单元格样式。但是当表越大，涉及到的单元格越多时，这样设置就会变得极其复杂，比如有十个单元格是通过条件来决定是计算还是输入，则在**条件样式**的设置中对应的也需要十条规则，以此类推。**状态样式**通过一条规则即可批量的将所有满足状态的单元格附加上对应样式。

:::

## 自定义状态样式{#custom}

报表填报应用提供了三种状态可供设置样式，分别是**计算**、**只读**和**禁用**状态。默认配置下只有**计算样式**会叠加一个斜线底纹，**只读**和**禁用**不会叠加任何样式。当默认的样式不满足需求时，比如**计算状态**下不想用斜线底纹想修改为其他背景图案，或是**只读状态**下希望添加一个`-`作为占位符，此时可通过[修改风格](../../../report/design/style/table-style.md#cell-style)实现：

![修改样式](./images/2024-06-13-10-20-00.png)

## 样式优先级{#priority}

单元格中有多种样式设置，不同的设置显示的优先级不同，下述样式设置的优先级按从低到高排列：

1. [主题风格](../../../report/design/style/table-style.md#cell-style)中的样式设置
2. [状态样式](#state-style)中的样式设置
3. 用户在单元格属性中自定义的样式设置
4. 浮动表的[隔行换色](../../../report/design/style/table-style.md#cell-even-backgroud)设置
5. 用户自定义的[条件样式](../../../report/design/style/condition-style.md)设置

当存在多个不同优先级的样式共同作用时，不同的样式属性是共同作用的，比如字体大小和单元格背景可以共同作用；相同的样式属性，由高优先级的样式设置覆盖低优先级的样式设置。
