.net 从txt中读取行数据_【VBA项目】从指定文件中读取数据并绘制图表
VBA 是一种很久远的编程语言,但并不过时。在满足以下两个条件时,借助 VBA 可以极大的提升生产率,降低出错率:
- 你的电脑上不允许自主安装软件;
- 你需要执行的工作中大部分的步骤都是固定且重复的。
项目背景
近期接到一个工作任务,在运行设备中,会定期生成数据记录文件(txt 格式),我需要将这个文件中的 1000 个数据导入到 Excel 中,通过公式计算,得到需要的另外两列数据,将这两列数据作为数据源,设置一个组合图表(折线图+折线图),设置好图表的格式,最后将图表转换为图片,保存到指定位置。同时在主表中新建一行记录本次的相关数据。
拿到手的数据如下如所示:
最终得到的图片如下图所示:
整个过程看起来并不复杂,一套流程操作下来大概也只需要不到 10 分钟的时间。但是当这个工作变成每天 100 次的话,就是一个相当考验人的任务了。那么借助 VBA,可以将这个过程缩减到 10 秒钟,看一下是如何实现的。
任务分解
首先对文档数据进行分析,它的数据内容是变化的,但是遵循了固定的格式:
- 文档包含1004个数据,数据以“,”来进行分割;
- 第1-1000个数据代表测量数据,也是需要进行进一步处理的数据
- 第1001个数据代表测量序号,需要手动设置到图标上,同时图片的保存文件名也需要用到;
- 第1002-1004个数据是相关的状态型号,需要记录存档。
然后是对数据进行的处理:
- 新建一列B,取值为对应记录数据的奇偶性,(奇数为100,偶数为0);
- 再新建一列C,取值为对应记录数据除以4096,是实际的测量值。
以BC列为数据源,插入一个组合图表:
- 图表类型选择“组合图表”,
- 将序列1(B列)设置为“折线图”,设置在“次坐标轴”上;
- 将序列2(C列)设置为“折现图”,设置在“主坐标轴”上;
- 为序列2(C列)添加一条趋势线(移动平均、周期20);
- 修改主标题、主/次坐标轴标题,主/次横轴标题的文字;
- 修改次坐标轴的坐标刻度(只保留0,100);
- 设置3条折线的颜色、宽度、透明度等,让数据显示更加明显。
VBA 实现
根据分解的任务,就可以编写VBA程序来实现整个过程。
这个项目中,VBA程序中涉及到的知识点包括:
- 数据文件读取
- “打开文件”对话框的调用
- 筛选指定格式文件
- 设置默认打开路径
- 工作簿、工作表的概念及VBA中对其进行的操作的方法
- 文件属性的获取
数据清洗处理
- EXCEL中表格内容到VBA数组的相互转换
- VBA中的“For Next”循环结构
- 数据类型及强制转换数据类型
- 文本格式化函数Format的使用
- 词典的创建和使用
图表绘制及调整
- 在EXCEL中使用VBA来创建图表,指定位置和大小;
- 图表元素的添加、删除和修改;
- 图表属性的设定
- 图表转换为图片的方法
.net 从txt中读取行数据_【VBA项目】从指定文件中读取数据并绘制图表相关推荐
- python从文件中读取数据_【Python】从文件中读取数据
从文件中读取数据 1.1 读取整个文件 要读取文件,需要一个包含几行文本的文件(文件PI_DESC.txt与file_reader.py在同一目录下) PI_DESC.txt 3.1415926535 ...
- 在jmeter中怎么提取数据_如何使用JMeter从文件中提取数据
在性能测试方面,重用响应数据至关重要.几乎(如果不是全部!)负载测试场景假设您: 从先前的响应中提取有趣的方面,并在下一个请求中重用它们(也称为相关) 确保实际响应符合预期(又称断言) 因此,如果您是 ...
- python读取一个图像_从图像处理python的文件中读取多个图像
嗨,我有一个脚本来运行图像处理.但是我想用一个循环或者其他方法从一个文件中读取多个图像 例如C:\Users\student\Desktop\Don\program (opencv version)\ ...
- 向对象中添加数据_在RMarkdown编译HTML文件中添加数据下载按钮
介绍一个工具包, 主要是用来解决我平常写文档时文档和结果分离的问题. 它可以在 RMarkdown 输出的 HTML 文件中添加下载数据的按钮, 而不需要运行 shiny 模式. 安装 install ...
- python入门文件读取与写入_使用Python对Dicom文件进行读取与写入的实现
Pydicom 单张影像的读取 使用 pydicom.dcmread() 函数进行单张影像的读取,返回一个pydicom.dataset.FileDataset对象. import os import ...
- vue样式中背景图片路径_解决vue打包css文件中背景图片的路径问题
vue-cli写完的静态页面我们在node环境中引入没有问题,但是打包后放在Apache环境下,路径却有问题了 如一个简单css语句 .welcome { width: 420px; height: ...
- 第一个小项目 - 去掉指定文件中的注释
1 //功能: 2 //去掉指定cpp源文件中的注释 3 4 //思路: 5 //与一cpp源文件建立关联 6 //以字符形式打开 7 //依次检测它的每一个字符,直到遇到eof(文件结束符) 8 / ...
- python怎样清除csv中的数据_使用d清除CSV文件中的数据
我试图从GCS读取一个CSV(带头)文件,该文件大约有150列,然后 1为特定列设置列数据 2用空值更新所有列的NaN 三.将csv文件(带标题)写入GCS 这里有一个棘手的部分:处理是在云数据流上完 ...
- python从文件中提取特定文本_使用Python从HTML文件中提取文本
我发现最好的一段代码用于提取文本,而不需要javascript或不需要的东西:import urllibfrom bs4 import BeautifulSoupurl = "http:// ...
- 将文件中所有数读到一个数组中_「数据结构与算法」将5个文件中的一千万年龄合并到一个新文件中...
现在有5个文件,文件里面分别存储着1千万个用户年龄,并且每个文件中的年龄都是有序的(从小到大),现在需要将这5个文件整合到一个文件中,新文件的内容依然要保持有序(从小到大). 初始化数据 1.数据生成 ...
最新文章
- 详解jQuery对象与DOM对象的相互转换
- Markdown 如何实现空行、空格?
- 忽然觉得照着技术文档一个demo一个demo的写是一个十分好的学习方式
- SQL注入到EXP编写
- OpenWrt——Could not lock /var/lock/opkg.lock: Resource temporarily unavailable.
- [html] canvas生成图片有没有跨域问题?如果有如何解决?
- CentOS6.5 搭建 LNMP (linux + nginx + mysql + php)
- jq ajax traditional,jQuery ajax - param() 方法
- 小程序多端开源框架黑马!它是如何做到快应用小程序自由转译的?
- final 在java,final 在java中的注意点
- c#中如何删除数组中的元素_C中的数组
- jquery easyui里datagrid用法记录
- 10月| R社区原创作者免费赠书
- Spring之AOP面向切面编程
- Git/Gitlab项目开发使用简介
- 将视频或动态壁纸设置成桌面
- php spider 参数详解,利用phpspider爬取网站数据
- 【VBA研究】关于工作表单元格复制粘贴的语句
- exceptions - Pitfall: the Lost Exception
- 题都城南庄---中华诗词-唐五代-崔护
热门文章
- spring整合rabbitMQ最新版
- 使用PLSQL 远程连接oracle数据库
- flowable用户组的处理
- 玩转 Linux 常用命令
- String类、StringBuffer类、StringBuilder类的区别
- 第十篇:Spring Boot整合mybatis+Mysql 入门试炼02
- 初学jsp课,一个基于jsp+javabean+servlet+sql server小型房源网站,实现了用户表,房源表,及留言板的增删查改。使用deamwear编译器
- git commit -m 提交时报错husky pre-commit (node v12.18.2)
- Java-变量、常量
- 网络发现协议服务器,关于 DHCP 服务器和网络发现