关于excel:在vue中导出多sheet的方案-二

以前文章文章介绍了如何导出单列的excel本篇文章介绍下多sheet的excel的导出首先给大家看下成果 从上图可知,根底信息的数据格式和其余两个sheet不一样,所以要独自解决 依据现有的数据组装xlsx插件所需数据结构页面数据这里以我罕用数据为例 //根底数据个别是一个一般的对象 let valueObj = { registerNo: '', //洽购单号 statusName: '', //状态 submitDate: '', //提交工夫 //等等 } //第一个表格数据 const tableHeader = tableHeader: [ { title: "物料编码", map: "materialCode", }, { title: "物料类型", map: "materialTypeName", }, { title: "物料名称", map: "materialName", }, { title: "规格型号", map: "materialModel", }, ] const tableData = [ { materialCode: 'a', materialTypeName: 'b', materialName: 'b', materialModel: 'b', }, { materialCode: 'a', materialTypeName: 'b', materialName: 'b', materialModel: 'b', } ] //其余的表格数据同上 组装数据 let data = { title: "洽购单", //文件名称 baseSheetName: "根底信息", baseSheetData: [ { label: "洽购单号", map: "registerNo", value: "", }, { label: "以后状态", map: "registerStatusName", value: "", }, //等等 ], //寄存根底数据 list: [ { sheetName: '汇总', //第一个sheet数据 tableHeader: [ { title: "物料编码", map: "materialCode", }, { title: "物料类型", map: "materialTypeName", }, ], tableData: [ { materialCode: 'a', materialTypeName: 'b', materialName: 'b', materialModel: 'b', }, { materialCode: 'a', materialTypeName: 'b', materialName: 'b', materialModel: 'b', } ] }, { sheetName: '明细', tableHeader: [ //第二个sheet数据 { title: "物料编码", map: "materialCode", }, { title: "物料类型", map: "materialTypeName", }, { title: "物料名称", map: "materialName", }, { title: "规格型号", map: "materialModel", }, { title: "物料阐明", map: "materialIllustrate", }, ], tableData: [ { materialCode: 'a', materialTypeName: 'b', materialName: 'b', materialModel: 'b', }, { materialCode: 'a', materialTypeName: 'b', materialName: 'b', materialModel: 'b', } ] } ], //其余sheet数据 }导出函数封装import * as XLSX from "xlsx/xlsx.mjs"function exportExcel(data) { var wb = XLSX.utils.book_new() //解决根底数据 if (data.baseSheetName) { let baseDataArr = [] data.baseSheetData.map(item => { baseDataArr.push({ [data.title]: item.label, '': item.value }) }) let fdXslxws = XLSX.utils.json_to_sheet(baseDataArr) XLSX.utils.book_append_sheet(wb, fdXslxws, data.baseSheetName) } //解决其余表格数据 data.list.map((item, index) => { let arr = [] let newHeaderObj = {} item.tableHeader.map(item => { newHeaderObj[item.map] = item.title }) item.tableData.map((el, idx) => { let obj = {} for (let x in newHeaderObj) { obj[newHeaderObj[x]] = el[x] } arr.push(obj) }) let fdXslxws = XLSX.utils.json_to_sheet(arr) XLSX.utils.book_append_sheet(wb, fdXslxws, item.sheetName) }) XLSX.writeFile(wb, data.title + ".xlsx")}至此一个简略导出多列sheet的excel性能就实现了。。。 ...

February 29, 2024 · 2 min · jiezi

关于excel:Excelize-开源基础发布-281-版本2024-年首个更新

Excelize 是 Go 语言编写的用于操作电子表格办公文档的开源根底库,基于 ISO/IEC 29500、ECMA-376 国际标准。能够应用它来读取、写入由 Microsoft Excel、WPS、Apache OpenOffice、LibreOffice 等办公软件创立的电子表格文档。反对 XLAM / XLSM / XLSX / XLTM / XLTX 等多种文档格局,高度兼容带有款式、图片(表)、透视表、切片器等简单组件的文档,并提供流式读写反对,用于解决蕴含大规模数据的工作簿。可利用于各类报表平台、云计算、边缘计算等零碎。 开源代码GitHub: github.com/xuri/excelize 文档网站: xuri.me/excelize 2024年2月26日,社区正式公布了 2.8.1 版本,该版本蕴含了多项新增性能、谬误修复和兼容性晋升优化。上面是无关该版本更新内容的摘要,此版本中最显著的变动包含: 兼容性提醒降级至该版本须要您应用的 Go 语言为 1.18 或更高版本,以降级依赖库 golang.org/x/net将数据类型 HeaderFooterOptions 中的字段 AlignWithMargins 和 ScaleWithDoc 批改为指针类型移除了未应用的导出类型 ShapeColor新增性能新增函数 SetCellUint 反对设置无符号整型数新增函数 GetPictureCells 反对获取图片单元格坐标新增函数 GetConditionalStyle 反对获取条件格局款式定义新增函数 GetHeaderFooter 反对获取工作表页眉页脚控制字符设置新增函数 AddSlicer 反对为表格和数据透视表增加切片器新增函数 GetPivotTables 反对获取数据透视表新增函数 DeletePivotTable 反对删除数据透视表数据类型 PivotTableOptions 中增加了新的字段 Name 以反对创立数据透视表时指定自定义数据透视表名称新增 7 项公式函数:DBCS、SEARCH、SEARCHB、TEXT、TEXTAFTER、TEXTBEFORE 和 xlfn.ANCHORARRAY新增 ChartLineType 枚举类型,以反对设置图表区域边框线型数据类型 Chart 中增加了新的字段 Border 以反对设置图表区域边框类型数据类型 ChartLine 中增加了新的字段 Type 以反对设置图表线型新增文档对象关系部件名称与命名空间变量 NameSpaceSpreadSheetXR10、ContentTypeSlicer、ContentTypeSlicerCache 和 SourceRelationshipSlicer新增扩大资源标识常量 ExtURIPivotCacheDefinition容许在自定义名称、表格名称和数据透视表名称中应用点字符删除工作表中的表格时,将保留表格区域全副单元格的值反对读取带有分数数字格局的单元格删除图片时,如果图片仅有一处援用,将同时从工作簿外部删除对应的图片文件,以缩小生成工作簿的体积并打消由此产生的潜在平安危险反对为批注框设置自定义宽度和高度插入或删除行列时,反对更新条件格局、数据验证、自定义名称、图形对象、单元格公式、易失性函数中的单元格坐标援用新增 6 项新增条件格局类型:“特定文本”、“空值”、“无空值”、“谬误”、“无谬误”和“产生日期”公式计算引擎反对计算带有多重负号的单元格公式复制行时反对复制条件格局与数据验证设置行高度函数 SetRowHeight 反对通过指定行高度为 -1 移除自定义行高度设置当给定的行高度有效时,函数 SetRowHeight 将返回谬误提示信息增加图表函数 AddChart 反对设置图表中的数据标签地位增加图表函数 AddChart 反对设置图表区域、绘图区域和数据标记的填充色和通明填充,在 Chart、ChartPlotArea 和 ChartMarker 数据类型中增加了 Fill 选项增加图表函数 AddChart 反对设置图表坐标轴文字字体、字号和删除线格局数据类型 ChartSeries 中新增了 DataLabelPosition 字段,用于指定图表中各数据系列数据标签的地位数据类型 Chart 中新增了 BubbleSize 字段,用于设置气泡图和三维气泡图的气泡大小新增导出数据类型 ChartDataLabelPositionType获取图片单元格函数 GetPictureCells 和获取图片函数 GetPictures 反对读取由 Kingsoft WPS™ Office 创立的嵌入单元格图片设置条件格局函数 SetConditionalFormat 反对批量为多个单元格区域设置条件格局重命名工作表时反对更新自定义名称新增 GetBaseColor 函数,反对读取首选十六进制颜色代码公式计算引擎反对读取日期类型单元格的值单元格值读取函数反对继承应用 OpenReader 函数打开文档时所指定的 Options 选项设置兼容性晋升晋升了对外部带有绝对路径绘图部件工作簿的兼容性晋升了对外部带有浮点型 tabRatio 属性值工作簿部件的兼容性晋升了读取带有空的自定义数字格局单元格的兼容性晋升了与不反对默认主题部件命名空间电子表格预览程序的兼容性晋升了单元格批注形态与 KingSoft WPS™ Office 的兼容性保留工作簿时对外部部件进行排序,以确保在不扭转工作簿内容时生成的文件具备统一的哈希值问题修复增加对公式函数 MID 和 MIDB 中 num_chars 参数的查看,以防止出现正数导致的 panic修复局部状况下,公式函数 LEN、LOWER、PROPER、REPT、UPPER 和 IF 的计算结果为空的问题修复局部状况下,计算公式函数 CHITEST 和 MMULT 时呈现 panic 的问题修复 v2.8.0 中引入的问题,通过创立非凡自定义名称的形式设置打印区域和打印题目时不再返回谬误修复 v2.8.0 中引入的问题,修复了因为外部款式部件中索引色彩和 MRU 色彩缺省值解决有误导致的生成工作簿损坏问题修复 v2.8.0 中引入的问题,修复了特定状况下读取带有数字格局的单元格后果为空的问题修复 v2.7.1 中引入的问题,修复了气泡图和三维气泡图中不显示气泡的问题修复因外部工作表 ID 解决有误导致的特定状况下通过 AutoFilter 函数增加主动过滤器时呈现的 panic修复局部状况下在工作表中增加表格导致的工作表损坏问题修复局部状况下读取带有工夫类型数字格局单元格的值有误的问题反对计算字符型公式单元格的值修复在带有单元格表格的工作簿中增加表格时,表格 ID 生成有误的问题修复局部状况下工作簿内容关系部件失落的问题降级数字格局表达式解析器,以修复对于带有自定义文本的数字格局表达式格式化后果有误问题更新了简体中文和繁体中文语言的预设数字格局列表修复了局部状况下,自定义数字格局索引生成有误的问题修复通过删除后再增加表格形式更新表格区域范畴时呈现谬误的问题修复在应用流式读取函数后,所产生的临时文件无奈被清理的潜在问题修复局部状况下公式计算结果有误的问题修复并发读取单元格的值时呈现的竞态问题修复依据款式索引获取款式定义时,局部款式定义缺失问题修复局部状况下读取带有迷信记数法数字格局单元格的值后果有误的问题修复局部状况下,读取带有工作表中不含 r 属性的行元素导致的 panic 问题修复获取富文本单元格函数 GetCellRichText 在获取内联富文本时返回谬误的问题修复局部状况下,因为共享字符串表索引计算有误导致的设置单元格的值后果有误问题修复函数 GetConditionalFormats 读取带有“高于平均值”条件格局规定时 panic 的问题修复了删除行之后合并单元格有误的问题修复了 SetConditionalFormat 函数在创立带有多规定条件格局时,规定优先级有误的问题修复了 GetConditionalFormats 函数无奈读取带有突变填充格局数据条的问题修复了获取款式函数 GetStyle 或获取条件格局款式函数 GetConditionalStyle 所返回的小数位数 DecimalPlaces 字段值有误问题修复了应用 CalcCellValue 函数时,开启 RawCellValue 选项生效的问题性能优化进步了增加与删除数据透视表和图片的性能升高了修剪单元格时的内存占用其余Go Modules 依赖模块更新单元测试与文档更新蕴含简体中文、繁体中文、英语、法语、俄语、日语、韩语、阿拉伯语、德语和西班牙语的多国语言文档网站更新,新增葡萄牙语版本文档致谢感激 Excelize 的所有贡献者,以下是为此版本提交代码的贡献者列表: ...

February 26, 2024 · 2 min · jiezi

关于excel:excel-实现甘特图

应用excel,实现项目管理甘特图 演示 操作设置根本信息填入需要及对应工期抉择需要,跟进人,启动日期,将主动生成甘特图波及的VB代码Public Function GetArrayLength(arr As Variant) As Integer If IsEmpty(arr) Then GetArrayLength = 0 Else GetArrayLength = UBound(arr) - LBound(arr) + 1 End IfEnd FunctionPublic Function IsNull(val As Variant) As Boolean Dim result If val = "" Then result = True ElseIf IsEmpty(val) Then result = True Else result = False End If IsNull = resultEnd FunctionPublic Function IsWeekend(InputDate As Variant) As Boolean temp = CDate(InputDate) Select Case Weekday(temp) Case vbSaturday, vbSunday IsWeekend = True Case Else IsWeekend = False End SelectEnd FunctionPublic Function GetExceptCollection(r1 As range, r2 As range, Optional offset$ = 0) As Variant Dim arr1, arr2, arr3(), i&, row row = Application.ThisCell.row - offset arr1 = Application.Transpose(r1) arr2 = Application.Transpose(r2) Dim dict As Object Set dict = CreateObject("scripting.dictionary") For Each a In arr2 If Not IsNull(a) Then dict(a) = 1 End If Next ReDim arr3(GetArrayLength(arr1)) For Each a In arr1 If Not IsNull(a) And Not dict.exists(a) Then i = i + 1 arr3(i) = a End If Next If Not IsNull(arr3(row)) Then GetExceptCollection = arr3(row) Else GetExceptCollection = "" End IfEnd FunctionPublic Function GetEndDateByDuration(startDateV As Variant, durationI As Integer, holidaysR As range, workdaysR As range) As Date If IsNull(startDateV) Then GetEndDateByDuration = "" End If startDateD = CDate(startDateV) If Not IsDate(startDateD) Then GetEndDateByDuration = "" End If Dim holidaysA, workdaysA, holidaysD As Object, workdaysD As Object holidaysA = Application.Transpose(holidaysR) workdaysA = Application.Transpose(workdaysR) Set holidaysD = CreateObject("scripting.dictionary") For Each a In holidaysA temp = CDate(a) If Not IsNull(temp) Then holidaysD(temp) = 1 End If Next Set workdaysD = CreateObject("scripting.dictionary") For Each a In workdaysA temp = CDate(a) If Not IsNull(temp) Then workdaysD(temp) = 1 End If Next Dim actualDurationI As Integer, index As Integer Do While index < durationI temp = startDateD + actualDurationI If workdaysD.exists(temp) Then index = index + 1 ElseIf holidaysD.exists(temp) Then ElseIf IsWeekend(temp) Then Else index = index + 1 End If actualDurationI = actualDurationI + 1 Loop GetEndDateByDuration = startDateD + actualDurationI - 1 End FunctionExcel文件https://github.com/chencaize/fileRepo/blob/main/%E7%94%98%E7%89%B9%E5%9B%BE.xlsm ...

August 29, 2023 · 2 min · jiezi

关于excel:聊聊Excel解析如何处理百万行EXCEL文件-京东云技术团队

一、引言Excel表格在后盾管理系统中应用十分宽泛,多用来进行批量配置、数据导出工作。在日常开发中,咱们也免不了进行Excel数据处理。 那么,如何失当地解决数据量宏大的Excel文件,防止内存溢出问题?本文将比照剖析业界支流的Excel解析技术,并给出解决方案。 如果这是您第一次接触Excel解析,建议您从第二章理解本文根底概念;如果您曾经对POI有所理解,请跳转第三章浏览本文重点内容。 二、根底篇-POI说到Excel读写,就离不开这个圈子的的老大哥——POI。 Apache POI是一款Apache软件基金会用Java编写的收费开源的跨平台的 Java API,全称Poor Obfuscation Implementation,“简洁版的含糊实现”。它反对咱们用Java语言和包含Word、Excel、PowerPoint、Visio在内的所有Microsoft Office文档交互,进行数据读写和批改操作。 (1)“蹩脚”的电子表格在POI中,每种文档都有一个与之对应的文档格局,如97-2003版本的Excel文件(.xls),文档格局为HSSF——Horrible SpreadSheet Format,意为“蹩脚的电子表格格局”。尽管Apache风趣而虚心地将本人的API冠以“蹩脚”之名,不过这的确是一款全面而弱小的API。 以下是局部“蹩脚”的POI文档格局,包含Excel、Word等: Office文档对应POI格局Excel (.xls)HSSF (Horrible SpreadSheet Format)Word (.doc)HWPF (Horrible Word Processor Format)Visio (.vsd)HDGF (Horrible DiaGram Format)PowerPoint(.ppt)HSLF(Horrible Slide Layout Format)(2)OOXML简介微软在Office 2007版本推出了基于XML的技术规范:Office Open XML,简称OOXML。不同于老版本的二进制存储,在新标准下,所有Office文档都应用了XML格局书写,并应用ZIP格局进行压缩存储,大大晋升了规范性,也进步了压缩率,放大了文件体积,同时反对向后兼容。简略来说,OOXML定义了如何用一系列的XML文件来示意Office文档。 Xlsx文件的实质是XML让咱们看看一个采纳OOML规范的Xlsx文件的形成。咱们右键点击一个Xlsx文件,能够发现它能够被ZIP解压工具解压(或间接批改扩大名为.zip后解压),这阐明:Xlsx文件是用ZIP格局压缩的。解压后,能够看到如下目录格局: 关上其中的“/xl”目录,这是这个Excel的次要构造信息: 其中workbook.xml存储了整个Excel工作簿的构造,蕴含了几张sheet表单,而每张表单构造存储在/wooksheets文件夹中。styles.xml寄存单元格的格局信息,/theme文件夹寄存一些预约义的字体、色彩等数据。为了缩小压缩体积,表单中所有的字符数据被对立寄存在sharedStrings.xml中。通过剖析不难发现,Xlsx文件的主体数据都以XML格局书写。 XSSF格局为了反对新规范的Office文档,POI也推出了一套兼容OOXML规范的API,称作poi-ooxml。如Excel 2007文件(.xlsx)对应的POI文档格局为XSSF(XML SpreadSheet Format)。 以下是局部OOXML文档格局: Office文档对应POI格局Excel (.xlsx)XSSF (XML SpreadSheet Format)Word (.docx)XWPF (XML Word Processor Format)Visio (.vsdx)XDGF (XML DiaGram Format)PowerPoint (.pptx)XSLF (XML Slide Layout Format)(3)UserModel在POI中为咱们提供了两种解析Excel的模型,UserModel(用户模型)和EventModel(事件模型) 。两种解析模式都能够解决Excel文件,但解析形式、解决效率、内存占用量都不尽相同。最简略和实用的当属UserModel。 UserModel & DOM解析用户模型定义了如下接口: ...

July 3, 2023 · 5 min · jiezi

关于excel:Excel表格中出现E怎么办

置信很多人在应用Excel的时候都遇到过单元格变成###的状况,这是因为单元格列宽不够造成的,只须要减少列宽就能够失常显示。如果你在应用Excel的过程中遇到过呈现"E+"这种状况,此时不要惊恐,这是Excel主动对很大或很小的数字进行迷信计数法转换的后果,快来追随小编一起学习一下如何设置能够无效防止这种状况的产生吧! 小编在单元格中输出的数字是12345678910,此时输出的数字共计11位,能够看到单元格中呈现了E+格局,如下图: 这种状况下咱们能够通过减少列宽让数值失常显示,如下图: 小编在单元格中输出的数字是123456789101,此时输出的数字共计12位时,就会发现通过调整列宽的办法不能用了。 不要焦急,这是因为Excel零碎默认单元格中可能显示的最大数值为11位数,以下就是这种状况的解决办法: 咱们须要把输出的数值转成文本格式,扭转它的属性,这样无论你输出多少数字都是失常显示的。 1、点击须要扭转格局的单元格,右键抉择【设置单元格格局】,如图: 2、在【数字】中抉择【文本】,点击【确定】 3、此时就能够看到本人输出的数字残缺显示进去了。 在Excel中遇到数据被转换成迷信计数法的问题并不麻烦,只须要依照以上步骤更改单元格格局即可将其解决,心愿这些办法可能帮忙您更好地解决Excel表格中呈现E+的状况。欢送喜爱的敌人多多关注小编,为您带来更多Mac软件及教程。

June 15, 2023 · 1 min · jiezi

关于excel:使用phpofficephpspreadsheet实现加载excel模板生成excel

一:phpoffice/phpspreadsheet拓展装置composer require phpoffice/phpspreadsheet二:实现加载excel模板生成excel文件$spreadsheet = IOFactory::load('模板.xlsx');其余办法参考:php 应用phpoffice/phpspreadsheet拓展操作excel

April 27, 2023 · 1 min · jiezi

关于excel:电子表格软件与一站式BI的区别

看完本节内容,置信您可能理解到电子表格软件(代号电子表格软件)与「一站式 BI」的次要区别。所谓一站式BI在官网上的名称就是Smartbi V10.5,代号就是Smartbi始终在应用insight。 这两个产品都属于商业智能BI软件的品类,都是本地化部署,只是格调不同,就好比汽车行业的燃油车和新能源的区别,前者经久耐用,后者智能全面,用户能够依据本人的状况进行抉择。强调的是,如果估算不多,最好抉择前者,因为只有电子表格软件能够依照“订阅”形式洽购!  从Smartbi性能图谱看区别顾名思义,一站式BI的产品定位是“全面”,偏重的是现代化BI方面的“全面”,在报表性能上出于国产化趋势的思考更多偏向于Web电子表格,而不是基于Office的插件。下图是形容一站式BI的全功能图谱,电子表格软件与其重合的性能标注进去了。  对于一站式BI的介绍,可参见官网介绍,绝对于电子表格软件,其领有丰盛的内容资源,这里不再赘述。两者在性能上的差别Smartbi 电子表格软件尽管只是一站式BI中的局部性能,但曾经是具备齐备能力的BI报表工具,其最显著的个性就是利用了数据集和Office能力,而这两个个性在一站式BI中会逐渐淡化,被数据模型和Web电子表格所代替。对于还可能应用Windows的用户来说,电子表格软件就是多年来帮忙Smartbi建功立业的主打报表产品,这个报表性能曾经成为数千家企业用户的抉择。电子表格软件  与一站式 BI 的次要性能差别见下表:  从安装包的大小和复杂度上,两者也不再同一等级,电子表格软件只有1.13GB,而一站式BI达到2.81GB,启动后一站式BI对内存的需求量是电子表格软件的几倍。两者的非功能性差别电子表格软件 与一站式 BI 在产品定位、营销形式、价格与服务等方面也有很显示的差异,具体差别见下表:  如果你还想更具体的理解其差别,请与产品技术支持分割! 如果您对Smartbi电子表格软件感兴趣的话,能够点击链接收费申请试用:https://member.smartbi.com.cn/index/index/customerindex/form_...

April 18, 2023 · 1 min · jiezi

关于excel:电子表格软件能解决什么问题

在当下的时代,寰球经济十分沉闷,对于企业来说,经营的成绩须要“用数字谈话”——以数字来反映经营治理的的情况,这些都离不开报表,能够说报表的需要是无处不在的。 在企业所有的科技类我的项目中报表是最根本的性能。作为报表工程师、数据分析师、软件集成商或者作为企业外部的IT管理人员,如果你在施行一个企业报表我的项目、数据分析我的项目,做报表可能就是你的次要工作;如果你在施行一个ERP、CRM、OA等企业治理类我的项目,我的项目结项的要害很可能就是报表。  所以,对于企业来讲,大家都离不开报表。那什么是报表呢?通常有广义和狭义两种解读。 广义的报表通常指的是中国式报表。中国式报表是简单报表的代名词,它反映了具备特地列表头或行表头以及在行列交叉处实现自定义计算的报表。中国式报表的几个典型特色是格局简单、信息量大、表头乱。除此之外,中国式报表个别都是多数据源的,数据须要进行整合,还须要进行各种计算,有跨行式计算的,有无任何其余关系计算的,有统计汇总的,有统计数量的等等。 狭义的报表是一种通过表格、图表等模式来动态显示数据,并为使用者提供浏览、打印、导出和剖析性能的工具。报表的作用在于出现数字,数字出现的作用在于展现现状,明确与指标的差距,进而用于后续改善计划及行动计划的指南。狭义的报表当初更靠近蕴含了报表能力的数据分析与可视化的 BI(商业智能)。  在挪动互联的5G时代,手机上看报表也是必不可少的: Smartbi 电子表格软件是一款基于Excel/WPS进行报表开发的企业报表工具。它以“真Excel”为特色,将Excel及WPS表格作为报表设计器,灵便便捷地实现数据筹备、数据填报、报表开发、数据分析、公布分享等性能,不仅能全面满足各类中国式简单报表需要,还能极大水平升高开发门槛,显著进步报表开发和治理的效率! 同类的报表软件还有润乾、帆软,这3个产品在报表市场上是最相近的,也是多年的竞争对手,差异上只是电子表格软件采纳了Excel做报表设计器。 如果您是软件公司、修建企业的项目经理,将帮忙您超脱于 ERP、OA 等业务中,款式简略、性能无限的报表模块,充沛实现业务用户多变的报表需要。 如果您是零碎集成商、又或者是酒店行业的开发人员,将帮忙您疾速实现报表开发,及时实现高质量的报表设计,轻松实现报表与业务零碎的集成。 如果您是应用类 Excel 报表软件的 IT 公司与外贸企业的报表工程师,将帮忙您取得在原生 Excel/WPS 上间接开发报表的能力,无需额定学习即可马上实现。 如果您还在应用 Excel 来收集数据与设计报表,将帮忙您达成数据的标准采集,同时完满解决 Excel 在性能、平安、分享等方面存在的各种问题,无效提高效率。 古人云“工欲善其事、必先利其器”,报表软件与各种办公、通信工具一样,心愿升高客户在数据筹备、报表出现上破费的工夫。 如果您对Smartbi电子表格软件感兴趣的话,能够点击链接收费申请试用:https://member.smartbi.com.cn/index/index/customerindex/form_...

April 18, 2023 · 1 min · jiezi

关于excel:如何通过编程的方式获取工作表数量

“获取工作表数量”是一种 Excel 文件解决性能,用于确定指定 Excel 文件所蕴含的工作表数量。在读取或解决大量 Excel 文件时,理解文件中工作表的数量对于正确处理数据至关重要。此信息还可用于确定指标工作表名称或编号。该性能通常能够通过编程形式实现。上面我将分享如何应用 Java Excel 组件Free Spire.XLS for Java来获取工作表数量。 程序环境在进行操作之前,请先将jar导入到Java程序中,请参考以下两种导入办法:办法一:如果您应用的是 maven,能够通过增加以下代码到我的项目的 pom.xml 文件中,将 jar文件导入到应用程序中。 <repositories> <repository> <id>com.e-iceblue</id> <name>e-iceblue</name> <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url> </repository></repositories><dependencies> <dependency> <groupId>e-iceblue</groupId> <artifactId>spire.xls.free</artifactId> <version>5.1.0</version> </dependency></dependencies>办法二:如果您没有应用 maven,则能够从此链接下载Free Spire.XLS for Java,找到lib文件夹下的Spire.XLS.jar并进行解压;而后在IDEA中创立一个新我的项目,顺次点击“文件”(File),“我的项目构造”(Project Structure),“组件”(Modules),“依赖项”(Dependencies),再点击右方绿色“+”下的第一个选项“jar文件或门路”(JARs or Directories),找到解压后的Spire.XLS.jar 文件,点击确认,将其导入到我的项目中。 具体步骤和代码创立Workbook实例。应用 Workbook.loadFromFile()办法加载示例文档。应用 Workbook.getWorksheets()办法获取工作表汇合,并应用 getCount()办法获取汇合中的工作表数。import com.spire.xls.Workbook;public class CountNumberOfWorsheets { public static void main(String[] args) { //创立Workbook实例 Workbook workbook = new Workbook(); //加载示例文档 workbook.loadFromFile("sample.xlsx"); //获取工作表数量 int sheetCount=workbook.getWorksheets().getCount(); //输入后果 System.out.println("The number of sheets is "+sheetCount); }} ...

March 17, 2023 · 1 min · jiezi

关于excel:前端js实现带样式的excelxlsx文件预览vue组件

都2023年了,怎么文件预览还这么难! 发现了问题之后,就想着能不能实现一个简略的VUE组件库,可能解决以上问题,让老手前端,可能十分高效的实现文件预览工作。 于是,我冀望开发一个vue-office组件库,它必须满足以下3个要求 应用肯定要简略,对老手要敌对,即传递一个文件地址,就可实现预览提供多种文件的一站式预览解决方案,解决常见的docx、excel、pdf三种文件的预览预览成果也好,不只是对内容预览,也要反对款式要求明确了,实现就绝对简略了,从github上筛选每个文档最优的预览计划,而后封装成VUE组件,然而坑还是十分多的,文章最初一部分介绍。 应用查看demo演示 github源码 装置有三个组件,能够别离依据须要进行装置 //docx文档预览组件npm install @vue-office/docx//excel文档预览组件npm install @vue-office/excel//pdf文档预览组件npm install @vue-office/pdf复制代码应用示例docx文档的预览<template> <vue-office-docx :src="docx" @rendered="rendered"/></template><script>//引入VueOfficeDocx组件import VueOfficeDocx from '@vue-office/docx'export default { components:{ VueOfficeDocx }, data(){ return { docx: 'http://static.shanhuxueyuan.com/test6.docx' //设置文档地址 } }, methods:{ rendered(){ console.log("渲染实现") } }}</script>复制代码excel文档预览<template> <vue-office-excel :src="excel" @rendered="rendered"/></template><script>//引入VueOfficeExcel组件import VueOfficeExcel from '@vue-office/excel'//引入相干款式import '@vue-office/excel/lib/index.css'export default { components:{ VueOfficeExcel }, data(){ return { excel: 'http://static.shanhuxueyuan.com/demo/excel.xlsx'//设置文档地址 } }, methods:{ rendered(){ console.log("渲染实现") } }}</script>复制代码pdf文档预览<template> <vue-office-pdf :src="pdf" @rendered="rendered"/></template><script>//引入VueOfficePdf组件import VueOfficePdf from '@vue-office/pdf'export default { components:{ VueOfficePdf }, data(){ return { pdf: 'http://static.shanhuxueyuan.com/test.pdf' //设置文档地址 } }, methods:{ rendered(){ console.log("渲染实现") } }}</script>复制代码整个应用形式非常简单,基本上给定文档的src地址,或者是上传文件的ArrayBuffer、Blob格局数据就可实现预览,具体办法见github中的介绍。 ...

February 17, 2023 · 1 min · jiezi

关于excel:使用-Excel-cdata-addin-连接-SAP-ABAP-系统时遇到错误消息

谬误音讯: Detail: NilHSBufInit: already initializedRFC_COMMUNICATION_FAILURE cdata 选项,没有填写 SAProuter 的中央,大略是哪里的问题? 笔者在 AG3 做 CRM 开发时,并没有手动保护 saprouter 的地址,如下图所示: 从蓝色高亮的 cdata 连贯保护界面里的 Connection Type 指定为 Netweaver 来看,依据 cdata 官网帮忙文档,这是默认值: Use NETWEAVER to indicate you are using the sapnwrfc.dll.应用 sapnwrfc.dll 提供的性能进行连贯。 试着点击 Advanced 看外面是否有容许保护 saprouter 信息的中央。 附录SAProuter 是一种软件应用程序,可在咱们的客户网络和 SAP 之间提供近程连贯。 SAProuter 可用于: 进步网络安全性,例如通过应用明码或仅容许来自已知起源的加密连贯管制和记录与 SAP 零碎的连贯当波及的程序因为网络配置而无奈互相通信时,设置间接连贯与广域网 (WAN) 通信时,通过缩小局域网 (LAN) 内的 SAP 零碎工作负载来进步性能和稳定性SAProuter 可与传统 SAP 产品以及剖析解决方案和收买一起应用。 无关哪些 SAP Business Analytics 产品受害于 SAProuter 连贯的残缺列表,请参阅 SAP Note 1478974。 ...

January 16, 2023 · 1 min · jiezi

关于excel:如何快速删除CSVExcelMarkdown表格的重复行

如果你正在应用 CSV、Excel 或 Markdown 表格,你可能会遇到反复行的问题。这可能是因为你手动输出了反复的数据,或者是因为你从其余源导入了反复的数据。无论起因是什么,删除反复行是一项重要的数据清理工作。本文将向你展现如何应用几种不同的办法来疾速删除 CSV、Excel 和 Markdown 表格中的反复行。 1. 在线表格工具【举荐】你能够应用一个名为 “Table Convert” 的 在线工具来删除反复行。这个工具能够帮忙你轻松地检查和删除 CSV、Excel、Markdown 表格中的反复行。只须要在浏览器关上 https://tableconvert.com/exce...,而后在数据源粘贴或上传要去重的内容,并点击 Table Editor 的 “Deduplicate” 按钮就能够轻松、疾速的实现去重,如图所示: 2.在 Excel 中删除反复行在 Excel 中删除反复行是一件非常简单的事。首先,关上你的 Excel 文件,而后抉择要查看反复行的列。接下来,点击“数据”菜单,抉择“删除反复项”。Excel 会弹出一个对话框,让你抉择要删除反复行的列。点击“确定”,Excel 就会删除所有反复行。 3.用 Python 删除 CSV 反复行如果你的数据存储在 CSV 文件中,你能够应用 Python 来删除反复行。首先,你须要装置 pandas 库。而后,应用以下代码来读取 CSV 文件并删除反复行: import pandas as pddata = pd.read_csv("your_file.csv")data = data.drop_duplicates()data.to_csv("your_file.csv", index=False)这段代码会读取 CSV 文件,删除反复行,并将清理后的数据写回到原文件中。 总结:删除 CSV、Excel 和 Markdown 表格中的反复行是一项重要的数据清理工作。通过应用上述办法,你能够轻松地查看并删除这些文件中的反复行,并确保你的数据是精确和有用的。

January 16, 2023 · 1 min · jiezi

关于excel:传播问卷调查数据不够自己生成假数据

问卷调查 Excel 款式 <button name="button" style="color: black">原文件下载</button> 生成代码序号间接 range 生成即可。 提交答卷工夫import timetime_str = time.strftime('%Y/%m/%d %H:%M:%S', time.localtime(time.time())) # 打印按指定格局排版的工夫print(time_str)所用工夫import randomprint(str(random.randint(80, 600)) + "秒")起源间接微信即可 起源详情间接 N/A 来自 IPfrom faker import Fakerfaker = Faker("zh-CN")template = "{ipv4}({province}-{city_name})"for i in range(100): r = template.format(ipv4=faker.ipv4(), province=faker.province(), city_name=faker.city_name()) print(r)Excel 头部生成间接选中 Excel 头部: 复制出如下: 1、您的性别: 2、您的年龄: 3、您的受教育水平: 4、您的工作是: 5、您是否是少数民族: 6、您的家庭是否有宗教信仰: 7、您试着理解过素食或尝试过素食: 8、(书籍、报纸、期刊) 8、(社交、互联网媒体) 8、(播送、电视) 8、(亲朋好友介绍) 9、平时您的素食类型: 10、您认为素食能够提供给身材足够的养分吗? 11、如果路过一家素食店,您会去品味吗? 12、您会成为一个素食主义者吗? 13、您认为素食主义者比那些非素食主义者更衰弱吗? 14、为了环保和衰弱,须要每周安顿一天吃素食,你是否能做到? 15、您感觉吃素对放弃衰弱和幸福有多重要? 16、您感觉吃素对升高碳排放、保护环境有多重要? 17、您对喝牛奶能补钙怎么看? 18、您是否认为肉类产品能够补充人体所需的大多数蛋白质成分 19、您认为女性在怀孕期间是否能够保持吃素吗? 20、您认为低脂纯素的饮食习惯是慢性疾病的终结者吗? 21、您有吃保健食品吗? 22、(预防疾病、促成衰弱) 22、(减肥塑身) 22、(进步静止或静止体现) 22、(加强免疫性能) 22、(进步记忆力或注意力) 22、(保护环境,爱护生灵) 22、(宗教信仰的影响) 22、(跟风随众) 22、(其余) 23、(家人敌人不了解、不认可或拥护) 23、(每天不晓得吃什么) 23、(外出就餐找不到适合的餐厅) 23、(超市和市场里可抉择食材太少) 23、(不懂得如何进行养分搭配) 23、(不晓得如何烹饪) 23、(聚餐时比拟难堪,因为其他人吃肉) 23、(单位食堂或外卖很难找到适合的饭菜) 24、(家人敌人的认可和了解) 24、(把握更多烹饪技巧,让食物变得美味和丰盛) 24、(须要学习更多营养学及中西医常识) 24、(能买到更多素食专属产品) 24、(其余) 总分改写成 Python 字符串并生成指标数据: ...

August 22, 2022 · 8 min · jiezi

关于excel:基于-xlsxstyle-的前端合并单元格复杂表头导出

我的项目性能任意层级合并单元格简单表头导出 表头与数据项间接映射,无需保护 Excel 索引项匹配关系 主动计算、生成表头合并单元格配置信息 在线示例步骤零:如需疾速测试,可点击顶部的示例按钮,可疾速填充各层级合并单元格 Excel 测试数据 步骤一:输出测试数据源,即从后端获取的数据数组。步骤二:输出「Excel 表头构造字符串」与「指标数据结构 key」之间的映射关系数组 "key" 为 Excel 表头,每一列的所处层级关系。如「根底信息.年龄」对应的就是 Excel 表在第二列中的关系,第一级是「根底信息」,第二级是「年龄」 "value" 为数据源数据结构的层级关系。「baseInfo.age」的意思是,将数据源中 baseInfo.age 这个属性的值,设置到 Excel 表的第二列中。 【特地留神一】数组的程序,即为 Excel 表头的程序。第 N - 1 索引项的配置,即为 Excel 中第 N 列的菜单配置 【特地留神二】Excel 表的层级映射关系与指标对象的层级映射关系,没有强制束缚和要求。如Excel 中的 "手机号",只有一层构造,但齐全能够转化为指标对象中的 "contact.phone" 二级构造。反之亦然。 步骤三:点击「导出 Excel」按钮,即可实现数据 Excel 文件导出。解析后的页面介绍 左侧区域为数据源转化为 Excel 数据后,每个单元格的数据。包含顶部表头数据,及具体数据行。右侧区域为 Excel 表头数据的合并单元格配置项。利用该配置数据,能够通过「xlsx-style」库实现对表头的单元格合并。具体函数应用形式示例遵循起码常识准则,我的项目中的 core.js 文件,即为转换函数所在文件。外面一共不到 200 行代码。能够间接粘贴复制到所需我的项目外面。 示例间接应用的 script 文件整体引入的形式。所以迁徙到基于 npm 的我的项目中时,须要将 core.js 中的 ‘Window.XLS.write’ 全局变量应用形式,改为通过 import { write } from 'xlsx' 的应用形式。如果本我的项目的确有帮忙到小伙伴,小伙伴有需要的话,能够在 github 中提 issues,有需要的话,将补充基于 npm 的版本,以及带上 ts 类型束缚的版本。全副外围源码/** * 将数据源,转化为 Excel 单元格数据,并生成 Excel 表头 * @param dataList 数据源 * @param textKeyMaps // Excel 中文表头层级与数据源英文层级间的映射表 * @param headerFirstRow // 表头首行所在行,为了兼容表格顶部还插入有其余 Excel 行的状况,即表格不在首行 * @returns { headerMerges, // 表头合并单元格配置项 cells, // 表头及数据项的 Excel 单元格数组 } */function transformDataToSheetCells(dataList, textKeyMaps, headerFirstRow = 0) { // 获取从 textKeyMaps 解析,拆分后的,中英文 keys 数组 function getKeysList(textKeyMaps) { const chineseKeysList = [] const englishKeysList = [] textKeyMaps.forEach(textKeyMap => { const keyStr = Object.values(textKeyMap)[0] const textStr = Object.keys(textKeyMap)[0] englishKeysList.push(keyStr.split('.')) chineseKeysList.push(textStr.split('.')) }) return { englishKeysList, chineseKeysList } } // 获取表头行数 function getHeaderRowNum(chineseKeysList) { let maxLevel = 1 chineseKeysList.forEach(chineseKeys => { maxLevel = Math.max(chineseKeys.length, maxLevel) }) return maxLevel } // 获取表头行 cell 数据 function getHeaderRows(headerRowNum, chineseKeysList) { const headerRows = [] // 初始化,全副设置为 '' for (let rowIndex = 0; rowIndex < headerRowNum; rowIndex++) { const row = new Array(chineseKeysList.length).fill('') headerRows.push(row) } // 将表头 cell 设置为对应的中文 chineseKeysList.forEach((chineseKeys, colIndex) => { for (let rowIndex = 0; rowIndex < chineseKeys.length; rowIndex++) { headerRows[rowIndex][colIndex] = chineseKeys[rowIndex] } }) // 去除须要合并单元格的每一列中。反复的 cell 数据,反复的,则设置为 '' headerRows.forEach(headerRow => { let lastColValue = '' headerRow.forEach((cell, colIndex) => { if (lastColValue !== cell) { lastColValue = cell } else { headerRow[colIndex] = '' } }) }) return headerRows } // 获取合并单元格配置 function getMerges(headerRowNum, chineseKeysList) { const merges = [] // 竖向合并 chineseKeysList.forEach((chineseKeys, colIndex) => { // 当前列,每一行都有数据,这无须要竖向合并 if (chineseKeys.length === headerRowNum) { return } // 否则。存在数据须要竖向合并,竖向合并的行数,即为比最高行数少的行数 merges.push({ s: { r: chineseKeys.length - 1 + headerFirstRow, c: colIndex, }, e: { r: headerRowNum - 1 + headerFirstRow, c: colIndex, } }) }) // 横向合并 for (let rowIndex = 0; rowIndex < headerRowNum; rowIndex++) { const rowCells = chineseKeysList.map(chineseKeys => chineseKeys[rowIndex]) let preCell = '' // 前一个单元格 let merge = null // 以后合并配置项 rowCells.forEach((cell, colIndex) => { if (preCell === cell) { // 如果二者雷同,则证实须要横向合并单元格 if (!merge) { // merge 不存在,则创立, merge = { s: { r: rowIndex + headerFirstRow, c: colIndex - 1 }, e: { r: rowIndex + headerFirstRow, c: colIndex } } merges.push(merge) // 增加一个合并对象 } else { merge.e.c = colIndex // 批改其合并完结列 } } else { preCell = cell merge = null } }) } return merges } // 获取转化数据结构为 Excel 数据行 function getDataRows(dataList) { const dataRows = [] dataList.forEach(dataItem => { const cells = [] englishKeysList.forEach(keyLevel => { const value = keyLevel.reduce((dataItem, key) => dataItem[key] || '', dataItem).toString() cells.push(value) }) dataRows.push(cells) }) return dataRows } const { englishKeysList, chineseKeysList } = getKeysList(textKeyMaps) const headerRowNum = getHeaderRowNum(chineseKeysList) const headerMerges = getMerges(headerRowNum, chineseKeysList) const headerRows = getHeaderRows(headerRowNum, chineseKeysList) const dataRows = getDataRows(dataList) return { headerMerges, cells: [...headerRows, ...dataRows], }}/** * 导出为携带款式的 xlsx 文件 * @param {*} param * @param param.filename 导出的文件名 * @param param.worksheet 导出的 sheet 数据 */function toStyleXlsx({ filename, worksheet }) { const workbook = { SheetNames: [filename], Sheets: { [filename]: worksheet, }, } // writeFile(workbook, filename, { bookType: 'xlsx' }) let wopts = { bookType: 'xlsx', bookSST: false, type: 'binary' } let wbout = window.XLS.write(workbook, wopts) // 应用xlsx-style 写入 function s2ab(s) { let buf = new ArrayBuffer(s.length) let view = new Uint8Array(buf) for (let i = 0; i !== s.length; ++i) { // eslint-disable-next-line no-bitwise view[i] = s.charCodeAt(i) & 0xFF } return buf } saveAs(new Blob([s2ab(wbout)], { type: '' }), filename)}这里还有 Excel 合并单元格简单表头导入解析示例 ...

August 19, 2022 · 3 min · jiezi

关于excel:基于-SheetJS-的前端合并单元格复杂表头导入

我的项目性能任意层级合并单元格简单表头解析主动转化为指标层级的数据结构主动生成基于 antdv 的 table 列配置数据 columns 及对于数据源 dataSource。在页面端复现 Excel 成果。在线测试示例步骤零:如需疾速测试,可点击顶部的示例按钮,可疾速填充测试数据,并主动下载对应的 Excel 文件,点击上传 Excel 文件即可复现整个应用流程步骤一:输出「Excel 表头构造字符串」与「指标数据结构 key」之间的映射关系 "key" 为 Excel 表头,每一列的所处层级关系。如「根底信息.年龄」对应的就是 Excel 表在第二列中的关系,第一级是「根底信息」,第二级是「年龄」"value" 为须要转换的指标数据结构的层级关系。「baseInfo.age」的意思是,将 Excel 表第二行的数据,转化为指标对象中.baseInfo.age 这个属性。【特地留神一】"key":"value" 的映射关系,没有程序的要求,无须要按 Excel 表的每一列的数据进行排序。【特地留神二】Excel 表的层级映射关系与指标对象的层级映射关系,没有强制束缚和要求。如Excel 中的 "手机号",只有一层构造,但齐全能够转化为指标对象中的 "contact.phone" 二级构造。反之亦然。步骤二:点击右侧,上传对应的 Excel 文件,即可实现 Excel 解析。解析后的页面介绍 顶部为基于 antdv 的 table 组件的复现成果。复现 Excel 表格中,合并完单元格后的成果。 table 组件用到的 columns 配置,及 dataSource 数据,均由解析函数一并返回。无须要开发者二次开发及保护。底部为解析函数解析后返回的三个数据后果。别离为 解析后的 antdv columns 表格列的配置项,间接传递给 table 组件的 columns 属性应用。解析后的 antdv dataSource 表格数据源,间接传递给 table 组件的 data-source 属性应用。解析后的指标数据结构数组。即依据步骤一设置的映射表,将 Excel 各个单元格数据,转换后的指标数据结构。个别状况下,该数据结构,即为传递给后端的数据结构。背景,解决什么问题间接应用 SheetJS 的 XLSX.utils.sheet_to_json 函数进行 excel 数据转化时,仅反对一行表头的 Excel 表格数据解析(只辨认 Excel 内容的第一行作为题目),无奈辨认表头进行过合并单元格的 Excel 数据解析sheet_to_json 转化的 JSON 数据,是以中文为 key 的对象,不合乎编程习惯,须要开发者手动进行数据中英文 key 转换,自行转换为指标数据结构。excel 表头的组织与复现,进行 Excel 表上传时,通常须要在前端展示表格内容,给用户须要数据复现及确认。这个过程须要开发者手动组织实现。起码常识准则,提供最小化 demo 示例,没有脚手架,无须要装置 npm 依赖包。纯 html + js 文件。疾速测试代码可行性。边改边测进行二次开发。具体函数应用形式示例遵循起码常识准则,我的项目中的 core.js 文件,即为转换函数所在文件。外面一共不到 200 行代码。能够间接粘贴复制到所需我的项目外面。示例间接应用的 script 文件整体引入的形式。所以迁徙到基于 npm 的我的项目中时,须要将 core.js 中的 ‘XLSX.utils’ 全局变量应用形式,改为通过 import { utils } from 'xlsx' 的应用形式。如果本我的项目的确有帮忙到小伙伴,小伙伴有需要的话,能够在 github 中提 issues,有需要的话,将补充基于 npm 的版本,以及带上 ts 类型束缚的版本。转换函数运行逻辑获取 Excel 所有单元格数据 ...

August 19, 2022 · 6 min · jiezi

关于excel:身份证号‘去除

C1单元格写入公式=SUBSTITUTE(B1,"'","")或=SUBSTITUTE(B1,"'",)下拉复制公式或双击填充柄实现后选中C列---右键---选择性粘贴----数值---确定---再选中C列---右键----设置单元格格局---数字选项卡---文本---确定后删去B列---新的B列就是你要的数据款式

August 18, 2022 · 1 min · jiezi

关于excel:方法一键批量把联系人号码添加导入WhatsApp通讯录

做外贸的敌人常常要用到的即时通讯工具就是WhatsApp,你是否还在手动一个个将联系人增加到WhatsApp通讯录?如果你感觉手动输出太麻烦,那你找对中央了,上面具体解说如何把联系人号码一键批量导入到iPhone苹果手机和Android安卓手机的通讯录里。无论你应用的是iPhone苹果手机还是Android安卓手机,向WhatsApp增加联系人的过程都是一样的。一个关键性的难题:因为你要存入的是国外号码,不能应用任何前缀“0” 或完结代码。要用“+”号作开首,再输出帼稼和地区代码(这个你在网上本人查),最初再输出电话号码。如果号码后面没有加“+”号和帼稼地区代码,那么你关上WhatsApp是无奈辨认对方号码的。然而问题来了,excel表格又没法输出“+”加号,即便你输出了excel表格会认为是一个公式,不会显示“+”的。那有没有好的解决办法呢?当然有:金芝号码提取导入助手,在软件的倒数第二个功能模块叫“号码前加字符”,能够帮你在号码背后批量增加入任意的字符,并且能够导出txt格局。比方你输出“+001145”,那就是下图的这样,操作简略方便快捷。第1步:后面说了如何批量给号码后面退出“+”加号和代码了,那就能够筹备好正确格局的号码了,接下来你把人铭和号码别离复制粘贴好,放入软件的第一个框和第二个框,见下图。 第2步:在软件“金芝号码提取导入助手”上,点下方的“生成通讯录”,那么你将失去一个通讯录文件,你通过电脑徽xin或电脑q,把这个文件发给你的手机徽xin或手机q,再到手机上关上这个文件。留神,这个文件是手机上关上的,不是电脑上关上的。第3步:你在手机上关上电脑上发送过去的文件,抉择“其余利用形式关上”,抉择“通讯录”、“电括本”、“拨号与分割”等选项,即可主动导入手机通讯录。倡议通过电脑徽xin或q发给手机的形式导入。当然你没有后面这两个的话,本人想方法把“通讯录文件”,发送到手机上。手机保留好文件后,进入手机【设置】-【分割】-【导入/导出分割】-【从存储设备导入】,手机会自动识别方才的通讯录文件,抉择咱们刚刚保留的文件并确认,就能够开始导入了。保留好的样子见下图。默认状况下,WhatsApp会主动同步手机中存储的联系人,并查看他们是否有WhatsApp。导入实现后刷新一下再登录WhatsApp就会主动显示对方的WhatsApp了,如果对方号码有开明了WhatsApp,你就能够间接给对方发WhatsApp悄息了。当然了,后面说的办法:如何批量把联系人号码增加导入WhatsApp通讯录里,软件只负责批量帮你增加存入号码,不负责前面的显示不显示对方的问题,那是你的本人app显示的反馈快慢,须要工夫和过程,跟导入的软件没有关系。

August 13, 2022 · 1 min · jiezi

关于excel:xsheet-开发入门教程自定义初始化配置

x-sheet 开发教程:外围 API 的应用x-sheet 开发教程:如何二次开发 介绍x-sheet 是一款高性能 Web JavaScript Canvas 电子表格,之前小编写过一篇 x-sheet 入门体验,简略介绍了一下如何应用 x-sheet。这次咱们持续深刻一下,理解下 x-sheet 还反对哪些配置,通过批改配置能够自定义咱们的表格布局和个性。 最新原文 X-Sheet 开发教程:初始化配置自定义布局 配置小编在应用 x-sheet 过程中,总结出了一份绝对比拟全的配置清单,能够参考下。 const settings = { // 工作簿配置 workConfig: { // 创立工夫 created: "", // 批改工夫 modified: "", // 作者信息 creator: "", // 最初批改作者 lastModifiedBy: "", // 工作簿名称 name: "x-sheet", // 顶部配置 top: { // 顶部选项栏配置 option: { // 是否显示选项栏 show: true, }, // 顶部菜单栏配置 menu: { // 是否显示菜单栏 show: true, }, }, // 主体配置 body: { // 工作表菜单配置 sheetConfig: { // 是否显示右击菜单 showMenu: true, }, // 工作表主体配置 sheets: [ { // 工作表名称 name: "sheet1", // 表格配置 tableConfig: { // 题目行列配置 index: { // 题目行高度 height: 30, // 题目列宽度 width: 50, // 题目行列边框色彩 gridColor: "rgb(193,193,193)", // 题目行列字体大小 size: 12, // 题目行列字体色彩 color: "rgb(0,0,0)", }, // 表格整体配置 table: { // 是否显示网格线 showGrid: true, // 表格区域背景色彩 background: "rgb(255,255,255)", // 网格线色彩 gridColor: "rgb(225,225,225)", }, // 行配置 rows: { // 自定义最大行数 len: 100, // 默认行高 height: 30, // 行配置数据 data: [ { // 自定义行高,未设置的会取默认行高 height: 100 }, ], }, // 列配置 cols: { // 自定义最大列数 len: 25, // 默认列宽 width: 110, // 行配置数据 data: [{ // 自定义列宽,未设置的会取默认列宽 width: 200 }], }, // 解冻范畴 xFixedView: { // 解冻列索引,-1为不解冻 fxLeft: -1, // 解冻行索引,-1为不解冻 fxTop: -1, }, // 解冻分割线款式 xFixedBar: { // 解冻行分割线高度 height: 16, // 解冻列分割线宽度 width: 26, // 解冻分割线背景色 background: "rgb(234,234,234)", // 解冻分割线按钮背景色 buttonColor: "rgb(193,193,193)", }, // 表格数据,二维数组 data: [ [ // A1 单元格数据 { // 单元格类型 contentType: 2, // 字体属性 fontAttr: { // 换行 textWrap: 2, // 方向 direction: "vertical", }, // 富文本配置 richText: { // 富文本具体字段信息 rich: [ // 第一个段富文本 { // 字体 name: "Arial", // 字体大小 size: 14, // 文本内容 text: "我是", // 字体色彩 color: "rgb(255,0,2)", // 是否加粗 bold: false, // 是否斜体 italic: false, // 是否有删除线 strikethrough: false, // 是否有下划线 underline: false, }, { // 第二段富文本蕴含的字符 // 如果没有配置款式,就取单元格的款式,单元格也没有设置款式,就取默认的款式 text: "富文本", }, ], }, }, { // 背景色彩 background: "rgb(255,255,0)", // 单元格图标 icons: [], // 自定义属性 custom: {}, // 字体测量尺子 ruler: undefined, // 格式化类型 format: "default", // 单元格公式 formula: undefined, // 文本内容 text: "Text", // 格式化后的内容 formatText: "Text", // 内容的宽度 contentWidth: 100, // 内容的高度 contentHeight: 100, // 字体属性 fontAttr: { // 字体 name: "Arial", // 字体大小 size: 14, // 字体色彩 color: "rgb(0,0,0)", // 是否加粗 bold: false, // 是否斜体 italic: false, // 是否有删除线 strikethrough: false, // 是否有下划线 underline: false, // 内边距 padding: 5, // 文本角度 angle: 0, // 文本方向 direction: "horizontal", // 'horizontal' 'vertical' 'angle' 'bar' // 程度对齐形式 align: "left", // 'left' 'center' 'right' // 垂直对齐形式 verticalAlign: "middle", // 'top' 'middle' 'bottom' // 主动换行 textWrap: 1, // 1 溢出 2 换行 3 截断 }, // 边框属性 borderAttr: { // 左边框 left: { // 层级 zIndex: 0, // 是否显示 display: true, // 宽度类型 widthType: "low", // 'low' 'medium' 'high' // 色彩 color: "rgb(0,0,0)", // 线条类型 type: 0, // 0 solid 1 dotted 2 point 3 double }, // 左边框 right: { zIndex: 0, display: true, widthType: "medium", color: "rgb(0,255,0)", type: 0, }, // 上边框 top: { zIndex: 0, display: false, widthType: "high", color: "rgb(0,0,255)", type: 0, }, // 下边框 bottom: { zIndex: 0, display: true, widthType: "high", color: "rgb(0,255,255)", type: 3, }, }, }, ], ], // 爱护配置 protection: { protections: [], }, // 是否爱护 sheetProtection: true, // 合并单元格 merge: { merges: ["A2:B3", "D5:H9"] }, }, }, ], // 工作表选项卡配置 tabConfig: { // 是否显示选项卡右击菜单 showMenu: true, }, }, // 底部状态栏配置 bottom: { // 是否显示状态栏 show: true, }, }, }; // 初始化x-sheet new XSheet("#demo1", settings);总结x-sheet 目前还在开发中,局部 API 还不稳固,后续有变动小编会及时更新。 ...

July 27, 2022 · 3 min · jiezi

关于excel:前端导出-excel基于-Blobjs-和-Export2Exceljs-做前端导出

装置依赖 npm install -S file-savernpm install -S xlsxnpm install -D script-loader 也能够应用 cnpm 装置,在此辨别一下 npm -i 与 npm install -s 与 - d 的区别npm i module_name -g 全局装置,i 是 install 的简写-S 就是–save 的简写-D 就是–save-dev 这样装置的包的名称及版本号就会存在 package.json 的 devDependencies 这个外面,而–save 会将包的名称及版本号放在 dependencies 外面。 咱们在应用 npm install 装置模块或插件的时候,有两种命令把他们写入到 package.json 文件外面去,比方: –save-dev–save在 package.json 文件外面提现进去的区别就是,应用 --save-dev 装置的 插件,被写入到 devDependencies 对象外面去,而应用 --save 装置的插件,是被写入到 dependencies 对象外面去。那么 package.json 文件外面的 devDependencies 和 dependencies 对象有什么区别呢? devDependencies 外面的插件只用于开发环境,不用于生产环境,而 dependencies 是须要公布到生产环境的。 ...

June 6, 2022 · 7 min · jiezi

关于excel:XSpreadsheet-设置默认数据默认样式

文档 文档中没写数据格式是什么样的,上面的代码是这个我的项目示例的默认数据 <script>const rows10 = { len: 1000 }for (let i = 0; i < 1000; i += 1) { rows10[i] = { cells: { 0: { text: 'A-' + i }, 1: { text: 'B-' + i }, 2: { text: 'C-' + i }, 3: { text: 'D-' + i }, 4: { text: 'E-' + i }, 5: { text: 'F-' + i }, }, }}const rows = { len: 80, 1: { cells: { 0: { text: 'testingtesttestetst' }, 2: { text: 'testing' }, }, }, 2: { cells: { 0: { text: 'render', style: 0 }, 1: { text: 'Hello' }, 2: { text: 'haha', merge: [1, 1] }, }, }, 8: { cells: { 8: { text: 'border test', style: 0 }, }, },}const data = [{ freeze: 'B3', styles: [ { bgcolor: '#f4f5f8', textwrap: true, color: '#900b09', border: { top: ['thin', '#0366d6'], bottom: ['thin', '#0366d6'], right: ['thin', '#0366d6'], left: ['thin', '#0366d6'], }, }, ], merges: ['C3:D4'], cols: { len: 10, 2: { width: 200 }, }, name: '123', rows,},{ name: 'sheet-test', rows: rows10 },]到这一步,根本的数据曾经配置实现了。在应用的过程中须要更改整个背景色,网格线色彩等款式文档配置中并不反对这些配置。在github把源码下载下来 ...

March 18, 2022 · 2 min · jiezi

关于excel:python操作excel查找数据并移动到新表

思路:1、操作本地excel获取数据;2、对数据进行操作并存储(看是否去重)3、将解决后的数据写入新表操作:1、操作本地excel获取数据: 前面增加新表的时候,须要增加上面几个步骤,来保障找到反复数据之后的解决: 原表: 最终后果:外面有个关键点,就是openpyxl,实用于只实用于新版的xlsx,如果用其余格局会报错。 原文为此文章: https://mp.weixin.qq.com/s?__...本人尝试外面的操作并不能满足理论需要,须要另做批改。

January 27, 2022 · 1 min · jiezi

关于excel:Execel学习第3讲-查找替换与定位

查找、替换与定位查找与替换查找快捷键:ctrl+F替换 (替换快捷键:ctrl+H) 格局替换:选项-单元格匹配,格局(能够辨认单元格的任一格局即可,从单元格中辨认格局)含糊查找:查找张(通配符:示意任何多个值);张?(英文状态?号)示意一个字(留神单元格匹配);本来就带?的内容,查找张~*(~让前面的字符不失效)。撤销:ctrl+Z定位工具通过名称框(左上角)定位单元格区域地位 A10000 回车A9000:B10000 回车 (选中A9000到B10000)9000:10000 回车(9000行到10000行)定义名称 选中区域,在名称框定义。(罕用区域)(取名尽量中文、单词)查找与替换-转到-援用地位,定位条件 批注(单元格右上角红三角) 选中单元格-右键-插入批注 右键-显示/暗藏批注/编辑批注。 审阅选项卡-显示所有批注。 批注的文本框形态:选中单元格-显示批注;插入-形态-绘图工具中格局-编辑形态-更改形态右键- 增加到快速访问工具栏;单元格右键-编辑批注 -选中批注边框-而后更改形态。 批注加图片:选中单元格右键-编辑批注-右键批注边框-设置批注格局-色彩与线条-填充成果选图 片。把有批注的单元格设置为红色填充:查找与替换-转到-定位条件-批注-确定-更改背景填充色(小桶形态)。为有公式的单元格设置红色填充:查找与替换-定位条件-公式-确定-颜料桶填充色彩。填充解除单元格合并后遗留的空白单元格: 勾销单元格合并:选中合并的单元格-合并后居中-再填充变空的单元格。(如何批量填充防止重 复?) 选中一个区域-其中一个单元格填值-ctrl+enter,则区域内所有单元格都为该值。 选中区域-定位条件-空值-确定-=向上箭头-ctrl+enter。批量删除图片: 网页数据拷到excel会带过去很多图片,查找和抉择-定位条件-对象-确定-delete。 查找与替换-选择对象-抉择图片。

January 20, 2022 · 1 min · jiezi

关于excel:活用Excel成为真正的全战工程师

因为工作的关系,大部分程序员都比拟少接触Excel,一旦遇到和Excel相干的问题可能第一反馈是用code解决。其实,如果数据曾经在Excel外面,是能够很容易用Excel自身的性能解决的。另外,如果相熟Excel的公式构造,有些场景下还能够借助Excel来批量创立程序代码。本文用几个案例来向大家展现这方面的技巧。 Excel 这个电子表格软件的主力用户群体是财务、HR 以及各部门须要解决和剖析数据的信息工作者。因为工作的关系,我和表哥表姐表弟表妹打的交道很多。于是我常常听到他们的吐槽: “咱们公司的IT连VLOOKUP都不会”“我就想把二维表转一维表,我BF竟然说要等他有空敲代码才行” 在他们的心里,业余CS出身的程序员们应该是通吃所有软件问题的,包含且不限于Excel。 但这显著属于误会,因为大部分程序员平时工作中与 Excel 很少有交加,不会 VLOOKUP而且凡事都想撸代码解决是失常景象。程序员是信息时代的王者,所谓没有什么事件是一行代码搞不定的,如果不行,那就再写几行。 我也有很多程序猿和攻城狮敌人,偶然会帮他们解决 Excel 方面的小问题。我始终有一个观点,任何人这辈子都肯定会遇上 Excel,提前略微理解一下,点亮这棵技能树,是很有价值的。况且,对于有深厚功底的程序员来说,学 Excel 的速度必定是普通人的10倍。上面,我就用几个例子来分享一下,哪怕是程序员也能够借助 Excel 进步拔剑的速度! 拼接 SQL 条件语句 比方业务部门冷不丁发给你一张表格,让你在后盾把这些数据处理一下。 这是个长期工作,你须要写一条SQL语句,无论是 UPDATE 还是 DELETE,都须要条件语句,这几十个数据怎么疾速写成条件语句呢? 先说重点:如果数据曾经在 Excel 外面了,你要深信 Excel 就是最有方法最省力的工具。 咱们能够在B2写入公式: =B1&","&"'"&A2&"'"双击B2右下角的填充柄,主动复制公式到整列。 最初间接复制B25单元格,粘贴到你的SQL编辑器外面,略微编辑一下,就功败垂成啦。 图片 ‘&’在 Excel 公式里用于拼接字符串、数值或单元格。在本例的拼接过程中,应用的是单引号。如果在某些编程语言中须要拼接出双引号的成果,能够用上面的公式: =B1&","&""""&A2&"""" SQL 间断解决多张数据表有些数据库因为应用了分表技术,同一类数据按既定规定保留在了某一张数据表中,如果偶然须要按条件解决一个数据,就必须遍历所有的表。 比方,当初有device_list_0到device_list_9 都用于存储设备相干信息,如果长期要删除device_no为78262170fa33 的记录,当时不晓得这条记录具体在哪张表,一个简略的办法就是间接每张表都删除一次。此时,能够借助 Excel 批量结构 SQL 语句。 关上Excel,在A1单元格写入公式: = "'device_list_"&ROW()-1&"'" 在B1单元格写入公式: ="delete from "&A1&" where 'device_no' = '78262170fa33';"这样,第一条语句就实现了。 选中A1:B1,往下复制公式到 A10:B10,就失去了全副所需的 SQL 语句! 利用这样的拼接思路,能够不便的实现各种程序语言外面的“反复代码”,大家能够依据理论状况灵活处理。 解决重复记录在开发和运维过程中,不可避免的要面对反复数据,尽管始作俑者不是本人,但须要加班解决的多半是本人。 ...

January 19, 2022 · 1 min · jiezi

关于excel:excel学习第2讲-单元格格式设置

第2讲 单元格格局设置应用单元格设置工具丑化表格1.设置单元格格局的对话框 选中一个单元格,工作栏小箭头;选中单元格-右键-设置单元格格局;选中一个区域-右键-设置单元格格局。A字体色彩。单元格背景填充色。表格边框线:边框-所有框线。合并多行单元格:合并且居中-逾越合并(选中区域按行合并)。2.对齐选项卡,设置文字对齐形式。3.设置边框线 选中区域-设置单元格格局-边框-斜线(内容:一个单元格内输出一行后分行-按alt+回车-靠左对齐-上一行加空格到左边)(插入-形态)格局刷:选中有格局的表-点击格局刷-再选中无格局的表;选中有格局的表格,双击格局刷,可任意改其余单元格,按esc退出。单元格数字格局1.数字格局 选中单元格-右键-设置单元格格局-数字选项卡-数值-小数位数、千分位分隔符。(单元格格局设置不会扭转值的大小,看编辑栏)货币VS会计专用日期:微软采纳1900计年形式(复制粘贴日期,变为数值,更改单元格格局)自定义(;;;暗藏),yyyy/mm/dd(日期设置),dd-mmm(英文月份简写)-yyyy,aaa(一到日),aaaa(星期一到日)。excel中数字分为:一种有大小多少的含意可加总,另一种没有这种含意可相连。excel中数值15位精确度。身份证号:选中一列-设置单元格格局-文本格式(文本数字左上角带绿箭头)文本不能通过间接设置单元格格局间接转换。一组数字相加为零,则可能为本文,选中后左上角点!号,转换为数字。一列数字不知是否有文本,全副乘以1,excel强制转换文本为数值。 应用分列工具txt文档数据复制到excel,间接粘贴,选中A列,数据选项卡-分列-分隔符号。用分列把文本格式的日期改为数值型。(文本格式与惯例格局用分列转换)

January 14, 2022 · 1 min · jiezi

关于excel:excel学习

第一讲 意识excelexcel软件简介公式必须以等号结尾,否则不会进行运算。要大范畴手工输出很多公式时省略等号,文件-选项-高级-Lotus(之前的数据处理软件)兼容性设置-转换Lotus123公式。(平时不倡议如此)excel能做什么数据存储、数据处理(函数利用)、数据分析、数据出现。excel界面介绍(课后本人看)excel中一些重要概念几种罕用文件类型a.XLS(2003版前)/XLSX (2007、2010版)工作簿文件b.XLW 工作区文件 (2013可能已勾销保留工作区的性能) 整个关上的是excel的主程序,两头区域是工作簿,用小的放大、放大及敞开键管制。须要切换两张表时: 视图-新建窗口-(若为两个窗口)全副重排-垂直并排-可同时看到两个表的内容(互为镜像,修 改时同时变动,便于比拟)。 重排后,再视图-保留工作区(当初表格的布局款式)(为XLW格式文件)。 工作区不保留数据,相当于只是个快捷方式(超链接),保留了表格的布局。对于工作簿、工作表、单元格的操作a.新建工作表:插入工作表按钮,在工作表标签上右键删除此工作表、重命名;重要工作表的标记-工作表标签色彩(改回无色彩);插入多张表,按shift连选(点第一个、最初一个)多张工作表,再插入工作表。b.横行竖列,定位单元格。 第四行前加一行,选中第四行,右键插入。删除整行。抉择多行-插入,会插入多个空行。替换两列秩序。选中单元格-把鼠标放在单元格边框线上-鼠标变为十字方向-能够把单元格拉走;选中一列,把鼠标放在选中的一列的边框线,鼠标变为方向箭头,按住shift拖拽(否替换)。调整行高列宽,双击会主动调整为可包容内容的长度;选中多列调整列宽,可把多列同时调整为同一宽度。如何达到一个表格的最初一行,选中一个有数据的单元格,鼠标挪动到单元格边线,下边线双击达到表格最初,上边线双击达到表格最上,左、右等等。(间断的数据区域)小工具解冻窗格(便于查看表头) 视图-解冻窗格-解冻首(勾销)解冻前几行:选中A4单元格-解冻窗格-解冻拆分窗格,则前三行被解冻。(解冻以后单元格单方)解冻A列:选中B4单元格-解冻拆分窗格,则前三行和A列都解冻。(解冻以后点选单元格的上方和左侧)填充柄(拖拽) 选中单元格,鼠标放于右下角,下拉。Ctrl键+:,会输出明天的日期。(下拉主动填充)下拉有两种:按序列和按复制,按ctrl建再下拉能够扭转下拉的品种。点右键下拉,抉择以何种形式填充。(例:以工作日填充)自定义拖拽程序:文件-选项-高级-创立用于排序和填充序列的列表-编辑自定义列表-新序列-输出序列-增加-确定。第二行选到第900行:名称框显示单元格名字,在名称框写A900,回车会到该格;名称框中输2:900,回车选中整个区域。批量填充:选中多行,输出值,ctrl+回车。

January 10, 2022 · 1 min · jiezi

关于excel:如何快速解除Excel表格工作表保护

1. 解除Excel表格工作表爱护的办法如下文档介绍了Excel表格解除工作表爱护的办法,根本的套路就是把excel表格改名一个压缩包文件,接着从压缩包文件中取出对应的sheet页面的配置xml文件,而后把该xml文件中的sheetProtection节点删除掉。最初把文件放入压缩包,并复原为原excel后缀。从新关上excel表格,该sheet页面的表格爱护已被解除。https://www.jianshu.com/p/b01...https://www.cnblogs.com/shadr... 2. 应用python疾速解除工作表爱护如果sheet页面比拟多,一一去批改比拟麻烦,所以这里提供一个应用python脚本疾速批改的计划: import osimport reimport xml.dom.minidomdef delete_protection_node(xml_file): doc = xml.dom.minidom.parse(xml_file) root = doc.documentElement for parent in root.childNodes: if(parent.tagName == 'sheetProtection'): root.removeChild(parent) with open(xml_file, 'w', encoding='UTF-8') as f: doc.writexml(f)walk_names = os.walk(r'xl\worksheets')for (directory, sub_directorys, file_names) in walk_names: for name in file_names: m = re.match(r'(.+\.)xml$', name, re.I) if m: delete_protection_node(os.path.join(directory, name))

December 14, 2021 · 1 min · jiezi

关于excel:用分列解决拆分excel中一列的数据场景

昨天遇到一个场景,从数据库中导出了一列汇合数据,在excel中一看,是拼接到一起的,如下图,我过后想的就是拆分这个单元格,把excel的数据进行拆分,当然绕了一大圈还是解决不了问题: 最初发现,此场景的解决形式是分列: 拆分excel中一列的数据,其实是分列,最初就能够把本人的须要数据离开:

December 14, 2021 · 1 min · jiezi

关于excel:Excel-2019如何利用条件格式限制输入数据

在对Excel进行数据输出时,为了确保单元格数据输出正确,能够应用数据有效性来限度输出数据的范畴。其实也能够用条件格局来达到该目标。例如为超过肯定数值的单元格主动加上色彩,比方一个单元格的数值下限设置为100,如果输出101,这个单元格就变成红色。 应用条件格局限度输出数据的具体操作步骤如下。 STEP01:抉择B2:G14单元格区域,切换至“开始”选项卡,在“款式”组中单击“条件格局”下三角按钮,在开展的下拉列表中抉择“突出显示单元格规定”选项,而后在开展的级联列表中抉择“大于”选项,如图5-60所示。 图5-60 抉择条件格局 STEP02:在关上的“大于”对话框中设置大于数值为“100”,设置显示为“绿填充色深绿色文本”,最初单击“确定”按钮返回工作表,如图5-61所示。 图5-61 设置数值条件 STEP03:如果在选定区域内输出了下限大于100的数值,则单元格就会被绿填充色深绿色文本填充,如图5-62所示。 图5-62 条件格局设置成果

November 24, 2021 · 1 min · jiezi

关于excel:如何通过-Excel-import-的方式导入测试数据到-SAP-Commerce-Cloud-服务器

登录 SAP Commerce Cloud Administration Cockpit,从下拉菜单里抉择 Product Cockpit: 点击这个箭头,关上 product 视图: 点击这个 excel import 按钮: 抉择好 excel 和 media.zip 之后,点击 import: 点击这个按钮查看 import 进度: 进到 Backoffice 页面,依据 excel 里的 product id 查看一个 product,确保导入胜利: 更多Jerry的原创文章,尽在:"汪子熙":

November 7, 2021 · 1 min · jiezi

关于excel:Excel海量数据导入mongodb

我的需要导入Excel的数据,供零碎内查问(将近30w行)这个Excel是一个全量的数据,不是增量,零碎外保护,有变动了,定期导入更新Excel导入尝试一般的poi导入excel的形式,数据量太大,很容易OOM WorkbookFactory.create(file.getInputStream());我的excel不过30M左右,程序占了3g内存,竟然还会OOM 参考这个问题:https://stackoverflow.com/que... 应用这个库,反对用流的形式读取excel:https://github.com/monitorjbl... 依赖援用仓库后,呈现了Method Not Found的异样,可能是依赖抵触了,我被动排除了一下 <dependency> <groupId>com.monitorjbl</groupId> <artifactId>xlsx-streamer</artifactId> <version>2.1.0</version> <exclusions> <exclusion> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version> </dependency>应用xlsx-streamer读取excel:try ( InputStream is = file.getInputStream(); Workbook wb = StreamingReader.builder() // number of rows to keep in memory (defaults to 10) .rowCacheSize(100) // buffer size to use when reading InputStream to file (defaults to 1024) .bufferSize(4096) // InputStream or File for XLSX file (required) .open(is); ) { ……}导入mongodb数据量比拟大,如果组装java对象,必定节约性能,我抉择间接用 org.bson.Document组装数据。 ...

September 8, 2021 · 2 min · jiezi

关于excel:导出zip

管制层@PostMapping("/questionListExport")@ApiOperation(httpMethod = "POST",value = "",notes = "列表导")public WGJsonResult questionListExport(@RequestBody BackQuestionExport param, HttpServletResponse response) throws Exception { return backQuestionService.questionListExport(param,response);}服务层@Overridepublic WGJsonResult questionListExport(BackQuestionExport param, HttpServletResponse response) throws IOException { PageHelper.startPage(param.getPageNo(),param.getPageSize()); List<BackQuestionExport> eports = backQuestionMapper.questionListExport(param); Map<String,List<BackQuestionExport>> dataMap = eports.stream().collect(Collectors.groupingBy(p->p.getInvitName()+"_"+p.getInvitId(), Collectors.toList())); exportExcel(response, dataMap); //导出之后记录日志 ask_exp_imp_record addLog(eports,1); return success("下载胜利");}private void exportExcel(HttpServletResponse response, Map<String, List<BackQuestionExport>> map) throws IOException { SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy_MM_dd_hh_mm_ss"); String nowDate = sdf4.format(new Date()); String fileName = nowDate + ".zip"; // 获取我的项目根门路 String rootPath =System.getProperty("user.dir")+"_"+nowDate;// System.out.println("-----------"+System.getProperty("user.dir")); File f = new File(rootPath); if (!f.exists()) { f.mkdirs(); } String tempPath = ""; response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8")); ZipOutputStream zipOutputStream = new ZipOutputStream(new FileOutputStream(rootPath + File.separator + fileName)); try { for (Map.Entry<String, List<BackQuestionExport>> entry : map.entrySet()) { String k = entry.getKey(); List<BackQuestionExport> value = entry.getValue(); tempPath = rootPath + File.separator + k + ".xlsx"; EasyExcel.write(tempPath, BackQuestionExport.class).sheet("问答数据").doWrite(value); //创立输出流读取文件 BufferedInputStream bis = new BufferedInputStream(new FileInputStream(tempPath)); //将文件写入zip内,行将文件进行打包 zipOutputStream.putNextEntry(new ZipEntry(nowDate+File.separator+k + ".xlsx")); //写入文件的办法,同上 int size = 0; byte[] buffer = new byte[1024]; //设置读取数据缓存大小 while ((size = bis.read(buffer)) > 0) { zipOutputStream.write(buffer, 0, size); } bis.close(); } //敞开数据流,留神敞开的程序 zipOutputStream.close(); FileInputStream fis = new FileInputStream(rootPath + File.separator + fileName); BufferedInputStream buff = new BufferedInputStream(fis); byte[] b = new byte[1024];// 相当于咱们的缓存 int k = 0;// 该值用于计算以后理论下载了多少字节 OutputStream out = response.getOutputStream();// 从response对象中失去输入流,筹备下载 // 开始循环下载 while ((k = buff.read(b)) > 0) { out.write(b, 0, k); } out.close(); buff.close(); } catch (Exception e) { System.out.println(e.fillInStackTrace()); } finally { if (!f.exists()) return; if (f.isFile()) { f.delete(); return; } File[] files = f.listFiles(); for (int i = 0; i < files.length; i++) { files[i].delete(); } f.delete(); }}sql<select id="questionListExport" resultMap="UserBackQuestionExpMap"> SELECT * FROM ( SELECT ic.question_id, ic.id, ic.invit_id, ic.invit_name, DATE_FORMAT( ic.insert_time, '%Y-%m-%d %H:%i:%S' ) insert_time, ic.is_export, aq.question, aq.label_value, aq.lable_name, aq.`describe`, REPLACE ( uc.file_path, ',', ',\\n' ) file_path, IF(ak.answer IS NOT NULL,1,0) answerFlag FROM invit_contact ic LEFT JOIN ask_question aq ON ic.question_id = aq.id LEFT JOIN ( SELECT table_id, GROUP_CONCAT( file_path ) file_path FROM upload_change WHERE table_name = 'ask_question' GROUP BY table_id ) uc ON uc.table_id = ic.question_id LEFT JOIN (SELECT question_id, GROUP_CONCAT( ak.result SEPARATOR ',' )as answer FROM ask_question aq LEFT JOIN ask_answer ak ON aq.id = ak.question_id GROUP BY ak.question_id ) ak ON ic.question_id = ak.question_id WHERE aq.is_del = 0 )f <include refid="SearchSql"/> ORDER BY insert_time DESC</select>

August 16, 2021 · 2 min · jiezi

关于excel:导入文件

实体@ColumnWidth(20)@HeadRowHeight(15) // 题目高度@ContentRowHeight(15) // 文本行高度public class BackQuestionImport extends BaseRowModel {@ExcelProperty( ")@ApiModelProperty(value="id")private int id;@ExcelProperty( "问题id")@ApiModelProperty(value="问题id")private int questionId;@ExcelProperty( "专家id")private int invitId;@ExcelProperty( "专家名字")private String invitName;@ExcelProperty( "发问日期")private String insertTime;@ExcelProperty( "问题题目")private String question;@ExcelProperty( "标签id")private String labelValue;@ExcelProperty( "标签名称")private String lableName;@ExcelProperty( "问题形容")private String describe;@ExcelProperty( "图片")private String filePath;@ExcelIgnore@ApiModelProperty(value="是否导出")private Integer exportFlag;@ExcelProperty( "专家答复")@ApiModelProperty(value="专家答复")private String answer;管制层@PostMapping("/questionListImport")@ApiOperation(httpMethod = "POST",value = "",notes = "")public WGJsonResult questionListImport(@RequestParam("file") MultipartFile multipartFile) throws IOException { return backQuestionService.questionListImport(multipartFile);}服务层@Overridepublic WGJsonResult questionListImport(MultipartFile multipartFile) throws IOException { Sheet sheet = new Sheet(1, 1, BackQuestionImport.class); List<Object> readList = EasyExcelFactory.read(multipartFile.getInputStream(), sheet); // 存 BackQuestionExport 实体的 汇合 List<BackQuestionExport> list = new ArrayList<BackQuestionExport>(); for (Object obj : readList) { BackQuestionExport backQuestionExport = new BackQuestionExport(); BeanUtils.copyProperties(obj,backQuestionExport); list.add(backQuestionExport); } //插入ask_answer backQuestionMapper.addQuestionAnswerData(list); //记录日志 ask_exp_imp_record addLog(list,2); return success("导入胜利");}sql语句 INSERT INTO ask_answer ( id, result, label_value, lable_name, user_id, user_name, question_id ) VALUES <foreach collection ="list" item="item" index= "index" separator =","> ( #{item.id}, #{item.answer}, #{item.labelValue}, #{item.lableName}, #{item.invitId}, #{item.invitName}, #{item.questionId} ) </foreach > ON DUPLICATE KEY UPDATE id = VALUES(id), result = VALUES(result), label_value = VALUES(label_value), lable_name = VALUES(lable_name), user_id = VALUES(user_id), user_name = VALUES(user_name), question_id = VALUES(question_id) 记录日志 ask_exp_imp_recordpublic void addLog(List<BackQuestionExport> list,Integer type){ //获取各个数据的汇合 List<String> questions = list.stream().map(BackQuestionExport::getQuestion).distinct().collect(Collectors.toList());//先获取问题汇合 List<Integer> questionIds = list.stream().map(BackQuestionExport::getQuestionId).distinct().collect(Collectors.toList()); List<Integer> invitIds = list.stream().map(BackQuestionExport::getInvitId).distinct().collect(Collectors.toList()); List<String> invitNames = list.stream().map(BackQuestionExport::getInvitName).distinct().collect(Collectors.toList()); List<String> answers = list.stream().map(BackQuestionExport::getAnswer).distinct().collect(Collectors.toList()); List<Integer> ids = list.stream().map(BackQuestionExport::getId).distinct().collect(Collectors.toList()); //保留记录 BackQuestionLog backQuestionLog = new BackQuestionLog(); backQuestionLog.setQuestionIds(questionIds.stream().map(String::valueOf).collect(Collectors.joining(",")).trim()); backQuestionLog.setQuestions(questions.stream().map(String::valueOf).collect(Collectors.joining(",")).trim()); backQuestionLog.setQuestionNum(questionIds.size()); backQuestionLog.setAnswerManIds(invitIds.stream().map(String::valueOf).collect(Collectors.joining(",")).trim()); backQuestionLog.setAnswerManNames(StringUtils.join(invitNames, ",").trim()); backQuestionLog.setAnswerIds(ids.stream().map(String::valueOf).collect(Collectors.joining(",")).trim()); backQuestionLog.setAnswers(answers.stream().map(String::valueOf).collect(Collectors.joining(",")).trim()); backQuestionLog.setAnswerNum(answers.size()); backQuestionLog.setType(type); backQuestionLog.setStatus(0); //插入日志表 ask_exp_imp_record backQuestionMapper.addQuestionAnswerLog(backQuestionLog);}

August 16, 2021 · 2 min · jiezi

关于excel:导入EXCEL可读取json

此处为须要插件 xlsx此处为vue父组件引入办法 // import excel from "./components/upload-excel.vue"; // <excel v-on:getResult="updateExcel"></excel>此处为编辑好的vue组件 <template> <div> <span> <input class="input-file" hidden="hidden" type="file" @change="exportData" accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel" /> <a-button class="m-x-10" type="primary" @click="btnClick"> 导入 </a-button> </span> </div></template><script> //图标组件要独自引入 import { defineComponent, reactive, onMounted, toRefs, computed } from "vue"; // import { UpOutlined, DownOutlined } from '@ant-design/icons-vue'; // import { message } from 'ant-design-vue'; // import { useStore } from 'vuex'; // import { useApi } from '@/common/utils/api'; export default defineComponent({ components: {}, setup(props, context) { const data = reactive({}); const methods = { btnClick() { document.querySelector(".input-file").click(); // }, exportData(event) { if (!event.currentTarget.files.length) { return; } // 拿取文件对象 const f = event.currentTarget.files[0]; // 用FileReader来读取 const reader = new FileReader(); // 重写FileReader上的readAsBinaryString办法 FileReader.prototype.readAsBinaryString = function (f) { let binary = ""; let wb; // 读取实现的数据 let outdata; // 你须要的数据 const reader = new FileReader(); reader.onload = function (e) { // 读取成Uint8Array,再转换为Unicode编码(Unicode占两个字节) const bytes = new Uint8Array(reader.result); const length = bytes.byteLength; for (let i = 0; i < length; i++) { binary += String.fromCharCode(bytes[i]); } // 接下来就是xlsx了,具体可看api //上行必须加上,否者报错 // eslint-disable-next-line @typescript-eslint/no-var-requires const XLSX = require("xlsx"); wb = XLSX.read(binary, { type: "binary", }); outdata = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]); // 自定义办法向父组件传递数据 // console.log("outdata = " + JSON.stringify(outdata)); // console.log(outdata); context.emit("getResult", outdata); }; reader.readAsArrayBuffer(f); }; reader.readAsBinaryString(f); }, }; return { ...toRefs(data), ...methods, }; }, });</script>

June 29, 2021 · 1 min · jiezi

关于excel:前端可视化展示Excel

Excel可视化后端返回Excel流前端进行展现前言需要:有的时候咱们须要接管到后端返回的Excel流,前端进行可视化展现时,这个时候依照如下步骤即可 提前阐明:前端展现的Excle款式与格局齐全由后端管制,比方合并单元格、款式管制.. 前端Demo:例子 (有现成写好的接口) 装置依赖库装置依赖库(二选一即可) npm install xlsx xlsx-style less less-loader@5.0.0yarn add xlsx xlsx-style less less-loader@5.0.0拷贝文件夹 src/components/x-spreadsheetsrc/util/xlsx-exchange戳我下载引入依赖:在你想申请展现的.vue文件中import axios from 'axios'import Spreadsheet from '@/components/x-spreadsheet';import XStyle from 'xlsx-style';import Exchange from '@/util/xlsx-exchange';启动我的项目:批改报错 cpexcel.js (ctrl+p间接搜寻文件即可)(删除)-- var cpt = require('./cpt' + 'able');(增加)++ var cpt = cptable;展现定义template<div class="content"> <div id="xss-demo" /></div>定义datadata() { return { sheet: null, flobFileSize: 0, }},初始化xsheetasync mounted() { this.instantiateSheet();},xsheet配置method: { // 设置xsheet 数据 setXsheetData(out) { this.sheet.loadData(out); if (out.length) { let colLen = Object.keys(out[0].rows[0].cells).length || 10; // let colLen = this.getTableColLen(out) || 10; let rowLen = Object.keys(out[0].rows).length || 10; this.sheet.sheet.data.rows.len = rowLen; this.sheet.sheet.data.cols.len = colLen; this.sheet.reRender(); } }, // 实例化 xsheet instantiateSheet() { let queryListHeight = 0; if (this.$refs.queryList) queryListHeight = this.$refs.queryList.$el.offsetHeight || 0; this.sheet = new Spreadsheet(document.getElementById("xss-demo"), { mode: "read", // edit | read showToolbar: false, showGrid: false, showContextmenu: false, view: { height: () => document.documentElement.clientHeight - 180 - queryListHeight, width: () => document.documentElement.clientWidth - 300, }, row: { height: 25, len: 100, }, col: { len: 16, width: 100, indexWidth: 60, minWidth: 60, }, }); },}发送申请axios({ url: 'http://39.102.36.212:3006/excelExport', method: 'post', responseType: 'blob'}).then((res) => { const self = this const result = res.data this.flobFileSize = result.size || 0; if (result instanceof Blob) { var reader = new FileReader(); reader.onload = function (e) { let data = e.target.result; console.log(data) if (data) { let workbook = XStyle.read(data, { type: "binary", cellStyles: true }); let out = Exchange.stox(workbook); self.setXsheetData(out) } else { self.setXsheetData([]) } }; reader.readAsBinaryString(result); } else { self.setXsheetData([]) }})展示成果 ...

May 30, 2021 · 2 min · jiezi

关于excel:Excel-解决csv丢失前面的0

背景:Excel中文本格式存储的后面带0的数字,但在存成CSV时,前0是没有失落的(能够提前用Notepad++关上看一下) 步骤:1.新建一个空白excel并关上,2.数据->自文本-> 抉择方才另存为的那个csv(看起来不显示前0的)-> 导入->下一步->下一步->列数据格式抉择文本->实现-确定。 ->> 列数据格式抉择文本,并抉择对应要改为Test的列。 参考资料: Csv 失落后面的零

May 11, 2021 · 1 min · jiezi

关于excel:excel-按照模板导出-springboot实战电商项目mall4j

在统计数据的时候,咱们须要导出一些特定格局的excel。咱们能够应用poi写代码来解决格局,这样会导致写很多的代码来搞定,如果将某两个特定的表格数据的地位或者色彩标记做小小的改变,咱们只有调整一下代码能力搞定。那有没有一种简略的办法导出特定排列的excel呢?答案当然是有的,这里举荐easypoi来解决这个问题。如有更好解决方案欢送留言探讨哦。 springboot实战电商我的项目mall4j (https://gitee.com/gz-yami/mall4j) java开源商城零碎 1.easypoi简介easypoi性能如同名字easy,主打的性能就是容易,让一个没见接触过poi的人员就能够不便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简略的注解和模板语言(相熟的表达式语法),实现以前简单的写法。easypoi官网文档 2.为什么选用easypoi次要看重easypoi的两个性能,Excel模板导出,html预览。Excel模板导出,是为了少写一下反复大量的代码,导出一些简单排列的表格。html预览,有时候咱们想先看一些导出成果,不想导出,就须要这个html预览的性能。当然easypoi还有一些其余的性能,请到esaypoi的官网文档去查看吧。 3.引入依赖咱们这里引入是spring boot 的依赖,其余的能够到官网查看,参照引入。 <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-spring-boot-starter</artifactId> <version>4.0.0</version></dependency>4.Excel模板导出先定义一个excel的模板,如图所示:而后定义好相干变量,如图所示 5.代码局部 @RequestMapping("test") public void getExcelInfo(ModelMap modelMap, HttpServletRequest request, HttpServletResponse response) throws IOException { // 模板在我的项目中的门路 TemplateExportParams params = new TemplateExportParams( "doc/testExcelTemplate.xlsx"); Map<String, Object> map = new HashMap<String, Object>(16); map.put("code", "A20210101"); map.put("applyTime", "2021-01-01"); map.put("total", 40000); map.put("company", "执笔潜行科技有限公司"); map.put("remark", "测试导出"); map.put("year", "2021"); map.put("month", "04"); map.put("day", "25"); map.put("name", "JueYue"); map.put("phone", "1879740****"); List<Map<String, String>> listMap = new ArrayList<>(); for (int i = 0; i < 4; i++) { Map<String, String> lm = new HashMap<String, String>(16); lm.put("amountType", i + "测试"); lm.put("code", "A001"); lm.put("subjectName", "设计"); lm.put("projectName", "EasyPoi " + i + "期"); lm.put("fullName", "Ces 我的项目"); lm.put("bankCard", "6216610200016587010"); lm.put("bankName", "中国银行"); lm.put("applyAmount", i * 10000 +""); lm.put("approvedAmount", i * 10000 +""); listMap.add(lm); } map.put("list", listMap); modelMap.put(TemplateExcelConstants.FILE_NAME, "专项收入用款申请书_map.xls"); modelMap.put(TemplateExcelConstants.PARAMS, params); modelMap.put(TemplateExcelConstants.MAP_DATA, map); PoiBaseView.render(modelMap, request, response, TemplateExcelConstants.EASYPOI_TEMPLATE_EXCEL_VIEW); }输出门路拜访下载测试,后果如图: ...

April 29, 2021 · 1 min · jiezi

关于excel:SkillVBA零基础入门及实例批量将链接转成图片

简介VBA(Visual Basic for Applications)是附丽在应用程序(例如Excel)中的VB语言。只有你装置了Office Excel就主动默认装置了VBA,同样Word和PowerPoint也能调用VBA对软件进行二次开发而让一些特地简单的操作“脚本化”。 如何关上VBA1. 关上”开发工具“性能(首次应用VBA)如果你是第一次应用VBA,须要关上“开发工具”性能。 Window:文件——选项——自定义功能区——勾选开发工具 Mac:Excel——偏好设置——视图 2. 关上VBA的三种形式2.1 开发工具——VisualBasic 2.2 ALT+F11快捷键2.3 右键sheet页查看代码 3. VBA界面 一个简略的VBA程序大部分程序入门都会写一个代码输入“Hello World”,咱们写第一个程序在选定的单元格输入本人的昵称。 Sub 插入文字() 'sub定义一个过程 Selection.Value = "TOMOCAT" '代码块End Sub '完结一个过程1. 新建模块模块不便咱们导出代码用于其余的Excel,所以养成良好的编程习惯插入模块。 2. 在指定区域写代码 3.执行代码上面三种办法实现的性能雷同,毋庸太纠结,抉择最不便的即可。 F5执行运行选项卡 运行按钮 一点小倡议——应用“立刻窗口”如果你用过Rstudio写R代码或者Spyder写Python代码的话,“立刻窗口”相似于控制台,能提醒代码编译谬误和进行实时计算。 1. 关上“立刻窗口视图——立刻窗口 2. 在立刻窗口输出代码间接作用于excel选中一个单元格,而后在立刻窗口输出代码(不用定义Sub过程),敲击回车键执行: 能够看到执行后被选中的单元格呈现了你的昵称,到此为止你曾经实现了第一个VBA程序。 实例:将URL转化成图片1. 背景形容当初excel中有多个图片链接,咱们心愿将这些链接都转成图片。 2. 办法一:同时保留链接和图片开发工具——Visual Basic(或者ALT+F11快捷键)进入VB界面,而后双击sheet1按钮关上VB编程窗口: 输出如下代码并保留: Sub loadimage()Dim HLK As Hyperlink, Rng As RangeFor Each HLK In ActiveSheet.Hyperlinks '循环流动工作表中的各个超链接 If HLK.Address Like "*.jpg" Or HLK.Address Like "*.gif" Or HLK.Address Like "*.png" Then '如果链接的地位是jpg或gif图片(此处仅针对此两种图片类型,更多类型能够通过建设数组或字典或正则来判断) Set Rng = HLK.Parent.Offset(, 1) '设定插入指标图片的地位 With ActiveSheet.Pictures.Insert(HLK.Address) '插入链接地址中的图片 If .Height / .Width > Rng.Height / Rng.Width Then '判断图片纵横比与单元格纵横比的比值以确定针对单元格缩放的比例 .Top = Rng.Top .Left = Rng.Left + (Rng.Width - .Width * Rng.Height / .Height) / 2 .Width = .Width * Rng.Height / .Height .Height = Rng.Height Else .Left = Rng.Left .Top = Rng.Top + (Rng.Height - .Height * Rng.Width / .Width) / 2 .Height = .Height * Rng.Width / .Width .Width = Rng.Width End If End With End IfNextEnd Sub开发工具-宏-执行: ...

April 10, 2021 · 2 min · jiezi

关于excel:10w-行级别数据的-Excel-导入优化记录

需要阐明 我的项目中有一个 Excel 导入的需要:缴费记录导入 由施行 / 用户 将别的零碎的数据填入咱们零碎中的 Excel 模板,利用将文件内容读取、校对、转换之后产生欠费数据、票据、票据详情并存储到数据库中。 在我接手之前可能因为之前导入的数据量并不多没有对效率有过高的谋求。然而到了 4.0 版本,我预估导入时Excel 行数会是 10w+ 级别,而往数据库插入的数据量是大于 3n 的,也就是说 10w 行的 Excel,则至多向数据库插入 30w 行数据。因而优化原来的导入代码是势在必行的。我逐渐剖析和优化了导入的代码,使之在百秒内实现(最终性能瓶颈在数据库的处理速度上,测试服务器 4g 内存不仅放了数据库,还放了很多微服务利用。解决能力不太行)。具体的过程如下,每一步都有列出影响性能的问题和解决的方法。 导入 Excel 的需要在零碎中还是很常见的,我的优化方法可能不是最优的,欢送读者在评论区留言交换提供更优的思路 一些细节 数据导入:导入应用的模板由零碎提供,格局是 xlsx (反对 65535+行数据) ,用户依照表头在对应列写入相应的数据数据校验:数据校验有两种: 字段长度、字段正则表达式校验等,内存内校验不存在内部数据交互。对性能影响较小数据重复性校验,如票据号是否和零碎已存在的票据号反复(须要查询数据库,非常影响性能)数据插入:测试环境数据库应用 MySQL 5.7,未分库分表,连接池应用 Druid迭代记录 第一版:POI + 逐行查问校对 + 逐行插入 这个版本是最古老的版本,采纳原生 POI,手动将 Excel 中的行映射成 ArrayList 对象,而后存储到 List ,代码执行的步骤如下: 1.手动读取 Excel 成 List 2.循环遍历,在循环中进行以下步骤 测验字段长度一些查询数据库的校验,比方校验以后行欠费对应的屋宇是否在零碎中存在,须要查问屋宇表写入以后行数据返回执行后果,如果出错 / 校验不合格。则返回提示信息并回滚数据3.不言而喻的,这样实现肯定是赶工赶出来的,后续可能用的少也没有察觉到性能问题,然而它最多实用于个位数/十位数级别的数据。存在以下显著的问题: 查询数据库的校验对每一行数据都要查问一次数据库,利用拜访数据库来回的网络IO次数被放大了 n 倍,工夫也就放大了 n 倍写入数据也是逐行写入的,问题和下面的一样数据读取应用原生 POI,代码非常冗余,可维护性差。第二版:EasyPOI + 缓存数据库查问操作 + 批量插入 ...

March 29, 2021 · 3 min · jiezi

关于excel:只会用Excel做数据试试这个Excel插件用过的人都真香

BI商业智能,这个词想必大家都听过了。益处就用不我一一提了:简略易用,不必写代码;疾速取数,4秒导入亿行数据;数据可视化,活泼形象……然而很多共事对BI又爱又恨,恨的是这个工具尽管“好用”,然而我最习惯的还是Excel,新工具还要重新学习,太麻烦了! 不可否认的是,Excel给大家的职业生涯开了个好头,对刚入行的小白来说,熟练掌握Excel剖析和报表制作技巧还能理解一些数据挖掘常识,很快就能在同批老手数据分析师中怀才不遇。 然而Excel一旦遇到简单的大数据量数据集就卡得要死,效率很低。再加上数据无奈实时更新,须要消耗很多反复人力在更换数据源上,并且可视化成果也无限。 起初因为太多员工都在吐槽Excel的这个问题,主管也开始器重起来。他“埋伏”各个顶尖数据分析师的聊天群里,发现了其余公司解决Excel导数难的方法。他们下载了一款插件,据说插件十分小,只有3.4M,然而用了它,上亿的数据放到Excel里也不会卡顿。 另外,还不须要下载其余的破解安装包,下载好一键装置! Excel插件 据说还有其余的长处 1、功能强大且全面,反对微软Office和WPS Office Excel剖析插件内置了大量实用功能,平时须要3/4/5/6个步骤,甚至要记住多个公式的操作。当初都变成了傻瓜式的一键操作,效率晋升 100 倍!同时还兼容微软Office和WPS Office! 2、反对超大数据量解决,秒级速度响应亿级数据 反对Excel直连数据库,在Excel里间接拖拽字段就能够刷新数据。上亿行的数据也能够10秒内导入! 3、收费,易上手! 收费,收费,收费!重要的事件说三遍!这么酷炫的性能插件,竟然还是收费的,几乎不要太良心。 能遇见这样优良又收费的BI工具着实让我领会到了国产真香,再想到之前华为被美国“封杀”的事,也让大部分的企业意识到国产工具的不可替代性。

March 18, 2021 · 1 min · jiezi

关于excel:想解决一线业务用户的问题这款好用的excel插件必不可少

随着科技的倒退,人们对数据分析的要求越来越多, Excel也存在一些问题,长期困扰一线业务用户:首先是性能问题。对于大数据量,Excel解决起来很慢。数据获取的过程麻烦,特地是周期性的数据获取,每次都要找IT人员帮忙,再粘贴到excel中去。首先,文件满天飞,不好治理;其次,权限不好管制,没法做到只共享剖析后果,而不共享明细数据;最初,数据没法做到每个人的数据不同,依据用户权限动静更新数据。 因而许多公司开发了很多简略易用、高效的第三方插件,Smartbi的excel插件就是面向Excel用户的数据分析工具,Smartbi的excel插件又叫Smartbi电子表格。它联合了Excel的长处,解决了Excel的问题。 Smartbi电子表格是企业报表平台的解决方案专家,翻新的基于Excel实现报表设计,满足各种格局的行业监管报表、外部治理报表的需要。包含:清单报表、穿插报表、分组报表、多源分片报表、分块报表、表单报表、图形报表、回写报表、假如剖析报表、二次计算报表、套打报表、段落式报表、预警报表(Excel条件格局)、组合报表(智能评语)。 报表开发人员制作和应用电子表格的次要过程为: 首先先装置Smartbi Excel插件,按管理员调配的账号从Excel登录插件;而后在左侧设计动态表样,而后从右侧数据集面板拖拽字段到报表区域进行排版;接着调整字段的单元显示格局,如设置汇总求和、阈值告警等;最初将制作好的电子表格公布到报表服务器,能够在Excel或者前端浏览器预览导出打印报表。 Smartbi 电子表格的八大个性: Excel是用户最相熟的办公软件,有着最敌对的UI操作体验 反对Excel的单元格计算、行列锁定、数据有效性等各种罕用性能 反对Excel的条件格局(数据条、图标集、色阶)性能 反对Excel所有函数,例如财务函数、统计函数、逻辑函数、三角函数等 反对杜邦剖析、工夫序列预测等,并能够应用宏进行扩大 反对应用第三方Excel模板,如丑化巨匠,来对表格和图形进行丑化 报表制作充沛简化,间接将数据字段拖拽到Excel模板上,公布即可。 具备弱小的透视剖析性能,包含:工夫计算二次计算性能;累值和日均、增长值和增长率的工夫计算;度量区域字段聚合操作。 对于Excel插件的下载  主动装置      1)装置Microsoft .Net Framework 4.0 Full      2)获取装置介质          插件安装包不蕴含在规范的产品安装包中,若需对插件进行学习或应用,         请到官网进行 下载;      3)点击装置介质,弹出装置界面如图: 装置步骤 参考装置详情 启动Excel插件装置实现后,启动Excel,会呈现Smartbi面板。 点击"设置",填写拜访地址、您的账号、明码;并且抉择默认报表类型=Excel剖析。

March 16, 2021 · 1 min · jiezi

关于excel:SmartbiEXCEL憋出大招逆袭大数据的黑马出现了

EXCEL是一款功能强大的数据可视化和剖析工具,其直观的界面、杰出的计算性能受到了全世界所有用户的青眼。通过Excel,你能够利用模板轻松创立电子表格,能够应用公式去执行简单的数学运算,还能够应用图形、迷你图去展现你手中的数据。EXCEL的内存占用较低、体积玲珑,是一款性能十分弱小的办公软件,能够这么说,只有用windows操作系统的电脑,大部分的人都会装置这一款软件。微软官网已经统计过,每五个成年人中就有一个人会应用EXCEL,足以阐明EXCEL的影响力有多大了。 可是EXCEL并不是一个十分完满的办公软件,就好比是女神维纳斯的雕像一样,即便是身材比例十分柔美,然而因为没有手臂而造成了一个十分的缺点。EXCEL就是这样的一款不完满的办公软件,就解决拿大容量的数据来说吧,只有超过百万行数据量的报表,EXCEL便十分吃力,如果超过千万行数据量,EXCEL便无能为力,只能望洋兴叹了。做大数据通常须要借助其余工具去实现,如果不会写代码或者会操作工具的话,对于普通用户来说几乎是一个噩梦般的事件。 做大数据要解决的问题,次要以下三个,第一个是数据量的问题,EXCEL的性能只能解决小容量的数据,算是一款轻量级的数据工具,如果要解决宏大的数据量,还是要用到数据库去解决。第二个是自动化的问题,在当初这个时代,企业外部每天产生的数据量都是数以万计的,甚至更多,如果还用简略的复制粘贴基本应酬不了这么宏大的数据量,所以数据分析师都是利用代码去执行一些根本的操作。第三个要解决利用场景的问题,也就是如何挖掘出更有价值的信息,通过数据精准地领导业务部门去做晋升和改善。 1、 数据性能 数据性能始终是EXCEL用户的心病,咱们刚刚也说过了,只有数据量一大,EXCEL就没辙了,所以解决大数据肯定要用数据库软件。然而很多EXCEL的用户不懂得怎么应用数据库,更不晓得怎么用EXCEL去连贯数据库了。网上有很多EXCEL连贯数据库的教程,但我感觉太简单了,还不如去用一个插件,我集体用的是一个叫Smartbi智剖析的插件,只有 装置好了,在EXCEL里就会呈现一个新的工具栏,抉择数据导入就能够把EXCEL或者CSV文件导进去进行剖析了。 如果你有内部的数据库,也能够与Smartbi智剖析建设连贯,例如阿里云或者MYSQL等市场上支流的数据库,只须要通过简略的设置,便能够开始应用内部数据库里的数据去进行剖析了。 数据建设了连贯后,就能够在EXCEL去拉拽数据进行剖析了,从此你再也不须要关上宏大的数据源了,只有用EXCEL这个工具便能够做大数据的剖析了。 2、 数据自动化 做数据查问免不了的是要写查问语句,置信很多人看到以下这样的SQL查询语言都会头疼,毕竟要熟练掌握数据库是须要肯定的技术的。然而这里就不教大家去应用数据库查问数据了,上面介绍两个十分弱小的办法。 即席查问:即席查问和SQL语句其实是一个意思,其目标都是为了查问出精确的数据,然而即席查问比SQL语句好的是,就是即席查问不必写语句。例如我在Smartbi智剖析上操作即席查问,只有通过鼠标就能把须要的数据字段筛选进去,而后就能够独自作为一个数据集保留在文件夹里,不须要从新关上总的数据源了。对于每天须要一直去写SQL的同学来说,这个办法能够帮你省掉不少功夫。 透视剖析:透视剖析也是一个罕用的性能,在EXCEL上咱们常常会用到透视图去剖析数据,然而面对几千万行的大数据来说,就无能为力了。因而云端的透视剖析会是一个十分好的抉择,通过云端的服务器对大数据进行高效地解决,几秒钟之内便能够刷出你想要的数据。上面是我在Smartbi智剖析模仿的一个透视剖析,数据量有9800万行,然而我通过简略的拉拽操作就把数据刷进去了,能够说,透视剖析对于解决大数据是熟能生巧的。 3、 数据挖掘 EXCEL在数据摸索上的性能远不如业余的BI软件,尽管EXCEL本身提供了不少图形组件,但从效率上来说,EXCEL做数据可视化还是比拟耗时的,每个图形都要通过大量的调整,能力最终失去符合要求的图形。而BI软件就不一样了,具备了十分丰盛的图形组件,只有通过简略拉拽便能够把数据出现进去。上面是我利用Smartbi智剖析去做进去的一个仪表盘,从整体布局来说,整体十分协调,左右也很对称,色彩也十分合乎大家审美,最重要的是还能实现数据动静展现,鼠标点到哪,哪里就会呈现数据。仪表盘的外围价值在于数据摸索,通过图形化的形式的去找出业务上的问题,对于管理者来说,他人给你汇报多少货色都没用,只有看数据就好了,用数据谈话才是硬道理。 人工智能、大数据、云计算和物联网的将来倒退值得器重,均为前沿产业,如果想要走在他人的后面,那就不要老是用EXCEL去做复制粘贴的事件了,好好地去把握和纯熟应用一门大数据的解决办法吧,置信升职加薪是不可企及的事件。

March 15, 2021 · 1 min · jiezi

关于excel:SmartbiEXCEL终于活成了你想要的样子性能已提升10倍

Excel在解决大数据量时顾此失彼的体现,已经让很多用户抓狂,EXCEL性能弱曾经是一个不争的事实。家喻户晓,EXCEL的解决下限是100万行,如果超过了100万行,EXCEL便大刀阔斧了,即便数据量只有几万行,EXCEL也会变得十分卡,对于习惯应用EXCEL的用户来说,这无疑是一个十分头疼的事件。 最近从敌人口中晓得了一个十分厉害的办法,能够帮忙EXCEL解决性能弱的问题,那就是利用插件的模式去连贯数据库,先把文件导入到插件里的本地数据库,而后再回到EXCEL里与数据库进行相连,调用数据库的数据字段,便能够在EXCEL里实现解决大容量数据的性能。为了验证这个办法是否无效,我把这个插件装置在了EXCEL里,随后能够看到工具栏里呈现了一个新的界面。 接下来的几天里我对这个插件进行了简略试用,发现它很不简单,这个插件不仅能够和数据库相连,还能实现其余更加厉害的性能,上面我简略介绍一下这个厉害的EXCEL神器——Smartbi智剖析的excel插件。 1、数据库连贯 随着信息时代的愈发成熟,企业的数据量也在每天呈爆炸式的增长,性能孱弱的EXCEL曾经不能满足大部分企业的需要,因而数据库成了各大企业存储和加工数据的首选。微软也为EXCEL提供了连贯数据库的性能,然而连贯过程较为简单,须要输出的用户名、明码、ip地址都是明文,十分不平安。 这个时候就须要用上咱们的Smartbi智剖析的excel插件了,它在数据库的连贯上提供了十分便当的操作环境,反对本地数据库、关系数据库、多维数据库、NOSQL等市面上支流的数据库端口。连贯过程也非常简单,以MySQL数据库为例,在连贯窗口抉择数据库类型,并填写好连贯串、用户明码,而后点击测试连贯,测试胜利之后点击保留,便实现数据连贯的创立了。 只有连贯好了数据库,就能在EXCEL中通过拖拽的形式调用数据库中的字段,无需再关上宏大的数据源文件了,对于EXCEL用户来说几乎是一个天大的好消息。 2、ETL技术 个别状况下,从各个业务部门汇总过去的数据是非常扩散的,无奈满足数据分析的需要,还要通过进一步的加工解决,最终造成简洁、标准、清晰的样本数据。这个过程通常被称为ETL,也就是对数据进行抽取(Extract)、荡涤转换(Transform)、加载(Load)的过程。在EXCEL上,微软为用户提供了power query的组件,依赖于M语言,能够对数据源进行关联,转置、分拆、过滤等操作,然而power query受引擎性能的局限,且M语言书写不不便,不适宜解决企业级数据。 我更偏向于在业余的ETL工具里实现这个过程,目前在国内用的最多的ETL工具是kettle,然而这个工具的性能相对来说比拟弱,而且呈现的一些bug无奈解决。所以我采纳了Smartbi智剖析里的自助ETL技术去实现这个工作,它在ETL的解决上则提供了自助化的操作界面,容许用户通过简略的鼠标勾选数据字段与查问条件,用户通过简略的拖拽便能够疾速实现数据抽取、荡涤转换与加载的加工过程,而且性能十分强悍。 3、办公自动化 很多小伙伴每天都要用EXCEL解决各类报表,比方汇总各类数据,组合排序,跨表关联计算,纠错解决,审核数据等等重复性工作,每天都把大量的工夫花在了收集数据、复制、粘贴、荡涤数据、转换数据这样的事件上了,而不是把工夫花在业务问题的剖析上, 不仅解决效率低下,而且还容易出错。 Smartbi智剖析利用插件的模式,把EXCEL与数据库进行了完满的交融,这个模式摒弃了传统EXCEL手动更新数据源的办法,而是借助云端弱小的性能,间接在EXCEL中调用数据中的字段,无需手动更新数据源便可主动在EXCEL中实现刷新,真正地实现了EXCEL办公自动化。 4、网页端报表传输 对于工作的小伙伴来说,文件传输总是防止不了的,有些EXCEL文件是其余的一些格局或者体积过大,传输起来非常的不不便。这个EXCEL插件在文件互传上具备独特的劣势,只有把做好的报表公布到WEB端,便能够通过链接或者二维码的形式分享给其他人,接管人能够通过PC端和挪动端两种形式对报表进行查阅,这种高效的数据互传形式进步了团队的合作能力,让办公从此变得更加智能。 5、数据安全 随着大数据技术的倒退越来越成熟,数据在每个企业里所表演的角色也变的更加重要,接踵而至的便是数据安全问题,最让泛滥企业谈虎色变的事件便是数据泄露问题了,一不小心便会给企业造成微小的经济损失,因而越来越多的企业开始器重数据的平安问题。这个EXCEL插件的网页端具备欠缺的平安管理体系,它能够管制用户性能权限、数据拜访权限、资源拜访权限,反对按用户、用户组、角色进行治理,反对多套利用零碎共用同一套用户管理系统,反对多级用户管理体系,能够确保企业数据安全无虞。 以上就是利用EXCEL去解决大数据的办法,如果感觉不错的话,能够依照我说的去进行测试,置信会对你的工作效率有很大的晋升。**

March 12, 2021 · 1 min · jiezi

关于excel:EXCEL应用思迈特软件Smartbi数据可视化终极教程

在大数据倒退越来越迅速的时代,很多企业都依赖数据去做决策,在剖析数据时,须要对数据进行提取、加工和报表出现。事实上,制作一份残缺的剖析报表须要具备十分多的常识,除了工具要十分相熟之外,制作图表的思路也须要十分沉闷。图表国外专家Nathan Yau总结了在数据可视化的过程中,个别要经验的四个过程,在这四个过程中都要重复进行考虑: 你领有什么样的数据;你想表白什么样的数据信息;你会什么样的数据可视化办法;你从图表中能取得什么样的数据信息。 依据以上的图片得进去的信息,能够看出数据分析是一个十分系统性的事件,上面将会从数据提取、报表丑化、报表分享这几个方面离开进行赘述。 数据提取 1、数据源 从各种零碎、erp、手工统计后得出的数据,个别通过二维表的模式进行保留,有题目、字段、行这些信息,如果数据源超过百万行的,EXCEL跑不动须要用到数据库的,能够把数据源导进去Smartbi智剖析云平台里,间接在EXCEL里自在拖拽数据字段进行剖析,十分给力。 2、你想表白什么样的数据信息 销售数据:销售额、销售量、指标达成进度、客单价。。。 财务数据:支出、利润、老本、费用摊派、边际奉献。。。 客户满意度:客户投票量、满意度、参评率、客户画像。。。 人力资源:入职报到率、培训期流失率、岗中流失率、岗中淘汰率。。。 3、数据源加工 工夫:提取周、月、季度、年。。。 文本提取:LEFT、RIGHT等函数截取文本个别文字。。。 匹配表:依据其余表格的信息进行匹配,如数据源只有省份信息没有片区信息,须要利用另一份数据进行信息匹配。。。 4、数据提取 利用公式、透视表等形式失去所需的数据,随后便能够对数据进行报表的制作了。透视剖析能够在EXCEL里操作,也能够在高大上的Smartbi智剖析云平台里进行操作: 报表丑化 1、色调 1.1题目的染色 为达到醒目和与表格内容辨别的目标,行题目通常集体喜爱应用深一些的色彩为表头单元格染色,倡议深底白字: 1.2边框的染色 通常边框的色彩抉择倡议以彩色为主: 1.3字体的染色 字体最罕用的是彩色,但有时为了突出重点,为了显示醒目的数字倡议用深红色: 1.4图形的染色 图形的色彩没有特定的要求,能够尝试一些比拟娇艳显眼的色彩,防止用一些比拟爽朗古板的色彩,倡议色彩:绿色、深蓝色、深灰色: 1.4其余 1.41如果没有特殊要求的前提下,色彩能够自在搭配,整洁慷慨即可,然而某些企业有本人的主色调,例如京东是红色,美团是橙色,携程是蓝色,在设计报表的过程中就要以企业的主色调为主,尽量合乎企业外部的审美需要。 1.42色彩抉择能够到中国色网站上进行阅览,该网站有很多酷炫的色彩能够抉择。 1.43色彩的抉择尽量在感官上给他人一种耳目一新的感觉,造成视觉上的抵触,相邻的两个图形之间能够抉择不一样的色彩,版面上也能够尝试多种色调自在搭配,总的准则就是整洁慷慨,色彩鲜明。 2、文字 2.1字体个别失常抉择微软雅黑,无论是表格还是图形上的文字,该字体在很多企业中十分通用,但该字体如果不受权的话则不能用于商用,那么倡议抉择其余收费的字体,例如思源黑体。 2.2字号:题目的大小个别比注释大一号,题目能够抉择10号或者11号字体,注释能够9号或者10号,但不是所有报表都通用,还得依据具体的状况再进行抉择;个别题目或者图形里的文字能够进行加粗,以示醒目: 3、图形 3.1图形抉择:柱形图、饼状图、折线图、雷达图… 比拟图形抉择:柱状图、条形图、折线图、雷达图; 散布图形抉择:直方图、正态分布图、散点图; 形成图形抉择:条形图、饼状图; 分割图形抉择:散点图、气泡图; 选取准则:让他人容易了解、合乎版面布局 3.2图形丑化 字体:倡议微软雅黑,题目14号字体,标签、数字9号字体,可抉择加粗 色彩:显眼醒目即可 数据标签:数据量较少时可全副显示,如果数据量较多则能够不显示 坐标轴:如果数据量较多时,能够暗藏,腾出局部空间 网格线:零碎默认主动显示,如果不须要能够暗藏 背景图:能够应用两种色彩互相进行搭配 坐标轴格局:边界、刻度线、数字等依据理论状况进行调整 3.3个性化图形 如果只应用罕用的图形,会略显枯燥,通常为了使报表更加高大上,会应用一些比拟个性化的图形,互相进行搭配: 4、布局 ...

March 11, 2021 · 1 min · jiezi

关于excel:思迈特软件SmartbiExcel竟可以处理大数据我惊呆了下巴

长期用EXCEL做表格的人都晓得,无奈解决大数据是咱们心中永远的痛,看着他人一个个都用上了PYTHON、数据库等牛逼的工具,工资还比本人高出了不少,本人却只能用着EXCEL以蜗牛般的速度去解决数据,真是恨本人为什么不早点去学习大数据,这样就能够早点升职加薪了。就拿共事小李来说,工作了5年,只会用EXCEL复制粘贴,如果叫他去做好一份超过百万行的数据表格,他非得给你折腾半天不可,真是急死人。 哎,这样的工作效率怎么能行呢。为了进步本人的业务水平,小李到处去打听学习大数据的培训班,并在网上找了一大堆培训资料。其实这些材料在网上很容易找,而且各种大数据的培训广告打得天花乱坠,百度上轻易一搜大数据这个词,就会进去一堆的信息,无非就是PYTHON,数据库这样的课程。小李就开始去学习了,过了几天之后哭着通知我,这些工具真的是太难学了,没有编程根底基本学不进去,问我有没有更加简略的办法。 简略的方法也不是没有,例如云端就是一个很好的办法,把几百万行甚至是几千万的数据量导进去让云端服务器解决,几秒钟就能得出计算结果,比写代码快多了,无疑是最好的抉择。云端这个词可能大家都有听过,例如阿里云,网易云,百度云等等,这些公司都在云端有一个十分弱小的云端数据库,用来专门去做数据存储和数据处理的。云端数据分析也是一样的情理,通过云端弱小的计算能力,能够在十分短的工夫内把一份超大容量的数据实现拆解,无需简单的操作,也不须要写语句,对于不会用数据库或者写代码的人来说,几乎是一个天大的福音。 以我用过的Smartbi大数据分析平台为例,就是用云端解决大数据的最好抉择。这里有两个利用场景能够抉择,第一个是把EXCEL或者CSV文件间接导进去云端,这样的益处就是不必关上EXCEL文件,间接在云端就能够实现透视剖析,如果在电脑里关上一份千万行数据量的EXCEL文件,你的电脑可能会卡死甚至解体。第二个是用Smartbi连贯你本人的数据库,如果你有在用Oracle,Mysql或者其余数据库的话,就能够互相能够建设一个连贯,让你的数据量在云端上进行展现,并得出剖析后果。 用过数据库的人都晓得,用EXCEL连贯数据库是有一点小简单的,会把你折腾半天,然而我用Smartbi连贯数据库的话,只须要几秒钟就行了。连贯好之后,关上一个空白的EXCEL文件,在EXCEL的界面里会呈现一个数据集面板,外面能够找到你保留在云端里的数据。而后通过拉拽的形式,便能够把数据字段拖曳到EXCEL里进行剖析,齐全不须要关上一个超大容量的EXCEL文件。 这样能不能齐全实现报表自动化呢?答案是能够的。因为数据源连贯之后,云端能够实时进行数据更新,只有是数据产生了任何扭转,云端都能够辨认进去。如果须要在本地的数据库追加EXCEL数据,能够在这个界面里抉择增加到已有表,便能够实现追加数据的操作。 解决大数据还得须要一个弱小的仪表盘展现工具,因为数据量太大,你还是用动态报表去做可视化的话,会十分的艰难,因而动静报表是最好的抉择。既能够实现动态数据的展示,又能够实现丰盛的图形成果,是做数据可视化的最佳抉择。以下图为例,EXCEL如果要做出这样的成果恐怕是十分艰难的。 通过以上对大数据概念的诠释,置信你曾经理解了大数据要解决的问题是什么。随着时代的倒退,EXCEL曾经没有方法去为你解决所有的问题,因而把握一门大数据处理的工具是必须要做的事件,这会让你在工作中熟能生巧,得心应手。如果你把这门常识吃透了,置信对于退职场上的你来说无疑是锦上添花,升职加薪更是不可企及。

March 11, 2021 · 1 min · jiezi

关于excel:厌倦了EXCEL想玩点新花样Smartbi教你利用Python做数据筛选

python是一门非常简单和实用的数据分析工具,咱们晓得其实能够利用python对EXCEL数据做简略的筛选。明天咱们利用ETL+Python的搭配组合,对EXCEL数据进行深层次的加工,这一次咱们要做的是高级筛选,请跟着我一起学习吧。 数据源 咱们用电商订单明细表: EXCEL筛选 咱们回顾一下上一篇文章里的数据需要,第一个是依据订单日期筛选2010年的订单,第二个是依据订单等级去筛选高级的订单,这一次咱们把筛选条件进行降级,减少一个条件:在原先两个筛选条件的根底上,筛选出利润金额前10的订单。如果在EXCEL里操作的话,能够利用公式或者本身的筛选性能去实现,然而在python又是怎么实现的呢? 咱们能够在pycharm等软件上写python脚本去实现,然而我举荐大家用Smartbi智剖析的ETL性能去实现,Smartbi智剖析的ETL界面里也提供了python脚本的编写页面,并且很多简略的需要通过ETL就能实现,无需撰写简单的代码,非常适合编程小白。 加载数据 关上Smartbi智剖析里ETL界面,咱们先连贯好数据源,我曾经提前把EXCEL文件导入到了Smartbi智剖析的零碎里,而后把关系数据源拉拽到展示区里,并在左边找到数据源寄存的门路: 加载实现后,咱们能够对数据源进行预览: 条件过滤 当实现了数据连贯后,接下来就能够利用Smartbi智剖析ETL里自带的python脚本对数据进行各种解决,咱们先把python的组件拉拽到两头的展示区,并与下面的关系数据源进行相连: 以下脚本是Smartbi智剖析自带的脚本,曾经提前装置好了pandas和numpy的库,前面的函数也写好了一部分代码,只有依据以下脚本进行扩大,便能够在ETL上利用python进行数据荡涤: 在输出python脚本之前,咱们再明确一下要实现的需要,其中后面两个条件是和上次一样的,咱们无需进行改变,间接复制脚本过去即可,如果不懂的能够查看我前一篇文章。第三个条件须要做的是筛选利润额前10的订单,这里咱们援用pandas中的sort_values函数进行排序,原理相似于SQL中的order by,能够将数据集按照某个字段中的数据进行排序,前面接ascending=False,即对数据进行降序排列,head(10)代表的是取前10的值: 咱们看一下python脚本执行后的成果,年份这一列把2010年给筛选进去了,订单这一列筛选的是高级的订单,订单利润这一列的数据依照降序把前10的数据给筛选进去了: 数据输入 实现python的筛选程序后,咱们把执行筛选后的表格进行保留,能够抉择保留在数据库中,也能够保留在数据集里,这里我仍旧抉择数据集的保留形式,因为不便在EXCEL里进行调用: 回到EXCEL里,点击EXCEL插件里的“视图”,在左边会呈现Smartbi智剖析的数据集面板界面,点击下拉菜单,便能够找到保留在云端的数据集,也能够间接输出文件名进行搜寻: 点击EXCEL工具栏上的“刷新”,数据集里的字段便会显示在EXCEL里,咱们就能够利用这些数据在EXCEL里进行数据分析了:

March 9, 2021 · 1 min · jiezi

关于excel:再见-VBA神器工具统一-Excel-和-Python

大家好,我是东哥。 常常给大家举荐好用的数据分析工具,也收到了铁子们的各种好评。这次也不例外,我要再举荐一个,而且是个爆款神器。 Excel和Jupyter Notebok都是我每天必用的工具,而且两个工具常常协同工作,始终以来工作效率也还算不错。但说切实,毕竟是两个工具,应用的时候必定会有一些切换的老本。 最近,在逛GitHub忽然发现了一款神器「PyXLL-Jupyter」,它能够完满将Jupyter Notebook嵌入到Excel中!是的,你没听错,应用它咱们就可在Excel中运行Jupyter Notebook,调用Python函数,实现数据共享。 一、装置首先,想要在Excel中运行Python代码,须要装置PyXLL插件。PyXLL能够将Python集成到Excel中,用Python代替VBA。 先用 pip 装置 PyXLL。 pip install pyxll而后再用PyXLL独特的命令行工具装置Excel插件。 >> pyxll install装置好了PyXLL在 Excel中的插件,下一步就是装置pyxll-jupyter软件包了。应用pip装置pyxll-jupyter软件包: pip install pyxll-jupyter装置结束后,启动Excel,将在PyXLL选项卡中看到一个新的Jupyter按钮。 单击此按钮可在Excel工作簿的侧面板中关上Jupyter Notebook。该面板是Excel界面的一部分,能够通过拖放操作勾销停泊或停靠在其余地位。 在Jupyter面板中,你能够抉择一个现有的Notebook或创立一个新的Notebook。创立一个新的Notebook,抉择新建按钮,而后抉择Python 3。 二、应用办法这样做有什么用途呢? 1、Excel和Python共享数据比方,咱们要将数据从Excel导入Python。 因为Excel和Python曾经在同一过程中运行了,所以在Python中拜访Excel数据以及在Python和Excel之间切换十分快。 更牛X的是,pyxll-jupyter还独自附带了一些IPython魔法函数,输出后一键即可实现同步。 %xl_get 将Python中的数据移到Excel,也是同理,非常简单。 无论是应用Python先加载数据集,再传输到Excel,还是其它模式,从Python复制数据到Excel非常容易。 %xl_set 当然,%xl_get和%xl_set都附带参数选项能够自定义导入导出规则。 2. 在Excel中应用Python绘图PyXLL的另一大用处就是它集成了简直所有支流的可视化包,因而咱们能够在Excel中利用这些可视化包随便绘图,包含matplotlib、plotly、bokeh和altair等。 %xl_plot 同样,应用魔法函数%xl_plot在Excel中能够绘制任何的Python图。任何一个受反对的可视化包也可进行绘图而后传递图形对象到Excel中,比方上图中应用pandas的绘图成果就很好。 %xl_plot df.plot(kind='scatter')3. 从Excel调用Python函数应用Excel离不开函数,而当咱们须要一些简单性能时,自带函数未必能满足咱们的需要。 通过PyXLL,咱们能够间接在Excel中调用Python函数,并对其进行实时测试。这就防止了Excel和Jupyter之间的来回切换老本,有点像dataframe的apply用法,写个函数间接与Excel完满交融。 函数写好后,还可将其增加到PyXLL Python我的项目中。这样当前每次都能够复用实现雷同性能,几乎不要太香! from pyxll import xl_func@xl_funcdef test_func(a, b, c): return (a * b) + c比方,输出以上代码在Jupyter中运行后,Python函数将立刻可被Excel工作簿调用。 不只是简略的函数,还能够将整个数据作为pandas的DataFrames传给函数,并返回任何的Python类型,比方numpy array、DataFrames,甚至还能够通过给@xl_func装璜器一个签名字符串来通知PyXLL输入什么类型。例如,以下函数: from pyxll import xl_func# 装璜器签名通知 PyXLL 如何转换函数参数和返回的值@xl_func("dataframe df: dataframe<index=True>", auto_resize=True)def df_describe(df): # df 是一个从数据集里创立的 pandas DataFrame 传递给函数 desc = df.describe() # desc 是新的 DataFrame(PyXLL转换为一组值并返回给Excel所创立的) return desc当初能够编写简单的Python函数来进行数据转换和剖析,然而能够协调在Excel中如何调用或排序这些函数。更改输出会导致调用函数,并且计算出的输入会实时更新,这与咱们冀望的一样。 ...

December 31, 2020 · 1 min · jiezi

关于excel:话题热议有没有能替代Excel的数据处理软件

说到数据分析工具,脑海里第一闪现的就是Excel,但你要问我有没有齐全代替Excel的数据处理软件。我只能答复说:有必定是有,然而能不能超过Excel,我不敢打包票(须要大家本人去试用体验过后,能力得出结论,毕竟我一个人说了不算),只能说市场上存在的数据处理软件必定也有其亮点。那么,数据处理软件的亮点是什么?上面给大家简略解说一下。 要想晓得一款数据处理软件能不能超过或代替Excel,首先咱们要理解Excel的次要特点及作用。 一、Exce次要的特点: 1、表格制作:简略的表格录入、制作、丑化。 2、透视表:实现数据透视的成果,能够说学会数据透视表,根本能够解决80%的工作。 3、公式:通过公式能够进行数学计算。 4、统计分析:Excel里的数据分析能够实现描述统计、假设检验、抽样等统计分析的性能,只有用的好,不逊色于业余的统计分析软件。 5、图表:用Excel作图操作简略。简略的日报/月报中以及本人剖析时Excel的图表齐全能够满足咱们的需要。然而当要进行业余的展现时,图表的丑化就显得尤为重要,而用Excel去丑化图表,也不是不行,只是要用到很多偏门的小技巧,没必要花那么多工夫,现成有可用的工具。 6、VBA:还能够用VBA编程实现更高级简单的需要。 7、插件:Excel还能承载很多有用的插件,比方PowerQuery、PowerMap、PowerView等,来辅助咱们实现更为弱小的数据分析性能。 总的来说,Excel能够说是数据分析根底以及必备的工具,在咱们日常办公中,必定少不了要用到Excel。然而Excel尽管有其劣势,但同时也存在有余,不然大家也不会想要找其余的数据处理软件来代替Excel。 二、Excel常见的不足之处: 1、如果是把数据库或其余平台的数据导入到Excel进行剖析时,会很卡。 2、如果存在大量数据时,剖析数据所破费的工夫老本也是很大的,几个小时是常有的事。 3、Excel的学习老本高,很多深层次的性能,咱们本人摸索起来太慢了。 4、数据分析图表不太好看,更确切的说应该是不合乎现代化审美需要。 综合以上几个Excel特点和不足之处。上面咱们来说说数据处理软件的亮点。 三、数据处理软件的亮点介绍! 不晓得大家有没有用过低代码(零代码)开发平台,低代码(零代码)开发目前在国内曾经非常欠缺,它能依据企业需要,低成本高效率的搭建数据处理软件,通过可视化设计器,以拖拽的形式疾速构建应用程序。艰深点讲,就是能够间接点点按钮就能出后果的事件,像很多公司的财务零碎、后勤零碎、数据图表剖析都能够分分钟搭建,而且计算速度十分快。在大量的数据背后也齐全感觉不到卡顿。简单的性能也能迅速上手。数据处理剖析基本上是一键搞定。 目前在用敌人举荐的工具织信集体免费版,刚开始抱着尝试的心理,把excel数据上传到织信数据处理软件上,而后进行剖析,莫名发现不仅不卡,而且做进去的可视化成果还不错。起初发现能够间接对接一些数据源和数据库,果决不去麻烦地传Excel了,而是间接在织信数据处理软件上间接对接须要剖析的数据源了,因为这样数据会每天实时更新,数据就不必传来传去做剖析,每天花点工夫看数据就行了,很省心。 说到数据处理剖析方面,我感觉从某些方面来讲,织信能够成为代替Excel进行图表丑化工作的一个工具。它将数据计算和好看的图表完满地交融在一起,能够在几分钟内生成好看的图表、坐标图、仪表盘与报告。是用来疾速剖析、可视化的弱小工具,偏差商业剖析。 特点: 1、轻松整合,易上手。 2、交互性,相似于Excel数据透视表/图的性能,可进行交互。 3、好看的图表,轻松制作好看的仪表盘、坐标图、甘特图等。 比方我本人做的集体数据处理软件利用,它能够将集体感兴趣的内部数据,批量导入,进行存档,剖析与统计。你所上传的数据能够是:体育赛事数据,历史数据,各种统计数据。反对excel导入,网页内容导入,文本导入等形式。 四、最初论断: 织信数据处理软件是否可能替换Excel?集体认识是:若是大家是想用某个工具搭建多个利用零碎。比方:OA办公、crm客户治理、ERP企业治理、绩效治理、人事管理、数据业务剖析方面。那织信比Excel好用。毕竟能够跨零碎协同操作。 正当并且无效地使用数据处理软件,不仅能够让咱们工作高效地运行,还能最大水平保障工作指标的达成。我举荐应用织信低代码开发平台,它内置了100+的利用模板,笼罩数据图表、我的项目、绩效、人事、企业服务、集体及组织等多个利用场景。领有在线搭建性能,点击一键装置,即可收费试用。5人以下一生收费应用。是帮忙企业开启数字化转型的重要引擎。

December 23, 2020 · 1 min · jiezi

关于excel:辅助-Excel-的数据计算-addins

Excel 中遇到较简单的运算,数据分析师常会用 add-ins 辅助解决。本文考查了一些常见的 add-ins,从部署难度、开发难度、晦涩水平等方面进行深度比照,并着重考查了数据计算能力,esProc 在这些 add-ins 中的体现绝对杰出。点击辅助 Excel 的数据计算 add-ins理解详情。 对于大多数简略运算,Excel都提供了不便的实现伎俩,有时是易用的函数,有时是直观的按钮或菜单。但咱们还是会遇到的一些较简单或非凡的运算,依附Excel自身很难实现。Excel提供了add-in接口,能够通过这个接口执行内部程序,从而借助内部语言或脚本实现这些较简单或非凡的运算,达到辅助Excel的目标。 上面,让咱们深刻理解一些Excel的常见数据计算add-ins,并评估它们的计算能力。 Excel DNAExcel DNA是晚期呈现的一款Excel add-in,它能够把程序员写好的动静库函数放到Excel里应用,动静库能够应用C#/F#/VB.net等语言等编写。 具体用法上,Excel DNA和其余所有add-ins都相似,首先要编写自定义函数。比方上面C#编写的代码中(引自Excel DNA官网),MyFunction是自定义函数名。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using ExcelDna.Integration; namespace MyLibrary { public class Class1 { \[ExcelFunction(Description="few people use this way!")\] public static string MyFunction(string name) { return "Bonjour" + name; } } } 下面的代码须编译成动静库,之后能力在Excel中应用。 接下来,个别要配置自定义函数和add-in的关系。比方上面的DnaSample.dna文件,表明本add-in的名字是"My name",对应的动静库是Mylibrary.dll(含有多个自定义函数)。 <DnaLibrary Name="My name" RuntimeVersion="v4.0"> <ExternalLibrary Path="Mylibrary.dll" /> </DnaLibary> 最初在Excel中配置该add-in,就能够在单元格中调用MyFunction这个函数了,如下: ...

November 28, 2020 · 2 min · jiezi

关于excel:Excel-文件结构化解析示例

【摘要】 本文介绍如何将各种构造的 Excel 文件解析成结构化数据,如一般行式、简单表头、自在格局、穿插表、奴才表、大文件等,并用 esProc SPL 举例实现。请点击Excel 文件结构化解析示例理解详情 本文将介绍如何进行各种格局的Excel文件结构化解析,如一般行式、简单表头、自在格局、穿插表、奴才表、大文件等,并提供用 esProc SPL 编写的代码示例。esProc 是业余的数据计算引擎,其采纳的 SPL 中有欠缺的 Excel 文件处理函数,进行结构化解析及后续的计算、入库等操作十分不便。 1. 一般行式这是一种最简略的文件格式,文件中每行都是一条数据记录,更常见的是第一行是列题目。 示例:在学生问题文件scores.xlsx中,查问各班语文均匀问题。局部数据如下图: esProc SPL脚本如下: 2. 简单表头少数时候,Excel文件的表头格局并不简略,往往是由多行形成的,比方有表题目、项目名称、填表人、填写日期、页码等信息。解析这种格局的文件时,须要跳过简单的表头,指定从数据行的地位开始读取,而后指定结构化后的数据各列的列名。 示例:在我的项目造价文件itemPrices.xlsx中,计算我的项目总造价,局部数据如下图: esProc SPL脚本如下: 3. 自在格局一条数据记录扩散在多行,字段列值单元格紧跟在列名单元格前面或上面,可能有跨列或跨行的合并单元格。但每条记录所占的行数以及对应行构造是雷同的。循环读取时要以每条记录所占行数为单位组成一条记录。 示例:把自在格局的员工信息文件employee.xlsx存入到数据库表employee中,局部数据如下图: esProc SPL脚本如下: A1创立列名为“ID、Name、Sex、Position、Birthday、Phone、Address、PostCode”的空序表 A2关上Excel数据文件 A3定义雇员信息所在单元格列号序列 B3定义雇员信息所在单元格行号序列 A4用for循环读取每个雇员信息 B4 A3.(~/B3(#))先算出以后雇员单元格编号序列,再读出这些单元格值组成雇员信息序列。第一次循环时为\[C1,C2,F2,C3,C4,D5,C7,C8\],第二次循环时为\[C10,C11,F11,C12,C13,D14,C16,C17\]……每次行号加9。$\\[A2.xlscell(\\]与"A2.xlscell("雷同,都是示意一个字符串,它的益处是在IDE中编写程序时,如果A2单元格的编号产生了变动,$\[A2.xlscell(\]中的A2会主动变动,比方在A2前插入了一行,这个表达式就会变成$\[A3.xlscell(\],而用引号的话,就不会主动变了。 B5判断雇员ID值是否为空,为空则退出循环,完结读数 B6将一条雇员信息存入A1序表尾 B7让雇员信息的行号序列都加上9,读取下一条雇员信息 A8-A10连贯数据库,将雇员信息存入数据库表employee,敞开数据库 读取进去的A1单元格数据如下图所示: 4. 穿插表穿插表是统计学中常见的一种矩阵式表格,能够清晰地表白两个变量间的数量关系。穿插表数据逐行读入后,须要以某个列变量为基准,另一个变量及穿插值进行行转置;或者以某个行变量为基准,另一个变量及穿插值进行列转置。 示例:将订单地区与货运形式穿插表cross.xlsx文件解析成结构化数据,文件数据如下图所示。 esProc SPL脚本如下: A3格的局部数据如下图所示: 5. 奴才表每个sheet是一条主表记录,同时sheet中也蕴含N条子表记录。文件中有多少主表记录,就有多少个sheet。对这种奴才表构造的数据,须要创立两个数据表别离保留主表和子表的记录。 示例:在员工信息登记表文件staff.xlsx中,每个sheet有员工信息及他的家庭成员信息,请将员工信息及家庭成员信息别离解析成两个结构化数据表。其中一个sheet如下图: esProc SPL脚本如下: ...

November 28, 2020 · 1 min · jiezi

关于excel:生成各种格式的-Excel-文件示例

【摘要】本文介绍如何将经各种渠道得来的结构化数据主动生成各种格局的 Excel 文件,如单纯导出数据、导出大量数据、指定显示属性、固定行列填充、动静条件显示属性、分组带明细及统计、穿插统计表等,并用 esProc SPL 举例实现。请点击 生成各种格局的 Excel 文件示例 理解详情 在数据处理时,有时要把查问、剖析计算、统计、数据采样等各种渠道得来的结构化数据,用程序主动生成各种格局的Excel文件。 本文将别离针对单纯导出数据、导出大量数据、指定显示属性、固定行列填充、动静条件显示属性、分组带明细及统计、穿插统计表等介绍实现办法,并提供用 esProc SPL 编写的代码示例。esProc 是业余的数据计算引擎, SPL 中有欠缺的 Excel 文件导出函数,将结构化数据导出成 Excel 十分不便。本文不探讨要导出的数据如何得来,假如它曾经存在一个文本文件里了。 1. 单纯导出数据1.1 导出新文件将列名导出到Excel文件的第一行,第二行开始导出数据记录,每行一条记录。 示例:将订单表数据导出到一个新的Excel文件orders.xlsx,esProc SPL脚本如下: 导出时如果文件不存在,会主动创立文件。函数xlsexport的参数中,能够指定须要导出的列,本例中没有指定,则导出所有的列;还能够指定导出数据的sheet名字,本例没有指定,则导出到第一个sheet中。 导出后的orders.xlsx局部数据如下图所示: 1.2 追加数据Excel文件曾经存在,要将新的数据追加在已有数据的前面。此时只须要追加数据记录,不必再导出列名了。 示例:将今日新减少的订单表数据追加到原有的orders.xlsx中,esProc SPL脚本如下: 1.3 导出到指定 Sheet导出数据时,指定保留数据的Sheet的名称。 示例:将来自Shantai公司的订单表数据导出到orders.xlsx文件里名为Shantai的Sheet中。本例中只导出指定的列数据,并批改某些列名,esProc SPL脚本如下: 导出后的orders.xlsx局部数据如下图所示: 2. 导出大量数据当有大量的、不能一次性全副载入内存的数据须要导出时,要用游标分批读入数据,再用流的形式将数据写入OpenXml格局(即扩大名为xlsx)的Excel文件,只需占据大量内存。Excel限度一个sheet最多只能寄存1048576行数据,所以当导出数据行数超过此限度时,咱们须要新减少一个sheet来保留。 示例:将大数据订单表导出到big.xlsx文件中,esProc SPL脚本如下: 导出后的big.xlsx最初几行数据如下图所示: 本例中导出了123663条数据记录,其实用这种形式能够导出任意条记录(不过得保障硬盘存储空间短缺)。 3. 指定显示属性除了间接导出数据,有时还心愿生成的excel文件可能显示得比拟好看,比方能够指定字体、色彩、背景色、对齐形式、显示格局等。这时须要事后建好这个excel文件(模板),定义好须要的这些显示属性,而后再向这个文件中导出数据,定义好的显示属性就会随之出现。 示例:把订单表数据导入到orders.xlsx中,并按如下图所示格局显示: 本例将多种预约义显示属性都集中在一起作示范,显示比拟芜杂,仅仅为了演示性能,没有从好看上登程去设计。esProc SPL脚本与1.1节雷同。 导出后的Excel文件如下图所示: 4. 固定行列填充有一个行列数和单元格格局都固定的Excel文件,外面有些空单元格,须要把相干数据填写到这些格子里,这要求提供往单个单元格填写数据的性能。在数据填报业务中会常常用到。 示例:某基金公司总公司向分公司下发了一张excel表格,要求分公司填入它的相干数据后回传给总公司,下发的excel文件如下: esProc SPL脚本如下: ...

November 28, 2020 · 1 min · jiezi

关于excel:esProc-利用剪贴板强化-Excel-计算

遇到 Excel 难以实现的简单或非凡运算时,可先用剪贴板将数据复制到 esProc,利用 esProc 弱小的计算能力实现,这种形式比 add-ins 有更多长处,具体场景和代码解析请点击esProc 利用剪贴板强化 Excel 计算 遇到Excel难以实现的简单或非凡运算时,可先用剪贴板将数据复制到esProc,利用esProc弱小的计算能力实现,再用剪贴板返回Excel。剪贴板形式比传统的add-ins形式部署更简略,操作更顺滑,开发时不影响剪贴板失常应用,且反对多个源片区和后果片区。 根本用法esProc提供了函数clipboard,可实现剪贴板的根本用法。上面用“各科前3名的学生”为例进行阐明。 Excel中解决前的数据如下,其中A列是学生姓名,B-D列别离是数学、英语、物理问题。 计算指标:求出每学科问题前3名的学生,并追加到本科目问题之后。 这个计算指标须要用到记录汇合TopN、按序号拼接等性能,Excel自身不好实现,但借助esProc就容易多了。先在Excel中选中源片区(A1:D10),按下ctrl+C,复制到零碎剪贴板,关上集算器IDE,编写并执行如下脚本: 下面代码中,clipboard函数有两种状态,其中无参数调用该函数时,可返回剪贴中的字符串,如A1格;以变量或格名为参数调用该函数时,可向剪贴板写入字符串,形如A6中的clipboard(var)。 执行上述脚本后,在Excel的B11格用ctrl+V,即可将剪切板中的数据复制到B11-D13,如下: 随便编辑脚本然而,咱们在编辑调试脚本时,保不齐会用一下复制粘贴,这时候就把剪贴板的内容冲掉了,再执行clipboard()时, 返回的内容就是方才编辑的代码,这样就无奈实现计算了,只能再回到Excel去从新复制,有点麻烦。 针对这个问题,esProc提供了clipboard@e()函数,选项@e示意始终返回第一次从Excel复制到剪贴板中的数据。上面让咱们试一下。 在“各科前3名的学生”这个例子中,假如咱们曾经从Excel复制了数据,并写完了脚本。此时编辑脚本,将A3、A4挪动到B2、B3,再执行脚本时,就会因为A1中的clipbaord()取到谬误数据,而导致A2报错。当初批改代码,在A1应用方才提到的clipboard@e(),则挪动代码后可正确执行。编辑后的代码如下: 多个后果片区clipboard(…)只能返回一个后果,但有些较简单的运算可能须要返回多个后果,这该怎么办呢? 其实 ,在esProc的结果显示区能够间接把多个格值(或变量值)别离复制到剪贴板,并顺次返回Excel。 上面用 “各科前3名和每个人的超过指标”为例进行阐明。 计算指标:在学生成绩单的根底上,不仅在各科目上面追加本科目前3名的学生,而且须要新加一列target,计算出比自己总分略高的3名学生的名单列表,作为自己该当超过的指标。留神,有些人的超过指标有余3人,每个超过指标之间须用>号连贯。 先在Excel中选中源片区(A1:D10),按下ctrl+C,复制到零碎剪贴板,关上esProc IDE,编写并执行如下脚本: 上述代码中,A3存储后果片区1,即本科目前3名的学生;A4存储后果片区2,即每个人的超过指标。另外该当留神到,代码中毋庸export()和clipboard(…)。 上面将计算结果返回Excel。先点击片区1,再点击右侧对应的“copy data”按钮,如下图: 在Excel 的B11 格用ctrl+V ,即可将片区1 复制到B11-D13 ,如下: 再点击脚本中的片区2,按住shift的同时,点击右侧对应的“copy data”按钮,之后在Excel的的E1格按下ctrl+V,即可将片区2连带列名复制到E1:E10。如下所示: 在上述操作中,咱们可通过shift管制计算结果是否带列名,这是esProc的独有形式,其余计算工具不具备此项性能。 多个源片区解决了多指标的问题后,咱们很容易联想到有多个源的问题。计算可能须要应用Excel的多个源片区,但clipboard只能放弃最新复制的那一片,这又该怎么办? 有方法,能够把剪贴板内容间接简单到格子外面去。 上面用 “查问合乎指定条件的订单”为例进行阐明。 Excel中有两个sheet,订单明细和员工名单,其中订单明细如下: 员工名单如下: 计算指标:查问出最近days天内或订单属于部门列表depts的数据,须要的列有订单编号、日期、金额、销售员名字、部门名称。其中days是内部参数,每次执行时都能够输出不同的值,比方输出30示意查问30天内的订单;depts也是内部参数,比方["Markeding","Finance"]。这个计算指标波及动静查问和多键值查问,Excel自身不好实现,但借助esProc就容易多了。 首先,在Excel中选定片区“订单明细”,连带列名一起复制粘贴到esProc脚本的A1单元格;同样地,将片区“员工名单”复制到esProc脚本的A1单元格。如下图: 留神,肯定要进入A1格的编辑状态能力进行复制,不然会把剪贴板的内容填进一大片格子,后果可能变成这样: 这就不好了,占有区域太大,会影响代码布局。 如果操作正确,A1/A2分外观上只出现很小一部分数据,点击后才会出现残缺数据,这是网格局代码的独特之处,适宜在不影响浏览和代码布局的状况下复制大片数据。 复制完两个源片区后,持续编写脚本,期间可屡次运行脚本,可手工操作剪贴板。最初代码如下: ...

October 14, 2020 · 1 min · jiezi

关于excel:Looking-for-the-Best-Excel-Addins

Data analysts often turn to add-ins when they encounter complicated computations in Excel. Here we examine and compare some common add-ins in terms of deployment process, development efficiency, application fluidity and, particularly, computational capabilities. esProc shows more excellent performance than others. Looking Looking for the Best Excel Add-ins for details. Excel provides convenient methods, including easy to use functions and intuitive buttons and menus, for performing simple computations. But it’s hard for it alone to accomplish complicated computations and certain special ones. So it offers the add-in interface through which an external application can be connected to use their language or script to help Excel handle those computations. ...

September 4, 2020 · 9 min · jiezi

关于excel:把-Excel-透视表搬到-WEB-上

【摘要】 Excel 透视表 - 只有遇见就未曾遗记!依据原始数据勾勾选项拖拖拽拽,剖析数据嗖一下就进去了,这么好用的货色怎么能移到 WEB 上呢?去乾学院看个到底:把 Excel 透视表搬到 WEB 上! 提起 Excel 肯定都不生疏,尤其是外面的数据透视表,对于须要进行聚合剖析的状况,依据原始数据勾勾选选就能实现,用起来是倍儿爽吧。 那么,操作起来这么省心的性能要是能移到 WEB 上,嵌入俺的应用程序里,是不是就完满了?so easy! 雷锋同志马上来教你做这事儿。 配角退场——润乾报表多维分析! 上面就先以 Excel 文件作为数据源,与各位小伙伴分享一下多维分析的利用案例,欢送各位热烈围观,优雅吐槽: Excel 文件内容为如下: 这个格局很一般,第一行是题目,前面就是一行行的数据了。 不论这个 Excel 数据文件是在服务器上还是在本地,润乾多维分析界面都能帮你轻松搞定!话不多说,间接看步骤: 关上润乾报表多维分析界面: 点击菜单中的【数据文件】按钮,弹出【关上数据文件】窗口,抉择数据文件。 对于本地文件, 能够点击【关上本地】按钮,找到并应用保留在本地任意地位的数据文件。 对于服务器文件, 能够点击【关上服务器文件】按钮,关上位于服务器指定目录下的所有数据文件。这个目录门路要在 "[demo 利用根目录]/raqsoft/guide/jsp/olap.jsp" 中增加 JS API 进行指定,如下图所示。 抉择好数据文件后,数据集就创立实现了,多维分析最重要的一步也就 ok 了。 接下来就是业务人员自在驰骋的工夫了,随便在简单条件中拖拽表头和指标,想查什么查什么,想算什么算什么。数据透视表中能做的,俺们的 WEB 应用程序也一样能做啦。哈哈,从单机利用一步跃升 Web 环境是不是更爽了! 除了上述所说的通过页面菜单导入数据文件的办法外,还有一种更简略的用法,只有在 URL 里把要剖析的数据文件传进来就能够。比方把 data.xls 放到 "【Web 利用根目录】 WEB-INF\files\fileData\" 目录下,拜访剖析页面时间接在前面追加上文件名就能够了。如:…\raqsoft\guide\jsp\olap.jsp?dataFile=【Web 利用根目录】 WEB-INF\files\fileData\data.xls。 ...

July 24, 2020 · 1 min · jiezi

关于excel:把-Excel-透视表搬到-WEB-上

【摘要】 Excel 透视表 - 只有遇见就未曾遗记!依据原始数据勾勾选项拖拖拽拽,剖析数据嗖一下就进去了,这么好用的货色怎么能移到 WEB 上呢?去乾学院看个到底:把 Excel 透视表搬到 WEB 上! 提起 Excel 肯定都不生疏,尤其是外面的数据透视表,对于须要进行聚合剖析的状况,依据原始数据勾勾选选就能实现,用起来是倍儿爽吧。 那么,操作起来这么省心的性能要是能移到 WEB 上,嵌入俺的应用程序里,是不是就完满了?so easy! 雷锋同志马上来教你做这事儿。 配角退场——润乾报表多维分析! 上面就先以 Excel 文件作为数据源,与各位小伙伴分享一下多维分析的利用案例,欢送各位热烈围观,优雅吐槽: Excel 文件内容为如下: 这个格局很一般,第一行是题目,前面就是一行行的数据了。 不论这个 Excel 数据文件是在服务器上还是在本地,润乾多维分析界面都能帮你轻松搞定!话不多说,间接看步骤: 关上润乾报表多维分析界面: 点击菜单中的【数据文件】按钮,弹出【关上数据文件】窗口,抉择数据文件。 对于本地文件, 能够点击【关上本地】按钮,找到并应用保留在本地任意地位的数据文件。 对于服务器文件, 能够点击【关上服务器文件】按钮,关上位于服务器指定目录下的所有数据文件。这个目录门路要在 "[demo 利用根目录]/raqsoft/guide/jsp/olap.jsp" 中增加 JS API 进行指定,如下图所示。 抉择好数据文件后,数据集就创立实现了,多维分析最重要的一步也就 ok 了。 接下来就是业务人员自在驰骋的工夫了,随便在简单条件中拖拽表头和指标,想查什么查什么,想算什么算什么。数据透视表中能做的,俺们的 WEB 应用程序也一样能做啦。哈哈,从单机利用一步跃升 Web 环境是不是更爽了! 除了上述所说的通过页面菜单导入数据文件的办法外,还有一种更简略的用法,只有在 URL 里把要剖析的数据文件传进来就能够。比方把 data.xls 放到 "【Web 利用根目录】 WEB-INF\files\fileData\" 目录下,拜访剖析页面时间接在前面追加上文件名就能够了。如:…\raqsoft\guide\jsp\olap.jsp?dataFile=【Web 利用根目录】 WEB-INF\files\fileData\data.xls。 ...

July 24, 2020 · 1 min · jiezi

openpyxl给excel填充颜色

需求介绍本人的excel数据是之前通过pandas导出的,现在有个需求就是对excel某一列的每个单元格的值进行判断,如果这个值在某一区间内,那么就给这个单元格填充响应的背景颜色。在使用pandas的过程中发现pandas好像并不能实现此功能,所以在假期期间学习了一下openpyxl,使用它操作excel真是太爽了。数据形式 代码from openpyxl import load_workbookfrom openpyxl.styles import PatternFillwb = load_workbook("airquality.xlsx")# 默认选择第一张sheet表ws = wb.active# 选取数据区cells = ws.iter_rows(min_row=2, min_col=6, max_col=6)# 构建颜色对象,start_color表示前景色,end_color表示背景色。green_fill = PatternFill("solid", start_color='00E400')yellow_fill = PatternFill("solid", start_color='FFFF00')orange_fill = PatternFill('solid', start_color='FF7E00')red_fill = PatternFill('solid', start_color='FF0000')pink_fill = PatternFill('solid', start_color='99004C')maroon_fill = PatternFill('solid', start_color='7E0023')for i in cells: # 每行的内容是元组,每个元组只有一个单元格,所以取第一项的value,然后转为int型 value = int(i[0].value) if value <= 50: i[0].fill = green_fill elif 50 < value <= 150: i[0].fill = yellow_fill elif 150 < value <= 200: i[0].fill = orange_fill elif 200 < value <= 250: i[0].fill = pink_fill else: i[0].fill = maroon_fillwb.save("new_sheet.xlsx")wb.close()最后处理过后的excel为这个样子。 ...

June 25, 2020 · 1 min · jiezi