精华内容
下载资源
问答
  • 怎么固定单元格格式
    千次阅读
    2018-05-16 13:38:01

    需求背景

    最近项目中一个功能,需要用户以Excel文件的方式提供录入数据。为了避免用户误操作给后续的文件解析工作带来额外的巨大工作量,我们需要对Excel模板文件进行定制。以下图为例

    具体要求如下

    • 锁定Excel样式,不能修改单元格样式和位置;
    • 限制特定单元格输入内容的格式,比如电话号码,日期等;
    • 不允许修改深灰色部分的表头,但是可以输入和修改浅灰色的单元格内容;

    限制单元格输入格式

    通过Excel的数据验证功能就可以实现在输入内容的同时进行校验,只有满足格式条件的数据才能保存。使用方法比较简单,首先选中你要校验的单元格(比如下图中的A列),然后点击【数据】菜单下的【数据验证】,根据具体的要求设置验证条件即可。

    通过内置的验证条件,以及可以使用公式的自定义验证,我们可以对很多复杂的数据格式进行校验。因为我们项目中的实际需求不算太复杂,所以这篇文章中仅仅展示了部分Excel的功能。

    日期

    在数据验证的下拉框【允许】中,选择日期,然后指定一个范围。本例中指定了一个非常宽的范围,目的仅仅是为了保证用户输入的是一个合法的日期,不会出现2月30日这种手滑失误。

    作为一个用户友好的程序,在用户输入出错的时候,应该给出一个明确的信息,指导用户修改错误。所以我们在设置了验证条件之后,还需要配置出错警告信息,当然如果一定要偷懒的话也可以省略这一步。如下图

    整数和小数

    数字类的验证比较类似,这里仅仅举一个例子,如下

    手机号码

    对于像身份证,电话号码这一类信息,没有现成的验证条件可以使用。不过Excel提供了自定义这种验证方式,可以通过写一个公式,来曲线救国完成复杂数据格式的验证。

    还是以手机号码为例,本质上是要求输入一个11位长度的数字,那么我们就把验证拆分为同时成立的两个条件:

    1. 长度11位,公式 LEN(D1)=11
    2. 必须是数字,公式 ISNUMBER(D1)

    如下图,我们在【允许】下拉框中选择【自定义】,然后在下方的【公式】里面输入公式

    锁定样式

    为了避免用户无意或者有意的修改Excel模板,我们需要对样式进行锁定。锁定之后的文件,用户只能在我们规定的单元格内输入内容,并且不能随意修改单元格样式。Excel提供的保护工作表功能可以帮助我们实现这个愿望,仅仅需要点几下鼠标,我们即可达成目标。

    首先我们要选定不需要锁定的单元格,这里要解释一下,为啥是选不需要锁定?在本例中,浅灰色的单元格是录入区域,也是我们不需要锁定的部分。我们需要保护的是非录入区域,比如表头。Excel默认是对所有单元格开启了锁定选项的,所以我们要把非录入区域的锁定取消,否则用户就没法录入数据了。

    如下图,我们选中所有浅灰色单元格,然后鼠标右键点击【设置单元格格式】。

    在设置单元格格式窗口中,取消【锁定】。记住,默认是勾选的,一定要取消,一定要取消,一定要取消!

    然后的任务就简单了,在【审核】菜单中找到并点击【保护工作表】,提供用于解锁的密码,大功告成。

    PS:如果有更多特殊要求,可以修改允许此工作表的所有用户进行中的选项来完成更细粒度的控制。

    转载于:https://juejin.im/post/5afc3083f265da0b9c10d28f

    更多相关内容
  • (一)数字格式 右击Excel中任意一个单元格,出来的菜单里会有一项“设置单元格格式”——“数字”下有多种数字格式的分类。 这里我们通过VBA代码来设置一下,简单举个例子: A B 1 品类 单价 2 西红柿 4 3 菠菜 3 ...

    今天原本没计划写博客,但电脑带都带回来了,要是不用它做点事情,总觉得亏哈

    太阳是真的晒呀,早上迎着太阳上班,下午迎着太阳下班,一天烤两次,真要变黑了。

    等我变成小黑孩的时候,没有一根紫外线是无辜的!

    (一)数字格式

    右击Excel中任意一个单元格,出来的菜单里会有一项“设置单元格格式”——“数字”下有多种数字格式的分类。

    这里我们通过VBA代码来设置一下,简单举个例子:

      A B
    展开全文
  • 今天前辈让更改导出单元格格式,关于预算的改成数值格式,日期改成日期格式。看遍了网上好多人写的和其他前辈写的,都不行,最后试了一下试出来了。如有不对,还请指正。

    记录工作中关于Java设置导出单元格格式

    导出

    第一次写记录。如有不对,还请指正。
    今天前辈让更改导出单元格格式,关于预算的改成数值格式,日期改成日期格式。
    看遍了网上好多人写的和其他前辈写的,都不行,最后试了一下试出来了。

    日期格式

    CellStyle dateStyle = wb.createCellStyle();
    dateStyle.setAlignment(HorizontalAlignment.CENTER);
    dateStyle.setVerticalAlignment(VerticalAlignment.CENTER);
    dateStyle.setFont(dataFont);
    CreationHelper createHelper=wb.getCreationHelper();
    dateStyle.setDataFormat(createHelper.createDataFormat().getFormat("yyyy/M/d"));
    if (!StringHelper.IsEmptyOrNull(columnValue)) {
    	try {
    		valueT = columnValue == null ? "" : String.valueOf(columnValue);
    		valueT = valueT.replace("-", "/");
    		Date date1 = new SimpleDateFormat("yyyy/M/d").parse(valueT);
    		cell.setCellValue(date1);
    	} catch (java.text.ParseException e) {
    		// TODO Auto-generated catch block
    		e.printStackTrace();
    	}
    }else {
    	cell.setCellValue("");
    }
    cell.setCellStyle(dateStyle);
    

    在这里插入图片描述

    数值格式

    valueT = columnValue == null ? "" : String.valueOf(columnValue);
    CellStyle numberStyle = wb.createCellStyle();
    numberStyle.setAlignment(HorizontalAlignment.CENTER);
    numberStyle.setVerticalAlignment(VerticalAlignment.CENTER);
    numberStyle.setFont(dataFont);
    DataFormat df = wb.createDataFormat();
    if (!StringHelper.IsEmptyOrNull(valueT)) {
    	cell.setCellValue((new BigDecimal(valueT)).doubleValue());
    }else {
    	cell.setCellValue("");
    }
    numberStyle.setDataFormat(df.getFormat("0.00_ "));
    cell.setCellStyle(numberStyle);
    

    在这里插入图片描述

    展开全文
  • NPOI设置单元格格式

    千次阅读 2021-07-13 19:57:46
    NPOI设置单元格格式

    NPOI设置单元格格式

    设置水平居中

    //设置style
    ICellStyle cellstyle = workbook.CreateCellStyle();
    cellstyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;
    cellstyle.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
    

    设置行高

    IRow row1 = sh.CreateRow(1);
    row1.Height = 20 * 20;
    

    设置单元的宽度

    IWorkbook wb = new HSSFWorkbook();
    //创建表  
    ISheet sh = wb.CreateSheet("zhiyuan");
    //设置单元的宽度  
    sh.SetColumnWidth(0, 15 * 256);
    sh.SetColumnWidth(1, 35 * 256);
    sh.SetColumnWidth(2, 15 * 256);
    sh.SetColumnWidth(3, 10 * 256);
    

    设置单元格颜色(固定色彩)

    使用NPOI设置Excel单元格背景颜色时,应该设置FillForegroundColor属性,而且还要设置FillPattern才行。

    style.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.PINK.index;
    style.FillPattern = FillPatternType.SOLID_FOREGROUND;
    

    设置单元格颜色(RGB)

    HSSFPalette palette = wk.GetCustomPalette(); //调色板实例
    palette.SetColorAtIndex((short)8, 141, 180, 226);  //第一个参数:设置调色板新增颜色的编号,自已设置即可;取值范围8-64
    HSSFColor hssFColor = palette.FindColor(141, 180, 226);
    style_2.FillForegroundColor = hssFColor.Indexed;
    style_2.FillPattern = FillPattern.SolidForeground;
    
    //合并操作
    
    sheet.AddMergedRegion(new CellRangeAddress(index["firstRow"], index["lastRow"], index["firstCol"], index["lastCol"]));//起始行,结束行,起始列,结束列
    
    //设置合并后style
    var cell = sheet.GetRow(index["firstRow"]).GetCell(index["firstCol"]);
    cell.CellStyle = cellstyle;
    

    参考文献:

    https://blog.csdn.net/qq_38370387/article/details/113258871

    
    ICell icell1top = row1.CreateCell(0);
    icell1top.CellStyle = Getcellstyle(wb, stylexls.);
    icell1top.SetCellValue("网站名");
    
    ICell icell2top = row1.CreateCell(1);
    icell2top.CellStyle = Getcellstyle(wb, stylexls.);
    
    //创建一个常用的xls文件
            private void button3_Click(object sender, EventArgs e)
            {          
                IWorkbook wb = new HSSFWorkbook();
                //创建表  
                ISheet sh = wb.CreateSheet("zhiyuan");
                //设置单元的宽度  
                sh.SetColumnWidth(0, 15 * 256);
                sh.SetColumnWidth(1, 35 * 256);
                sh.SetColumnWidth(2, 15 * 256);
                sh.SetColumnWidth(3, 10 * 256);
                int i = 0;
                #region 练习合并单元格
                sh.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 0, 0, 3));
    
                //CellRangeAddress()该方法的参数次序是:开始行号,结束行号,开始列号,结束列号。
      
                IRow row0 = sh.CreateRow(0);
                row0.Height = 20 * 20;
                ICell icell1top0 = row0.CreateCell(0);
                icell1top0.CellStyle = Getcellstyle(wb, stylexls.);
                icell1top0.SetCellValue("标题合并单元");
                #endregion
                i++;
                #region 设置表头
                IRow row1 = sh.CreateRow(1);
                row1.Height = 20 * 20;
    
                ICell icell1top = row1.CreateCell(0);
                icell1top.CellStyle = Getcellstyle(wb, stylexls.);
                icell1top.SetCellValue("网站名");
    
                ICell icell2top = row1.CreateCell(1);
                icell2top.CellStyle = Getcellstyle(wb, stylexls.);
                icell2top.SetCellValue("网址");
    
                ICell icell3top = row1.CreateCell(2);
                icell3top.CellStyle = Getcellstyle(wb, stylexls.);
                icell3top.SetCellValue("百度快照");
    
                ICell icell4top = row1.CreateCell(3);
                icell4top.CellStyle = Getcellstyle(wb, stylexls.);
                icell4top.SetCellValue("百度收录");
                #endregion  
      
                using(FileStream stm=File.OpenWrite(@"c:/myMergeCell.xls"))
                {
                    wb.Write(stm); 
                    MessageBox.Show("提示:创建成功!");
                }
            }
    
    
    
            #region 定义单元格常用到样式的枚举
            public enum stylexls
            {,
                url,
                时间,
                数字,,
                百分比,
                中文大写,
                科学计数法,
                默认
            }
            #endregion
    
    
            #region 定义单元格常用到样式
            static ICellStyle Getcellstyle(IWorkbook wb, stylexls str)
            {
                ICellStyle cellStyle = wb.CreateCellStyle();
    
                //定义几种字体  
                //也可以一种字体,写一些公共属性,然后在下面需要时加特殊的  
                IFont font12 = wb.CreateFont();
                font12.FontHeightInPoints = 10;
                font12.FontName = "微软雅黑";
    
    
                IFont font = wb.CreateFont();
                font.FontName = "微软雅黑";
                //font.Underline = 1;下划线  
    
    
                IFont fontcolorblue = wb.CreateFont();
                fontcolorblue.Color = HSSFColor.OLIVE_GREEN.BLUE.index;
                fontcolorblue.IsItalic = true;//下划线  
                fontcolorblue.FontName = "微软雅黑";
    
    
                //边框  
                cellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.DOTTED;
                cellStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.HAIR;
                cellStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.HAIR;
                cellStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.DOTTED;
                //边框颜色  
                cellStyle.BottomBorderColor = HSSFColor.OLIVE_GREEN.BLUE.index;
                cellStyle.TopBorderColor = HSSFColor.OLIVE_GREEN.BLUE.index;
    
                //背景图形,我没有用到过。感觉很丑  
                //cellStyle.FillBackgroundColor = HSSFColor.OLIVE_GREEN.BLUE.index;  
                //cellStyle.FillForegroundColor = HSSFColor.OLIVE_GREEN.BLUE.index;  
                cellStyle.FillForegroundColor = HSSFColor.WHITE.index;
                // cellStyle.FillPattern = FillPatternType.NO_FILL;  
                cellStyle.FillBackgroundColor = HSSFColor.BLUE.index;
    
                //水平对齐  
                cellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.LEFT;
    
                //垂直对齐  
                cellStyle.VerticalAlignment = VerticalAlignment.CENTER;
    
                //自动换行  
                cellStyle.WrapText = true;
    
                //缩进;当设置为1时,前面留的空白太大了。希旺官网改进。或者是我设置的不对  
                cellStyle.Indention = 0;
    
                //上面基本都是设共公的设置  
                //下面列出了常用的字段类型  
                switch (str)
                {
                    case stylexls.:
                        // cellStyle.FillPattern = FillPatternType.LEAST_DOTS;  
                        cellStyle.SetFont(font12);
                        break;
                    case stylexls.时间:
                        IDataFormat datastyle = wb.CreateDataFormat();
    
                        cellStyle.DataFormat = datastyle.GetFormat("yyyy/mm/dd");
                        cellStyle.SetFont(font);
                        break;
                    case stylexls.数字:
                        cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00");
                        cellStyle.SetFont(font);
                        break;
                    case stylexls.:
                        IDataFormat format = wb.CreateDataFormat();
                        cellStyle.DataFormat = format.GetFormat("¥#,##0");
                        cellStyle.SetFont(font);
                        break;
                    case stylexls.url:
                        fontcolorblue.Underline = 1;
                        cellStyle.SetFont(fontcolorblue);
                        break;
                    case stylexls.百分比:
                        cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00%");
                        cellStyle.SetFont(font);
                        break;
                    case stylexls.中文大写:
                        IDataFormat format1 = wb.CreateDataFormat();
                        cellStyle.DataFormat = format1.GetFormat("[DbNum2][$-804]0");
                        cellStyle.SetFont(font);
                        break;
                    case stylexls.科学计数法:
                        cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00E+00");
                        cellStyle.SetFont(font);
                        break;
                    case stylexls.默认:
                        cellStyle.SetFont(font);
                        break;
                }
                return cellStyle;
    
    
            }
            #endregion
    
    展开全文
  • easy-excel 日期格式
  • 使用pandas处理excel,并使用Openpyxl修改单元格格式使用pandas处理excel,并使用Openpyxl修改单元格格式需求处理基本流程查询资料过程1.读取数据,2.指标的计算:计算较为简单,新指标由某几列的四则运算生成,放...
  • Excel 单元格 自定义格式详解

    千次阅读 2022-01-10 16:37:48
    excel自定义格式笔记
  • 1、日期格式 选中需要处理的数据区域,找到数据-->分列-->分隔符号-->Tab键-->常规-->完成 2、长数字字符处理为文本格式 选中需要处理的数据区域...固定宽度-->文本-->完成 ...
  • datetime(*xldate_as_tuple(v1,0)) 能将浮点转成需要的日期,但是对于非数值字段,就会报错 invalid literal for int() with base 10:'anycharacter' 并且会误杀金额类float 不知道如何判断Excel格式,请大神指点,...
  • 怎样设置单元格属性为文本格式

    千次阅读 2021-03-15 23:20:08
    你好,刚才参考你的方式试了一下,还是不行,首先我导出的java bean 属性,@ExcelProperty(value = "单据编号")private String billNo; (没有加converter 属性),其次我的自定义handler是这样写的,public class ...
  • VBA:强制设置单元格/Range的格式

    千次阅读 2021-05-18 15:25:08
    我们在使用Excel的时候,经常需要使用格式设置,尤其是文本设置,时间设置,就像是“城市牛皮癣”一样,换不过来!!真是让人火大。 即使,在VBA中使用C开头的函数,只是转换了Variant的类型,等填入到单元格并不是...
  • 帆软单元格格式属性设置

    千次阅读 2020-07-20 11:06:53
    单元格是组成报表的最小元素,FineReport 将单元格很多属性开放给应用开发人员进行控制,如新增单元格,设置列宽、行高,字体、前景色,背景色、显示位置、边框样式、边框颜色等等。 以下我们将常用的属性设置列出...
  • 在使用Excel表格进行运算的时候固定某一个单元格,往往就是算乘法或者一些算术运算的时候,有些值是始终不变的,但是算术中的每一项中也有可变项。 举个例子:每个人每门课的成绩乘上每门课的学分,最终除以总...
  • Python xlwt设置excel单元格字体及格式

    千次阅读 2020-12-06 18:39:34
    本文根据自己初学经验编写的使用xlwt模块设置单元格的一些基本样式,如设置单元格的背景颜色,下框线,字体,字体的颜色,设置列宽行高,插入简单的图片,详细程序如下:#!/usr/bin/env python# -*- coding: utf-8 -...
  • 用微软提供的组件来操作excel ,C++操作EXCEL,支持读写、设置字体和单元格属性,适合初学者参考。
  • 有时候在一些自定义场景下我们需要给excel表格打上标签格式,比如说财务想给每个月花费最高和最低员工打上标记,在输出表格时内容就已经处理完毕。 准备工作 首先,下载Spire.xls功能类库 ,点击这里下载; ...
  • 目的:相同格式的excel表,需要合并数据,手动输入太费事费力 缺点:读取大批量数据运行较慢(>10 min),写入多个表格更新行列较麻烦 import openpyxl from win32com.client import Dispatch #添加此防止读出none...
  • Python xlwt 模块 Excel表格 基础 3:单元格格式、字体格式、对齐方式、边框及填充等前言:1、数据类型设置2、字体设置3、单元格对齐方式4、单元格边框设置5、填充设置6、单元格保护最后: 前言: 前面两节博客介绍...
  • 一、统一样式  ...主要是用到render函数,调用projectType方法进行数据判断处理,其中的param和row是固定写死的,status是对象中的属性值也是row中的属性值 二、显示不同则样式不同 ...
  • 今天要讲的是单元格格式的设置,字体字号的设置,边框设置,合并单元格之类的。 下面看看具体的内容: 1.使用单元格格式工具美化表格 1.1设置单元格格式的对话框在哪里? 下图中三个小箭头都能打开设置单元格...
  • 今天说的自定义单元格格式,入口很好找,功能也是经常用到的,只不过可能没有深入使用它,入口:右键-设置单元格格式-自定义。这个功能改变单元格内容显示效果,并不会改变本身的内容,可供我们观察、筛选等功能使用...
  • 这时就需要把单元格格式改为文本,字符串: $objPHPExcel->getActiveSheet()->setCellValueExplicit('D1',123456789033,PHPExcel_Cell_DataType::TYPE_STRING); $objPHPExcel->getActiveSheet(0)-&...
  • 如何在PHPexcel中设置单元格的样式?

    千次阅读 2021-03-22 20:25:13
    1)设置最小宽度细胞在互联网上的有关于这一些讨论,但我发现的代码无法正常工作:$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(100);的列大小是根据数据大小/预置宽度2)强调细胞我...
  • poi操作word 单元格格式(边界)问题

    千次阅读 2019-08-14 17:29:37
    找了很多的资料但是就是没有用poi操作word表格单元格边界问题,很是苦恼,不多说了几行代码,希望有帮助。 XWPFTableCell cell...... cell.getCTTc().getTcPr().getTcBorder.getTop().setVal(STBorder.SINGLE) //...
  • openpyxl format cells 格式单元格

    千次阅读 2021-01-02 17:12:11
    日常 triage API automation 时,...关于自动化定制 report,将分 2 篇介绍,这篇主要来说说 openpyxl 格式化问题,最常用的就是设置单元格的字体,边框,hyperlink,对齐,自适应宽度等,更多细节可以参考 openpyxl...
  • 用借助名称一次选定单元格区域先用鼠标圈出一部分区域,再单击工作表左上角的“名称框”,输入该区域的名称,如“文萃编辑”。以后无论工作区域的选定多么复杂,只要在名称框中键入特定的名称(如“文萃编辑”),然后...
  • JXL实现Excel单元格锁定分为两个部分:Excel设置 Jxl代码 Excel设置选中所有单元格右键[设置单元格格式],点击[保护]选项卡,将[锁定]前面的勾去掉。 选中需要锁定的单元格右键[设置单元格格式],点击[保护]选项卡,...
  • 准备一张报表 设置 选中需要的单元格 — 添加条件属性

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 22,779
精华内容 9,111
热门标签
关键字:

怎么固定单元格格式