-
2021-07-09 04:43:47
创建表格,插入与删除一行一列或多行多行,一次移动一行一列或多行多列,拆分与合并单元格,单元格内换行,表格求和与求平均值是Excel表格的基本操作;除此之外,Excel表格的基本操作还包括调整行高列宽、单元格样式设置、表格边框与内部线条设置、给表格添加文字及格式设置等,涉及的内容特别多,既包括表格样式设置又包括行列与单元格调整,还包括用公式计算。在这些操作中,有些比较特别,例如单元格内换行,一般按回车就换行,但在 Excel 中却不会;还有移动行列也是,一般选中行列用鼠标拖动就能移动,在 Excel 中却不行;尽管如此,它们的操作不难。以下是Excel表格的基本操作的具体操作方法,操作中所用版本为 Excel 2016。
一、创建表格
1、框选要创建表格的行数和列数。把鼠标移到第一个单元格(即 A1),按住左键,往右下角拖,到达第 12 行第 G 列放开左键,单击“开始”选项下的“样式”上面的“套用表格格式”,选择一种表格样式,例如“表格样式淡浅色 19”,则弹出“套用表格样式”窗口,单击“确定”,一个13行6列的表格创建完成,操作过程步骤,如图1所示:图1
提示:A1 是用列和行表示单元格的方法,其中 A 表示列,1 表示行,A1 就是第一列第一行对应的单元格,又如 B2 就是第二列第二行对应的单元格。
2、原本只选中了12行,由于 Excel 自动增加了一行标题行,所以创建的表格共13行。另外,表格的每列都默认添加了筛选图标,如果用不到可以把它们取消,方法为:选中表格其中一个单元格(如 A1),选择“设计”选项卡,单击“筛选按钮”把其前面的勾去掉,则表格标题的所有“筛选”图标被去掉,如图2所示:图2
3、如果想换一种表格样式,重新框选表格,再次单击“套用表格格式”,选择另一种样式即可。
二、调整行高列宽
(一)调整行高
方法一:只调整选中表格的行高
选中表格,单击“开始”选项卡下“单元格”上面的“格式”,在弹出的选项中选择“行高”,打开“行高”小窗口,输入行高数值,例如 22,单击“确定”,则表格行高变为 22,操作过程步骤,如图3所示:图3
提示:也可以用快捷键打开“行高”窗口,方法为:按住 Alt,按一次 H,按一次 O,按一次 H,一定要按顺序按。
方法二:调整“选中表格与未选中区域”的行高
单击第一行前的行号 1 选中第一行,按住鼠标左键并往下移动选中表格所有行,右键选中的表格,在弹出的菜单中选择“行高”,同样打开“行高”窗口,输入行高,例如 22,单击“确定”,则表格所有行行高变为 22,操作过程步骤,如图4所示:
提示:也可以只选中一行或几行,然后在选中的行高右键,在弹出的选项中选择“行高”,打开“高行”窗口,如图5所示:图5
方法三:拖动调整行高
假如要调整第二三行行高。把鼠标移到行号 2 下面的横线上,鼠标随即变为十字架箭头,按住左键并往下拖,则第二行变高;同样方法把第三行拉高,然后再把它拉低;操作过程步骤,如图6所示:图6
(二)调整列宽
调整列宽跟调整行高一样也有三种方法,并且每种方法的操作也与调整行高相同。以下是用快捷键调整列宽的方法:
单击 B 选中 B 列,按住鼠标左键并往右拖,选中 C 和 D 列,按住 Alt,按一次 H,按一次 O,按一次 W,打开“列宽”窗口,输入列宽数值,例如 10,单击“确定”,则选中的三列列宽变为 10,操作过程步骤,如图7所示:图7
三、插入行列与单元格
1、插入一行与多行
单击 2 选中第二行,右键 2,在弹出的菜单中选择“插入”,则在第二行的位置插入一行,原第二行往下移;单击3选中第三行,然后按住鼠标左键并往下拖,选中 4、5 行,右键 3,在弹出的菜单中选择“插入”,则一次插入 3 行,原第三行(有 1 的单元格那行)下移到第六行,操作过程步骤,如图8所示:图8
2、插入一列与多列
右键 B 列,在弹出的菜单中选择“插入”,则在 B 列的位置插入一列,列名为“列12”,原第二列往右移;单击 C 选中它,按住鼠标左键并往右拖,选中 D 和 E 列,右键 C,在弹出的菜单中选择“插入”,则一次插入三列,列名为“列13、列14 和列15”;操作过程步骤,如图9所示:图9
3、插入单元格
1、右键第二行 B 列对应的单元格(即 B2),在弹出的菜单中选择“插入”,然后选择“在左侧插入列”,则在“列12”的位置插入一列,列名为“列16”;操作过程步骤,如图10所示:图10
2、Excel插入单元格不是单独插入一个单元格,而插入一列或一行;当 选择“在左侧插入列”是插入一列;当选择“在上方插入表行”是插入一行。
四、删除行列与单元格
1、删除一行与多行
右键行号 2,在弹出的菜单中选择“删除”,则第二行被删除;选中第二到第四行,右键 2,在弹出的菜单中选择“删除”,则选中的三行被一次性删除,操作过程步骤,如图11所示:
2、删除一列与多列
右键 B,在弹出的菜单中选择“删除”,则“列16”被删除;选中 B、C、D 和 E 四列,右键 B,在弹出的菜单中选择“删除”,则“列12、列13、列14 和列15”被删除;操作过程步骤,如图12所示:
3、删除单元格
右键第二行 B 列对应的单元格(即 B2),在弹出的菜单中选择“删除”,然后再选择“表列”,则“列2”被删除;操作过程步骤,如图13所示:13
五、移动行列与单元格
1、移动行
单击 2 选中第二行,把鼠标移到第二行下边线上,按住 Shift 键,再按住鼠标左键,往下拖直到粗绿线停在第五行下边线上,则第二行被下移到第五行,原第五行上移,操作过程步骤,如图14所示:图14
2、移动列
单击 A 选中“列1”,把鼠标移到“列1”右边线上,按住 Alt 键,再按住鼠标左键,往右拖直到粗绿线停在“列4”右边线上,则“列1”被移到“列4”,原“列4”往左移,操作过程步骤,如图15所示:图1
3、移动单元格
单击第 5 行 C 列对应的单元格(即 C5)选中它,把鼠标移到 C5 上边线,按住鼠标左键,往上移两个单元格(即上移到 C3),放开左键;再把鼠标移到 C3 左边线上,按住鼠标左键,再往左移两个单元格(即左移到 A3);操作过程步骤,如图16所示:
六、单元格样式设置
(一)选择单元格样式
选中要设置样式的单元格,例如 A3,单击“开始”选项卡下“样式”上的“单元格样式”,在展开的菜单中共分为四种类型,分别为:好、差和适中,数据和模型,标题,数字格式,选择想要的样式即可,演示操作,如图17所示:
(二)用颜色填充单元格
单击第三行 A 列对应的单元格(即 A3)选中它,单击“开始”选项下的“填充颜色”图标,在弹出的色块中选择一种颜色,例如“金色,个性色4,淡色 40%”,则 A3 用所选颜色填充,操作过程步骤,如图18所示:图18
七、表格边框与内部线条设置
(一)表格边框设置
1、选中整个表格,在其上单击右键,在弹出的菜单中选择“设置单元格格式”,如图19所示:图19
2、打开“设置单元格格式”窗口,选择“边框”选项卡,如图20所示:图20
3、选择一种“线条样式”,例如选择第二排倒数第三种;单击“颜色”下面的下拉列表框,选择一种“线条颜色”,例如“标准色”下的“橙色”,再单击“预置”下的“外边框”选择它,设置好后,如图21所示:图21
4、单击“确定”,则表格边框变为所设置样式,如图22所示:图22
(二)表格内部线条设置
1、选中整个表格,同样方法打开“设置单元格格式”窗口,并选择“边框”选项卡,“线条样式”选择“无”下面的虚线,再单击“预置”下“内部”上的图标,其它的保持默认,如图23所示:图23
2、单击“确定”,则表格除外边框外,内部线条全变虚线,如图24所示:图24
提示:无论是表格边框还是内部线,还可以单击“开始”选项下“字体”上面“边框”下拉列表框设置,如图25所示:图2
八、表格文字编辑
(一)向表格添加文字并换行
假如要在 A2 单元格中输入“Excel表格的基本操作”。单击 A2 选中它,输入“Excel表格”后已经占满单元格,按 Alt + Enter 组合键换行,第二行输入“的基本操作”已超出单元格,把光标定位到“操”的后面,再按 Alt + Enter 组合键,则又换一行,操作过程步骤,如图26所示:图26
提示:按两次 Alt + Enter 组合键换行后,若继续输入,则 Excel 会自动换行,勿需再按 Ctrl + Enter。
(二)给表格文字设置对齐方式和颜色
1、选中 A1 单元格,选择“开始”选项卡,单击“对齐方式”下的“居中”图标,则“姓名”居中;选中第一行,再次单击“居中”图标,“姓名”左对齐,再单击一次“居中”图标,则第一行所有字段居中对齐,操作过程步骤,如图27所示:图27
2、如果还要给文字设置字体和字号,单击“字体和字号”下拉列表框选择即可。若还要设置加粗、倾斜和下划线,单击这些图标即可。
(三)给表格添加标题
1、右键第一行行号 1,在弹出的菜单中选择“插入”,则在第一行插入一行,原第一行往下移了;把第一行拉高,选中第一行 A 列到 F 列(即 A1:F1),单击“合并后居中”,把第一行的六个单元格合并为一个;输入“学生成绩表”作为表格标题,选中标题,单击“字号”下拉列表框,选择一种字号,例如 28;单击“字体”下拉列表框,选择一种字体,例如“方正小标宋”;单击粗体 B,把标题加粗;单击“字体颜色”右边的小三角,在弹出的色块中选择一种颜色,例如“橙色”,则表格标题制作完成,操作过程步骤,如图28所示:图28
2、给表格输入学生各科成绩,最终效果如图29所示:图29
九、表格求和
1、单击 G3 单元格选中它,选择“公式”选项卡,单击“自动求和”上面的图标,则自动在 G3 中输入公式 =SUM(表3[@[高数]:[C语言]]),按回车,则自动求出所有同学的总分,并且自动新增一列,把“列1”改为“总分”,再选择“数据”选项卡,单击“筛选”,把“总分”右边的“筛选”图标去掉,操作过程步骤,如图30所示:图30
2、以上是给行求和,给列求和也是一样的方法;另外,求和方法有多种,以上只是其中一种。
十、表格求平均值
1、单击 H3 单元格选中它,选择“公式”选项卡,单击“自动求和”,在弹出的菜单中选择“平均值”,则自动在 H3 中填入公式 =AVERAGE(表3[@[高数]:[总分]]),由于总分不能参与求平均分,所以要重新框选各科成绩,把鼠标移到 B3 单元格,按住左键一直拖到 F3 单元格,F3 中的公式随之变为 =AVERAGE(表3[@[高数]:[C语言]]),按回车,则自动求出所有同学各科平均分,同时自动插入一列,把“列1”改为“平均分”,则操作完成,操作过程步骤,如图31所示:图31
2、以上演示的是给行求平均值,给列求平均值也是一样的方法;另外,除是上面的方法外,还有多种求平均值的方法。
十一、调整表格标题
1、由给表格新插入了两列,并且这两列的第一行没有与前面六列合并,需要把它们合并以让标题居中。选中第一行 A 到 H 列,如图32所示:图32
2、选择“开始”选项卡,单击“合并后居中”,则 A 到 H 列被拆分为八个单元格,再次单击“合并后居中”,则八个单元格被重新合并为一个,如图33所示:图33
3、这样,一张表格就制作完成了,制作中所用的知识是Excel表格的基本操作知识,制作表格过程中常常会用到。
更多相关内容 -
关于表格的正则表达式讨论(表格)
2020-12-04 11:23:06可惜经过实践,发现很难。因为表格的HTML标记和其他元素的HTML标记差别很明显,主要原因TD,TR,特别是TABLE都能嵌套。其实我遇到的关键问题在于我不会写 不包含某个单词或语句(非单字符)的正则 ,譬如下面标记... -
如何固定表格四周实现表格上下左右滚动
2021-01-21 14:14:50问题: 最近做项目统计的时候碰见一个特定的需求,要求表格上下滚动时,表格头尾固定;左右滚动的时候表格,表格第一列最后一列固定。 先上效果图可能会更明了些: 左右滚动时,两列固定,头尾中间部分跟着滚动。 ... -
办公不再难 轻松应对Word表格.docx
2021-09-27 06:00:58办公不再难 轻松应对Word表格.docx -
PHP处理CSV表格文件的常用操作方法总结
2020-12-18 15:02:48要做在线Excel表格编辑功能,Excel的xls文件格式的解析就是个问题,毕竟这是微软Office的私有专利格式. 所以要做的话还是用通用的csv(Comma Separated Value,逗号分隔值)格式吧. 各种办公软件都能识别csv表格,其实就是... -
表格展示利器 Bootstrap Table实例代码
2020-12-03 05:39:51在表格导出数据中,发现设置了分页参数,导出的数据仅为表格加载的分页参数数据,于是,针对这样的情况,通过设置分页参数的值,使表格可以加载更多的数据,可达到导出所有数据的功能需求。然而,在实际的实验中,... -
vue.js+Element实现表格里的增删改查
2020-11-26 15:48:10之前用过angularjs 用到后来 发现越来越难学 于是就决定用vue.js 下面就介绍一下vue.js应用在表格里的增删改查 首先引入一下element的js [removed][removed] 然后引入需要用到的vue相关的js文件 [removed]... -
JS如何操作DOM基于表格动态展示数据
2021-01-18 17:03:46公司做一个实时监控有一个地方需要把后台推送的数据动态的使用表格进行展示 我知道有一些插件可以做,但问题是我找的那个插件发现动态更新数据时IE内存一直累积,最后会造成崩溃现象 使用别人的插件说起来是效果好... -
如何用jquery控制表格奇偶行及活动行颜色
2021-01-19 20:12:46最近用到表格奇偶行不同色,不得不去再看jquery,虽然感觉还是难,但已经不像以前一样无从下手了。做完后不得不来感叹一下jquery真是太牛了,不用自己再写一大堆javascript函数去实现了,简单几句轻松搞定。 先定义... -
利用JS+CSS实现滚动表格数据展示
2019-06-06 15:18:13利用CSS动画制作 Html 表格数据滚动显示, 实际自己开发也不难实现。实现的方法很多,下面是本人的一种实现方案,分享给大家。 -
pdfplumber是怎么做表格抽取的(一)
2020-09-01 09:56:23pdfplumber是怎么做表格抽取的(一) 冰焰虫子 兴趣广泛,包含但不限于:coding,NLP,CV,深度学习 笔者把自己这篇原本发布在github page上的文章迁移到了这里,原github page网址:...pdfplumber是怎么做表格抽取的(一)
兴趣广泛,包含但不限于:coding,NLP,CV,深度学习
笔者把自己这篇原本发布在github page上的文章迁移到了这里,原github page网址:https://iceflameworm.github.io/2019/12/02/pdfplumber-table-extraction-1/
pdfplumber是一款完全用python开发的pdf解析库,对于线框完全的表格,pdfminer能给出比较好的抽取效果,但是对于线框不完全(包含无线框)的表格,其效果就差了不少。因为在实际项目所需处理的pdf文档中,线框完全及不完全的表格都比较多,所以为了能够理解pdfplumber实现表格抽取的原理和方法,找到改善、提升表格抽取效果的方法,这里对pdfplubmer的代码逻辑进行了梳理。由于所涉及的内容比较多,所以计划分为三部分进行整理:1. 介绍pdfplumber及其表格抽取流程, 2. 梳理pdfplumber表格线检测逻辑, 3. 梳理pdfplumber表格生成逻辑。本文是第一部分。
背景介绍
最近在做一个表格信息抽取的项目,该项目需要从pdf文件中找到的目标表格,并把目标表格中需要的行和列给抽取出来。由于项目中pdf扫描件占比相对较少(不太到10%吧),所以目前主要把精力花在可编辑pdf文件的表格抽取上。
即便是可编辑的pdf文件,从中抽取表格也不是一件容易的事情,概括起来,难在以下几点:
- 与其说pdf是一种数据格式,不如说它是一组打印指令的集合,因为pdf文件保存的只是一条条打印指令,这些指令告诉pdf阅读器或打印机该在屏幕或者纸张的什么位置显示什么样的符号。与docx和html等格式的文件不同(docx和html通过标签的方式组织不同的逻辑结构,比如<table>, <w:tbl>, <p>, <w:p>等),pdf文件不包含任何逻辑结构的信息,比如段落、句子、单词、表格等等。在pdf文档中,即便在阅读器中能看到
table-like
的东西,但是却无法直接有效地把这些视觉上table-like
的东西所对应的数据给抽取出来。 - 除了不会保存逻辑结构信息之外,pdf往往也不会保存空格、制表符、回车等不可见字符,所以在pdf中无法像在docx中一样,通过制表符来定位不是用线框表示的表格。
为了从pdf中比较好的抽取表格,作者调研、尝试了许多开源的框架(不限于python开发的框架),包括微软开源的深度学习表格检测与识别模型TableBank。尝试了一圈下来,在基于python的框架中,pdfplumber和camelot的效果相对较好。对于线框完全的表格,二者都能给出比较好的抽取效果,但是对于线框不完全(包含无线框)的表格,二者的效果就差了不少。
因为在项目所需处理的pdf文档中,线框完全及不完全的表格都比较多,所以为了能够理解pdfplumber实现表格抽取的原理和方法,找到改善、提升表格抽取的方法,作者在这里对pdfplubmer的代码逻辑进行了梳理。由于所涉及的内容比较多,所以计划分为三部分进行整理,分别是:
- pdfplumber是怎么做表格抽取的(一):介绍pdfplumber及其表格抽取流程
- pdfplumber是怎么做表格抽取的(二):梳理pdfplumber表格线检测逻辑
- pdfplumber是怎么做表格抽取的(三):梳理pdfplumber表格生成逻辑
本文是第一部分。
pdfplumber简介
pdfplumber是一款基于pdfminer,完全由python开发的pdf文档解析库,不仅可以获取每个字符、矩形框、线等对象的具体信息,而且还可以抽取文本和表格。目前pdfplumber仅支持可编辑的pdf文档。
虽然pdfminer也可以对可编辑的pdf文档进行解析,但是比较而言,pdfplumber有以下优势:
- 二者都可以获取到每个字符、矩形框、线等对象的具体信息,但是pdfplumber在pdfminer的基础上进行了封装和处理,使得到的对象更易于使用,对用户更友好。
- 二者都能对文本解析,但是pdfminer输出的文本在布局上可能与原文差别比较大,但是pdfplumber抽取出的文本与原文可以有更高的一致性。
- pdfplumber实现了表格抽取逻辑,基于最基本的字符、线框等对象的位置信息,定位、识别pdf文档中的表格。
pdfplumber抽取表格的基本流程
pdfplumber把表格抽取的功能封装在
TableFinder
这个类中,在其构造函数__init__
中,清晰的定义了表格抽取的基本流程。下面截取了TableFinder
类__init__
函数部分的代码:class TableFinder(object): """ Given a PDF page, find plausible table structures. Largely borrowed from Anssi Nurminen's master's thesis: http://dspace.cc.tut.fi/dpub/bitstream/handle/123456789/21520/Nurminen.pdf?sequence=3 ... and inspired by Tabula: https://github.com/tabulapdf/tabula-extractor/issues/16 """ def __init__(self, page, settings={}): for k in settings.keys(): if k not in DEFAULT_TABLE_SETTINGS: raise ValueError("Unrecognized table setting: '{0}'".format( k )) self.page = page self.settings = dict(DEFAULT_TABLE_SETTINGS) self.settings.update(settings) for var, fallback in [ ("text_x_tolerance", "text_tolerance"), ("text_y_tolerance", "text_tolerance"), ("intersection_x_tolerance", "intersection_tolerance"), ("intersection_y_tolerance", "intersection_tolerance"), ]: if self.settings[var] == None: self.settings.update({ var: self.settings[fallback] }) self.edges = self.get_edges() self.intersections = edges_to_intersections( self.edges, self.settings["intersection_x_tolerance"], self.settings["intersection_y_tolerance"], ) self.cells = intersections_to_cells( self.intersections ) self.tables = [ Table(self.page, t) for t in cells_to_tables(self.cells) ]
pdfplumber抽取表格主要包含以下几步:
- 因为表格以及单元格都是存在边界的(由可见或不可见的线表示),所以第一步,pdfplumber是找到可见的或猜测出不可见的候选表格线。
- 因为表格以及单元格基本上都是定义在一块举行区域内,所以第二步,pdfplumber是根据候选的表格线确定它们的交点。
- 根据得到的交点,找到它们围成的最小的单元格。
- 把连通的单元格整合到一起,生成一个检测出的表格对象。
- 与其说pdf是一种数据格式,不如说它是一组打印指令的集合,因为pdf文件保存的只是一条条打印指令,这些指令告诉pdf阅读器或打印机该在屏幕或者纸张的什么位置显示什么样的符号。与docx和html等格式的文件不同(docx和html通过标签的方式组织不同的逻辑结构,比如<table>, <w:tbl>, <p>, <w:p>等),pdf文件不包含任何逻辑结构的信息,比如段落、句子、单词、表格等等。在pdf文档中,即便在阅读器中能看到
-
JavaScript生成带有缩进的表格代码
2021-01-19 15:54:21最近做了个用户管理系统,其中有项目需求,要求用js生成带有缩进的表格,真是把我难住了,通过查阅相关资料,才实现此功能,下面小编把实现代码做个笔记,也方便以后查找,同时也希望能与我同样需求的朋友可以做个... -
如何让HTML5的表格支持后台排序与分页
2021-03-04 05:10:44TWaverHTML5发布已有一段时间,使用的客户也是逐渐增加,于是我也迫不及待地申请了一个试用版来写一个小网页,最近正在写到数据查询,表格显示的功能。表格组件在HTML5中是提供的,查看TWaver提供的Demo,表格的使用... -
导出Excel表格
2021-07-17 20:13:52将表格数据导出为Excel表格,其实导出数据并不是很难。我自己在页面上也写了一个导出功能,就和大家一起讲一讲。 点页面上的导出按钮后,页面会发出提示询问是否要导出全部数据,如果不需要全部导出可以根据前面的...导出Excel表格
将表格数据导出为Excel表格,其实导出数据并不是很难。我自己在页面上也写了一个导出功能,就和大家一起讲一讲。
点页面上的导出按钮后,页面会发出提示询问是否要导出全部数据,如果不需要全部导出可以根据前面的复选框来进行筛选需要导出的数据。选择好自己需要导出的数据,点击确定就会把一个带有页面上选择好的数据的Excel表格下载到电脑上。
首先我们需要先写一个导出按钮的样式:
然后接下来就写按钮的方法来,实现这一功能:function exporte() { //获取参数json var searchText = $("#searchText").val(); var strTemp = '&strConditions=' + searchText; layer.confirm('您确定要导出全部商品信息?', { icon: 3, title: "提示" }, function (index) { layer.close(index);//关闭提示框 //新标签页打开下载excel的url,下载excel文件 window.open('/SystemBase/Supplier/ExportSupplierData?' + strTemp.substring(1, strTemp.length)); }); }
再写完控制器的代码就完成了:
public ActionResult ExportSupplierData(string strConditions) { var list = (from tbSupplier in myModel.S_Supplier join tbSupplierType in myModel.S_SupplierType on tbSupplier.supplierTypeID equals tbSupplierType.supplierTypeID join tbDistrict in myModel.D_District on tbSupplier.disID equals tbDistrict.disID join tbSettlementMethod in myModel.S_SettlementMethod on tbSupplier.settlementMethodID equals tbSettlementMethod.settlementMethodID select new SupplierVo { supplierID = tbSupplier.supplierID,//供货商ID supplierTypeID = tbSupplier.supplierTypeID,//供货商类型ID disID = tbSupplier.disID,//地区ID settlementMethodID = tbSupplier.settlementMethodID,//结算方式ID supplierName = tbSupplier.supplierName,//供货商名称 contactPerson = tbSupplier.contactPerson,//联系人 contactNumber = tbSupplier.contactNumber,//联系电话 initialPayable = tbSupplier.initialPayable,//期初应付 location = tbSupplier.location,//联系地址 defaultNo = tbSupplier.defaultNo,//默认供货商否 disabledNo = tbSupplier.disabledNo,//禁用否 annotation = tbSupplier.annotation,//备注 supplierType = tbSupplierType.supplierType,//供货商类型 disName = tbDistrict.disName,//地区 settlementMethod = tbSettlementMethod.settlementMethod,//结算方式 }); if (!string.IsNullOrEmpty(strConditions)) { list = list.Where(o => o.supplierName.Contains(strConditions) || o.contactPerson.Contains(strConditions) || o.contactNumber.Contains(strConditions) || o.supplierType.Contains(strConditions) || o.disName.Contains(strConditions) || o.settlementMethod.Contains(strConditions) || o.location.Contains(strConditions)); } List<SupplierVo> query = list.ToList(); string templatePath = Server.MapPath("~/Document/SupplierDataTemplate.xls"); if (!System.IO.File.Exists(templatePath)) { return Content("导出失败,请联系网站管理员"); } FileStream templateStream = System.IO.File.Open(templatePath, FileMode.Open); NPOI.HSSF.UserModel.HSSFWorkbook excelBookTemplate = new NPOI.HSSF.UserModel.HSSFWorkbook(templateStream); NPOI.SS.UserModel.ISheet sheet = excelBookTemplate.GetSheetAt(0); NPOI.SS.UserModel.ICellStyle style = excelBookTemplate.CreateCellStyle(); NPOI.SS.UserModel.IRow rowTitle = sheet.GetRow(0); rowTitle.GetCell(0).SetCellValue("供货商信息" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); style.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; style.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center; style.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; style.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; style.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; style.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; int index = 2; for (int i = 0; i < query.Count(); i++) { NPOI.SS.UserModel.IRow row = sheet.CreateRow(index); row.CreateCell(0).SetCellValue(i + 1); row.CreateCell(1).SetCellValue(query[i].supplierName.ToString()); row.CreateCell(2).SetCellValue(query[i].supplierType.ToString()); row.CreateCell(3).SetCellValue(query[i].disName.ToString()); row.CreateCell(4).SetCellValue(query[i].contactPerson.ToString()); row.CreateCell(5).SetCellValue(query[i].contactNumber.ToString()); row.CreateCell(6).SetCellValue(query[i].initialPayable.ToString()); row.CreateCell(7).SetCellValue(query[i].settlementMethod.ToString()); row.CreateCell(8).SetCellValue(query[i].location.ToString()); row.CreateCell(9).SetCellValue(query[i].defaultNo == true ? "是" : "否"); row.CreateCell(10).SetCellValue(query[i].disabledNo == true ? "是" : "否"); row.CreateCell(11).SetCellValue(query[i].annotation == null ? "" : query[i].annotation.Trim()); for (int j = 0; j < row.Cells.Count; j++) { row.GetCell(j).CellStyle = style; } index++; } string fileName = "供货商信息" + DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss-ffff") + ".xls"; MemoryStream BookStream = new MemoryStream(); excelBookTemplate.Write(BookStream); BookStream.Seek(0, SeekOrigin.Begin); return File(BookStream, "application/vnd.ms-excel", fileName); }
-
html表格单元格边距_合并单元格怎么弄
2020-10-17 11:43:59竭诚为您提供优质文档 / 双击可除 html, 表格单元格...本质的理解能力立足基础先易后难难易适中强调应 用不偏不怪 达到了 考基础考能力 考素质 的目标 试卷所涉及的知识内容都在考试大纲的范围内几乎覆盖了 高中所学知 -
用C语言画个简单表格
2021-05-19 15:19:19今天见到个题目,就把他做了,题目如下:在图形环境中很容易做出漂亮的表格。但在控制台环境中就比较困难了。有的时候可以用一些符号大略地模拟:(word文档中可能不整齐,拷贝到记事本中看)+-------+------+|abc |...今天见到个题目,就把他做了,题目如下:
在图形环境中很容易做出漂亮的表格。但在控制台环境中就比较困难了。有的时候可以用一些符号大略地模拟:(word文档中可能不整齐,拷贝到记事本中看)
+-------+------+
|abc |xyz=tt|
+-------+------+
|hellomm|t2 |
+-------+------+
本题目要求设计一个程序,把用户输入的内容用这种“准表格”的方式展现出来。具体的要求是:
用户输入的第一行是一个整数,表示接下来有多少行信息。接下来的每行由若干单元组成。单元间用逗号分开。
程序输出:用表格方式重新展现的输入内容。
例如:
用户输入:
3
cat,dog,good-luck
1,2,5
do not use,,that
则程序输出:(word文档中可能不整齐,拷贝到记事本中看)
+----------+---+---------+
|cat |dog|good-luck|
+----------+---+---------+
|1 |2 |5 |
+----------+---+---------+
|do not use| |that |
+----------+---+---------+
从中不难看出:
两个连续的逗号表示中间有一个内容为空的单元
列的数目由最大的单元数的那行决定
列的宽度由同列的最宽的单元决定
单元格中的信息左对齐
可以假设:用户输入的最大行数为30,可能的最多列数为40。
代码如下:
#include#include
char S[100][1000]={
' '};//声明表为全局变量int s1=0;
void chart(int n,int a[],int m);
int main()
{
int n;
int M1[40]={
0},M2[40]={
0},M3[40][100]={
0};
int i,j,k,k1,k2,max=0,col,l;
char s[30][1000];
scanf("%d",&n);
getchar();//注意,必须得有这个来接收回车符
// for(i=0;igets(s[i]);
//求最大列数 for(i=0;i{
l=strlen(s[i]);
for(j=0;j{
if(s[i][j]==',')
M1[i]++;
}
if(M1[i]>max)
{
max=M1[i];
}
}
col=++max;
//求每列最大宽度
//1.先求每个单元的长度,赋给M3[i][j]中 for(i=0;i{
l=strlen(s[i]);
k=0;
for(j=0;j{
if(s[i][j]!=',')
{
M3[i][k]++;
}
if(s[i][j]==',')
k++;
} //for2 }//for1//2.找每列最大的赋予M2[] for(j=0;j {
max=0;
for(i=0;i{
if(M3[i][j]>max)
max=M3[i][j];
}
M2[j]=max;
}
//表格 chart(n,M2,col);
//输入数据 for(i=0;i{
k1=0;
k2=0;
k=0;
l=strlen(s[i]);
for(j=0;j{
S[2*i+1][k2+1]=s[i][j];
if(s[i][j+1]==',')
{
k1=k1+M2[k]+1;
k2=k1;
k++;
j++;
}
else
k2++;
}
}
//输出表格 for(i=0;i<=2*n;i++)
{
for(j=0;jprintf("%c",S[i][j]);
printf("\n");
}
return 0;
}
void chart(int n,int a[],int m)//行数 每列的最大长度数组{
int i,j,k;
int s;
s1=m+1;
for(i=0;is1+=a[i];
for(i=0;i<=2*n;i++)
{
//输出奇数行 if(i%2==0)
{
s=0;
k=0;
for(j=0;j{
if(j==s)
{
S[i][j]='+';
s+=a[k];
s++;
k++;
}
else
S[i][j]='-';
}//for } //if//输出偶数行 else
{
s=0;
k=0;
for(j=0;j{
if(j==s)
{
S[i][j]='|';
s+=a[k];
s++;
k++;
}
}
}
} //for
}
OK!
一个例子如下,O(∩_∩)O~
-
最好用的表格G2各数据表格
2018-02-06 15:20:22这是一个超好用的数据表格, 我找过很多都很难用 。 这个基本上不需要学习 -
基于40万表格数据集TableBank,用MaskRCNN做表格检测
2020-05-25 19:46:00向AI转型的程序员都关注了这个号????????????机器学习AI算法工程 公众号:datayxTableBank:高质量的标注表格数据集虽然人类在视觉上可以很容易地判断出一个表格... -
使用 Python 读取电子表格中的数据实例详解
2021-01-20 01:46:51Python 是最流行、功能最强大的编程语言之一。...但是较长的数据文件或具有更多字段的数据文件可能很难用肉眼解析,因此在这种情况下计算机做得更好。 这是一个简单的示例,其中的字段是 Name、Email 和 -
layui表格checkbox选择全选样式及功能的实例
2021-01-19 16:06:30在之前的版本,默认复选框是要有值得,默认为“勾选”两个字,在表格里用来做选择不适合,很难改,还好layui升级后,可以支持不写name值,来适应表格中的选择操作。 1、layui版本号为 v1.0.9 rls版本(当前最新版本) ... -
Vue实现表格中对数据进行转换、处理的方法
2021-01-21 12:07:10但是在Vue中,如果采用了element等组件,利用数据绑定的特性,也是很难对表格遍历的数据进行单独行的处理的。 我们这边取一个例子来说。比如Mysql datetime 类型的数据与我们一般的显示的形式是不一样的,为了用户更... -
word中的表格如何增加一列 word表格怎么增加一列
2021-07-27 08:12:05要怎样在Word的表格中增加一列Word表格中:将光标定位在表格最后一行右端(表格外)的回车符处,...在WORD里做了一个表格,想在其将word里面的表格增加行或列,可按以下步骤操作:1、在表格下方单击鼠标左键,确定添加... -
兼容浏览器的css网页细线表格设计
2020-09-25 12:28:33细线表格如果单纯设置边框,很难保证浏览器兼容。 -
常用符号-特殊符号-表格.md
2020-02-29 14:26:35包含了很多常用和特殊的符号,比如数字上标、数字下标等一些,比较难找难输入的符号。markdown 文件,表格一行10个 -
Excel-通过VBA程序实现多表格多页批量复制和筛选数据2021-12-27.xlsm
2021-12-28 18:42:29很多人都会遇到,有大量格式雷同的表格需要批量处理,但表格中数据行数或页数不同,通过excel的公式很难实现柔性处理,遇到新的表格又需要重新编辑。针对这个问题,我们用通过简单的VBA程序即可实现多表格多页批量... -
editable.js 基于jquery的表格的编辑插件
2020-10-28 07:58:19经常写程序总会对数据进行编辑、删除功能,虽然不难,代码不多,你是如何重用这个功能的呢 -
超级表格移动版收费,不应该吗?
2018-02-06 15:47:43超级表格移动版开始收费了。然后我在留言区看到这样的留言:我感觉,我对不起你们了…一个企业,花了数百万元研发出产品,让用户使用,为什么要收费。...研发资源不足,很难同时照顾好电脑Web版和手机版。我们 -
表格再也难不到你,教大家13个Python处理Excel表格常用技巧
2018-12-28 20:15:05利润一列存在于df2的表格中,所以想知道df1的每一个订单对应的利润是多少。用excel的话首先确认订单明细号是唯一值,然后在df1新增一列写:=vlookup(a2,df2!a:h,6,0) ,然后往下拉就ok了。(剩下13个我就不写excel啦... -
预算表格:基于Excel的每月支出计划员
2021-02-15 10:48:02它们的设计很难/不可能搞乱,通常包括免费的技术支持。 尽管我试图使此电子表格非常健壮(如果不故意禁用工作表保护功能,就无法得到错误的答案)并且易于满足您的需求,但我无法保证其计算的准确性,可靠性。 ,或...