精华内容
下载资源
问答
  • 自定义单元格
    2021-06-01 14:46:13

    XSSFCellStyle 自定义单元格背景颜色

    每篇一句励志:规划的根本目的是为了更快、更有效地达成目标。

    此代码可用于2007(xlsx)之后的版本使用。

    XSSFWorkbook wb = new XSSFWorkbook();//此行代码可以忽略
    	XSSFCellStyle style = wb.createCellStyle();//创建一个单元格style
    	XSSFColor color = new XSSFColor(new java.awt.Color(198,217,240),new DefaultIndexedColorMap()); //new java.awt.Color(198,217,240) 里的参数为RGB
    	style.setFillForegroundColor(color);//放入背景颜色参数中
       style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
    	style.setAlignment(HorizontalAlignment.CENTER);
    	style.setVerticalAlignment(VerticalAlignment.CENTER);
    

    2007版本(xls)之前的可以使用下边的代码实现自定义背景色

    HSSFWorkbook excel = new HSSFWorkbook();//此行代码可以忽略
    HSSFPalette palette = excel.getCustomPalette(); //拿到颜色板
    palette.setColorAtIndex(HSSFColor.LIME.index, (byte) 0, (byte) 255, (byte) 127);//定义颜色块
    
    更多相关内容
  • 自定义单元格

    2016-02-20 09:13:36
    简单的IOS 自定义单元格 demo 是个压缩包 解压后可以直接运行
  • NULL 博文链接:https://ikrboy.iteye.com/blog/2004032
  • Ant Design Vue 表格自定义单元格

    千次阅读 2022-03-21 11:22:24
    环境: 查询 重置 {{ record.ruleName }} {{ record.ruleDescription }} {{ record.score }} {{ record.dayMaxScore }} 禁用 启用 禁用 启用 禁用 启用 保存 修改 问题: 如何在表格中自定义输入框、下拉框?...

    环境:

    <template>
        <page-view>
            <a-card>
                <div class="search-box">
                    <a-input v-model="table.query.ruleName" placeholder="输入关键词" />
                    <a-button type="primary" @click="onSearch"><a-icon type="search" />查询</a-button>
                    <a-button @click="reset"><a-icon type="undo" />重置</a-button>
                </div>
                <div class="table-wrapper">
                    <div>
                        <a-table
                            ref="table"
                            :columns="table.columns"
                            :dataSource="table.dataList"
                            :pagination="table.pagination"
                            @change="handleChangePage"
                        >
                            <span slot="ruleName" slot-scope="text, record">
                              <template>
                                  <span>{{ record.ruleName }}</span>
                              </template>
                            </span>
                            <span slot="ruleDescription" slot-scope="text, record">
                              <template>
                                    <span>{{ record.ruleDescription }}</span>
                              </template>
                            </span>
                            <span slot="score" slot-scope="text, record">
                              <template>
                                  <span v-if="!record.isUse">{{ record.score }}</span>
                                  <a-input-number v-if="record.isUse" v-model="record.score" :min="1"/>
                              </template>
                            </span>
                            <span slot="dayMaxScore" slot-scope="text, record">
                              <template>
                                  <span v-if="!record.isUse">{{ record.dayMaxScore }}</span>
                                  <a-input-number v-if="record.isUse" v-model="record.dayMaxScore" :min="record.score"/>
                              </template>
                            </span>
                            <span slot="state" slot-scope="text, record, index">
                              <template>
                                <div v-if="!record.isUse">
                                   <span v-if="record.state == 0">禁用</span>
                                   <span v-if="record.state == 1">启用</span>
                                </div>
                                <a-dropdown v-if="record.isUse">
                                  <a class="ant-dropdown-link">
                                      <span v-if="record.state == 0">禁用</span>
                                      <span v-if="record.state == 1">启用</span>
                                    <a-icon type="down" />
                                  </a>
                                  <a-menu slot="overlay">
                                    <a-menu-item v-if="record.state == 1">
                                      <a href="javascript:;" @click="handleChangeStatus(record, index, 0)">禁用</a>
                                    </a-menu-item>
                                    <a-menu-item v-if="record.state == 0">
                                      <a href="javascript:;" @click="handleChangeStatus(record, index, 1)">启用</a>
                                    </a-menu-item>
                                  </a-menu>
                                </a-dropdown>
                              </template>
                            </span>
                            <span slot="action" slot-scope="text, record, index">
                              <template>
                                <a-button v-if="record.isUse" style="border-color: #1890ff;color: #1890ff;" @click="handleSaveCol(record, index)">保存</a-button>
                                <a-button v-if="!record.isUse" style="border-color: forestgreen;color: forestgreen;margin: 0 4px" @click="handleChangeCol(record, index)">修改</a-button>
                              </template>
                            </span>
                        </a-table>
                    </div>
                </div>
            </a-card>
        </page-view>
    </template>
    
    <script>
        import {listPage, saveOrUpdate} from '@/api/point/point'
        import {columns} from './constant'
        export default {
            name: 'PointSetting',
            data() {
                return {
                    table: {//表格数据
                        columns: columns,
                        query: {},
                        dataList: [
                            // { ruleName: 2,ruleDescription:333,score:444, state: 1,dayMaxScore:222 }
                        ],
                        pagination: {
                            current: 1,
                            pageSize: 10,
                            total: 0
                        },
                    },
                }
              },
            created() {
                this.listPage();//加载列表
            },
            methods: {
                listPage(pagination, filters, sorters) {
                    const params = Object.assign({
                        ruleName: this.table.query.ruleName
                    }, pagination, filters, sorters);
                    return listPage(params)
                        .then(response => {
                            this.table.dataList = response.data;
                        })
                },
                onSearch() {
                    this.listPage();//刷新列表
                },
                reset() {
                    this.table.query = {};//清空查询条件
                    this.listPage();//重置列表
                },
                handleChangePage(page) {
                    this.table.pagination.current = page.current
                },
                handleChangeStatus(data, index, type) {
                    this.table.dataList.splice(index, 1, {
                        ...data,
                        state: type
                    })
                },
                // 保存按钮
                handleSaveCol(data, index) {
                    this.table.dataList.splice(index, 1, {
                        ...data,
                        isUse: false
                    })
                    console.log(data)
                    this.saveOrUpdate(data);
                },
                // 修改按钮
                handleChangeCol(data, index) {
                    this.table.dataList.splice(index, 1, {
                        ...data,
                        isUse: true
                    })
                },
                //保存方法
                saveOrUpdate(data) {
                    return saveOrUpdate(data.id, data).then(
                        response => {
                            return response;
                        }
                    );
                },
              }
        };
    </script>
    
    <style scoped>
        .search-box {
            display: flex;
            align-items: center;
            margin-bottom: 15px;
        }
        .search-box>button {
            margin-left: 15px;
        }
        .search-box>input {
            width: 200px;
        }
        .ant-dropdown-link>span {
            margin-right: 5px;
        }
    </style>
    

    问题:

    如何在表格中自定义输入框、下拉框?

    解决:

    constant.js中代码

    import { initTimeDate } from '@/utils/utils'
    export const columns = [
      {
        title: '序号',
        width: '80px',
        align: 'center',
        customRender: (text, record, index) => {
          return index + 1;
        },
      },
      {
        title: '积分规则',
        width: '200px',
        align: 'center',
        dataIndex: 'ruleName',
        scopedSlots: { customRender: 'ruleName' },
      },
      {
        title: '规则说明',
        align: 'center',
        dataIndex: 'ruleDescription',
        scopedSlots: { customRender: 'ruleDescription' },
    
      },
      {
        title: '分值',
        align: 'center',
        width: '200px',
        dataIndex: 'score',
        scopedSlots: { customRender: 'score' },
      },
      {
        title: '每日分值上限',
        dataIndex: 'dayMaxScore',
        align: 'center',
        width: '200px',
        scopedSlots: { customRender: 'dayMaxScore' },
      },
      {
        title: '状态',
        dataIndex: 'state',
        align: 'center',
        width: '150px',
        scopedSlots: { customRender: 'state' },
      },
      {
        title: '操作',
        dataIndex: 'action',
        width: '200px',
        align: 'center',
        scopedSlots: { customRender: 'action' },
      },
    ];
    
    export const columnsTwo = [
      {
        title: '序号',
        width: '80px',
        align: 'center',
        customRender: (text, record, index) => {
          return index + 1;
        },
      },
      {
        title: '部门机构',
        align: 'center',
        dataIndex: 'diskName',
      },
      {
        title: '用户姓名',
        width: '150px',
        align: 'center',
        dataIndex: 'diskSize',
        scopedSlots: { customRender: 'diskSize' },
    
      },
      {
        title: '积分',
        align: 'center',
        width: '200px',
        dataIndex: 'createTime',
      },
    ];
    

    展开全文
  • 本文对excel单元格格式定义字符串进行了解释。

    让我们先来看一小段动图:

    从上面的动图中可以看到,在单元格中输入非零数值后会被显示为中文小写数字,如果是负数前面还会加上“负”字,而不管正数还是负数后面都会加上“元”字;输入0则被显示成“00”。尽管单元格中显示的是汉字,却可以象阿拉伯数字一样进行求和计算而不会出错。

    这是怎么做到的呢?让我们看看这些单元格的格式:

    这里的秘密就是,不管你输入的是什么,单元格中显示的内容由单元格格式字符串决定。我们再来仔细看这个格式字符串:

    [DBNum1][$-zh-CN]G/通用格式"元";[DBNum1]"负"[$-zh-CN]G/通用格式"元";00 ; @

    可以很明显地看到,格式字符串被三个“;”号分成了4个部分。从前至后4个部分分别决定了4种输入内容的显示形式:正数数值、负数数值、数值0和文本数据。在数值部分我们可以用英文双引号加入无需输入就可以显示的内容。在第三部分留空,数值0将不会被显示,如果写个短横杠,那所有0值就会显示为短横杠。第四部分的@,表示按输入的内容显示文本。

    顺便说一下,格式字符串“[DBNum2][$-zh-CN]G/通用格式”会将数值显示为中文大写数字。怎么知道的?如下图,先将某个单元格格式设置为中文大写数字:

    然后重新进入设置单元格格式对话框,点击“自定义”看看,下面就多了一个新的格式字符串了:

     所以,自定义单元格格式字符串的最简便方式,是利用类型框中已有的格式字符串修改。从已有的格式字符串中,很容易学到让单元格显示为符合自己特殊需要的形式的方法,例如,从已有的格式字符串中可以看到“[红色]”这样的占位符,凭直觉这应该就是规定单元格显示颜色的,我们就可以用这个特性改造本文开头的格式字符串,让负数显示为红色:

    [DBNum1][$-zh-CN]G/通用格式"元";[红色][DBNum1]"负"[$-zh-CN]G/通用格式"元";00; @

    对于单元格格式字符串其他占位符(如“#,###”,“0.00”之类)的含义本文就不再赘述,各位可以自行发挥直觉和试验的威力。

    展开全文
  • easyExcel自定义单元格配置依赖对象写excel导出excel方法实现CellWriteHandler接口读excel 配置 依赖 <!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel --> <dependency> <groupId...

    配置

    依赖

     <!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>easyexcel</artifactId>
                <version>2.2.11</version>
            </dependency>
    

    对象

    @Data
    @Accessors(chain = true)
    @HeadFontStyle(fontName = "等线", fontHeightInPoints = 10)
    public class ApproveList {
    
        @ExcelProperty(value = "approveResult",index = 0)
        private String approveResult;
    
        private String remark;
    
        private String id;
    
        private String pn;
    
        private String detail;
     }
    

    写excel

    导出excel方法

    public void download(HttpServletResponse response,ApproveList approveList){
           String fileName =
                    URLEncoder.encode(
                            ("ApproveList"  + dateFormat.format(new Date())), "UTF-8");
    
            response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
            
            //设置approveResult为下拉选择框,设置选择框的枚举值
            approveList.getApproveResult();
            HashMap<Integer, String[]> dropDownMap = new HashMap<>();
            dropDownMap.put(0,new String[]{"Approve","Reject"});
    
            //设置哪些列不可编辑,字段索引
            List<Integer> columnIndex = new ArrayList<>();
            for (int i = 2; i < 4; i++) {
                columnIndex.add(i);
            }
    
            try {
                EasyExcel.write(response.getOutputStream(), ApproveList.class).
                        registerWriteHandler(new CustomCellWriteHandler())
                        .registerWriteHandler(new ContentCellWriteHandler(columnIndex,dropDownMap))
                        .sheet("ApproveList").doWrite(approveList);
            } catch (IOException e) {
                e.printStackTrace();
            }
    }
    

    实现CellWriteHandler接口

    public class ContentCellWriteHandler implements CellWriteHandler {
    
        private List<Integer> columnIndexs;
        private Short colorIndex;
        private HashMap<Integer,String> annotationsMap;
        private HashMap<Integer,String[]> dropDownMap;
    
        public ContentCellWriteHandler(List<Integer> columnIndexs, Short colorIndex, HashMap<Integer,String> annotationsMap){
            this.columnIndexs=columnIndexs;
            this.colorIndex=colorIndex;
            this.annotationsMap=annotationsMap;
        }
    
        public ContentCellWriteHandler(List<Integer> columnIndexs, Short colorIndex, HashMap<Integer,String> annotationsMap, HashMap<Integer,String[]> dropDownMap){
            this.columnIndexs=columnIndexs;
            this.colorIndex=colorIndex;
            this.annotationsMap=annotationsMap;
            this.dropDownMap=dropDownMap;
        }
    
        public ContentCellWriteHandler(List<Integer> columnIndexs, HashMap<Integer,String[]> dropDownMap){
            this.columnIndexs=columnIndexs;
            this.dropDownMap=dropDownMap;
        }
    
        @Override
        public void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Head head, Integer integer, Integer integer1, Boolean aBoolean) {}
    
        @Override
        public void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Cell cell, Head head, Integer integer, Boolean aBoolean) {}
    
        @Override
        public void afterCellDataConverted(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, CellData cellData, Cell cell, Head head, Integer integer, Boolean aBoolean) {}
    
        @Override
        public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, List<CellData> list, Cell cell, Head head, Integer integer, Boolean isHead) {
            if (!isHead){
                Sheet sheet = writeSheetHolder.getSheet();
    
                if (CollectionUtils.isNotEmpty(columnIndexs)){
                    Workbook workbook = sheet.getWorkbook();
    //                CellStyle cellStyle1 = StyleUtil.buildHeadCellStyle(workbook, writeFont);
                    /* 这里要重新create不锁定的列样式 */
                    CellStyle unlockCellStyle = workbook.createCellStyle();
                    unlockCellStyle.setLocked(false);//默认是锁定状态;将所有单元格设置为:未锁定;然后再对需要上锁的单元格单独锁定
                    cell.setCellStyle(unlockCellStyle);
                    if (colorIndex != null && columnIndexs.contains(cell.getColumnIndex())){
                        WriteCellStyle writeCellStyle = new WriteCellStyle();
                        WriteFont writeFont = new WriteFont();
                        writeFont.setColor(colorIndex);
                        writeCellStyle.setWriteFont(writeFont);
                    }
                    /* 这里可以根据需要进行判断;我这就将columnIndexs列上锁了 */
                    if (cell.getColumnIndex() != 1 && columnIndexs.contains(cell.getColumnIndex())){
                        // 设置表单保护密码
                        writeSheetHolder.getSheet().protectSheet("password");
                        // 设置锁定单元格
    //                    CellStyle cellLockStyle = StyleUtil.buildHeadCellStyle(workbook, writeFont);
                        /*  这里要重新create列锁定的列样式,*/
                        CellStyle cellLockStyle = workbook.createCellStyle();
                        cellLockStyle.setLocked(true);
                        cellLockStyle.setVerticalAlignment(VerticalAlignment.CENTER);
                        cellLockStyle.setFillBackgroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
                        cellLockStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
                        cellLockStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
                        cellLockStyle.setBorderBottom(BorderStyle.THIN);
                        cellLockStyle.setBorderTop(BorderStyle.THIN);
                        cellLockStyle.setBorderLeft(BorderStyle.THIN);
                        cellLockStyle.setBorderRight(BorderStyle.THIN);
                        cellLockStyle.setWrapText(true);
                        cell.setCellStyle(cellLockStyle);
                    }
    
                }
                if (annotationsMap != null && annotationsMap.containsKey(cell.getColumnIndex())){
                    String context = annotationsMap.get(cell.getColumnIndex());
                    Comment cellComment =sheet.createDrawingPatriarch().createCellComment(new XSSFClientAnchor(0, 0, 0, 0, (short) cell.getColumnIndex(), 0, (short) 5, 5));
                    cellComment.setString(new XSSFRichTextString(context));
                    cell.setCellComment(cellComment);
                }
                //设置下拉框
                if (dropDownMap !=null && dropDownMap.containsKey(cell.getColumnIndex())){
                    String[] datas = dropDownMap.get(cell.getColumnIndex());
                    DataValidationHelper dataValidationHelper = sheet.getDataValidationHelper();
                    DataValidationConstraint dvConstraint = dataValidationHelper.createExplicitListConstraint(datas);
                    CellRangeAddressList addressList = null;
                    DataValidation validation = null;
                    for (int i = 1; i < 1000; i++) {
                        addressList = new CellRangeAddressList(i, i, cell.getColumnIndex(), cell.getColumnIndex());
                        validation = dataValidationHelper.createValidation(
                                dvConstraint, addressList);
                        sheet.addValidationData(validation);
                    }
                }
            }
        }
    }
    
    • cellLockStyle.setLocked(true);设置为不可编辑,但导出后发现所有单元格均不可编辑:
      • 因为createCell();创建单元格后,单元格默认是锁定状态;
      • protectSheet(“密码”);保护工作表是保护所有锁定的单元格;

    导出效果:
    在这里插入图片描述

    读excel

    对象中设置@Accessors(chain = true),easyExcel能读取行数据,但是解析不了,也就是映射不了相应的类。

    展开全文
  • LXGalleryView是用于自定义单元格的可自定义幻灯片。 要求 迅捷4+ iOS 9.0以上 Xcode 9+ 安装 可可豆 您可以使用安装LXGalleryView将其添加到您的Podfile : pod 'LXGalleryView' 用法 创建一个“ LXGalleryView...
  • 在GridContrl中因为业务需求用上了自定义单元格的方法,是利用GridView的事件 在该方法中可以添加个继承了RepositoryItem的控件,比如说像我这样的 class CustomRepositoryItem : RepositoryItem 其他具体用法自己...
  • layui中table自定义单元格

    千次阅读 2019-12-18 09:44:05
    最近在项目中用到了基于layui的table组件的单元格自定义功能,研究了一下,整理代码如下: <html lang="en"> <head> <title>考核管理 -- 特性统计</title> <meta name="renderer" ...
  • DataGridview选择自定义单元格/C 在选择前先取消先前选择 this.dataGridView1.CurrentCell.Selected=false; 选择指定单元格核心代码; this.dataGridView1[ColumnIndex,RowIndex].Selected=true; 右键选择选择...
  • 【Excel】设置自定义单元格格式

    万次阅读 2018-10-14 17:51:52
    本文主要介绍一下自定义单元格格式的小技巧,主要流程: 1.选中要设置单元格格式的单元格,通过ctrl+1进入到设置单元格格式窗口 2.选择自定义方法,设置相应的格式 目录: 一、消除单元格显示E+ 二、单元格的数量...
  • IOS 自定义单元格

    2015-07-13 21:48:14
    IOS 自定义单元格表视图. 注意:主要了解CustomerCell的使用。
  • EasyExcel实现自定义单元格样式导出

    千次阅读 2021-03-25 10:10:16
    EasyExcel实现自定义单元格样式导出 需求: 计划逾期数据进行标红 导出样式: 1. 引入依赖 <!--建议不要选用此版本以下的依赖--> <dependency> <groupId>com.alibaba</groupId> <...
  • JavaFX TableView 自定义单元格样式时注意事项 JavaFX的自定义单元格可以使用cellFactory实现,但是实际使用的时候很可能会遇到各种问题,最奇怪的一点是初始设置的内容挺好的,但是表格一滚动,样式立马出错。完全...
  • POI自定义单元格

    千次阅读 2017-10-18 17:25:02
    POI自定义单元格类在用POI做Excel导出的时候,单元格的创建是一个很头疼的问题,对于有些表格中杂乱无章的单元格顺序,比如:这种树形结构并不像横向的表格有规律,所以就需要一行一行的插入。这是一项没有啥技术...
  • excel自定义单元格格式[定义].pdf
  • 今天说的自定义单元格格式,入口很好找,功能也是经常用到的,只不过可能没有深入使用它,入口:右键-设置单元格格式-自定义。这个功能改变单元格内容显示效果,并不会改变本身的内容,可供我们观察、筛选等功能使用...
  • easyexcel body自定义单元格合并,自定义列宽body 自定义单元格合并AbstractMergeStrategy的实现自定义合并的使用自定义列宽实现AbstractHeadColumnWidthStyleStrategy类自定义列宽的使用 body 自定义单元格合并 ...
  • 我有一个表视图,显示用户从服务器聊天消息。 tableview有一个带有一个textview的自定义单元格。 我想根据已从服务器加载的消息宽度(内容宽度)来调整textView的宽度。 使用下面提到的代码,我可以得到正确的...
  • Easy-Excel 自定义单元格样式

    千次阅读 2020-11-23 22:13:11
    自定义 表头和内容单元格样式 引入jar <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.6</version> </...
  • React电子表格网格类似于Excel的网格组件,用于带有自定义单元格编辑器,高性能滚动和可调整大小的列的React主要特点这是一个类似于Excel的Spreadsheet Grid组件,它支持: :check_mark_button: 自定义单元格编辑器...
  • 灵感来源 https://www.dazhuanlan.com/2019/10/07/5d9a906dc5c9f/...<template> <el-table :data="tableData.filter(data => !search || data.name.toLowerCase().includes(search.toLowerCase()))" ...
  • spreadjs_自定义单元格实现层级树-demo
  • 就是单元格中间,或者两边是自定义样式,其他是默认的 上代码:其实就是template里面判断,刚开始我是在写多个template,然后判断,后面发现死活不行,最后突然想到会不会是只预留了一个插槽,所以在里面判断。...
  • AlaXLS 使用自定义单元格颜色和格式导出到 Excel JavaScript 库 抱歉,正在进行中。 请阅读 alaxlx.js 作为未来库的原型。 这是示例,它将如何工作: :
  • 先放上单行record刚开始单元格render方法是这样写的,发现取不到tupian参数 经过百度发现 render方法接收两个参数,一个text一个record,这样写就对了 最终可以实现表格插入图片
  • cell.CellStyle.FillPattern = FillPattern.SolidForeground; byte r = (byte)226; byte g = (byte)239; byte b = (byte)218; if (workbook is XSSFWorkbook) { cell.CellStyle.FillForegroundColor = 0;...
  • 需求是动态表头情况下根据单元格的值呈现不同的背景色或其他。 官方文档:https://www.layui.com/demo/table/style.html 解决方案 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...
  • 所谓自定义单元格,就是自己写一个java类在一个单元格里实现皕杰报表工具不能实现的功能,可以使得报表的页面更加多元化。 这个java类就是自定义单元格实现类,该类需继承皕杰报表自定义单元格接口bios.report.api....
  • 主要是表格信息 在vue官网上没有找到这种整个表格一起提交的,所以就按照自己的想法弄了一下,也是刚开始学vue,不知道写法好不好,具体写法如下: 表格中的每个单元格都是用模板定义的, slot : 跟jQuery的Id差不多, ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 63,893
精华内容 25,557
关键字:

自定义单元格