用 VB.net,VBA 两种方式 读取单元格内的 换行数据,并出力到 CSV文件
用 VB.net,VBA 两种方式 读取单元格内的 换行数据,并出力到 CSV文件
需求
如下图所示,为了生成csv文件导入数据库,需要将下图 的 1 和 2 拼接成 如下 3 所示的一行数据,
开头为 1 ,往后为 2 的换行数据 将换行符 替换为 如 3 所示的<br>, 同时 1 和 2 用双引号 括起来,中间用 逗号 隔开。

VB.net 代码如下
Imports System.IOClass MainWindowPrivate Sub Button_Click(sender As Object, e As RoutedEventArgs)Dim AppXls As Microsoft.Office.Interop.Excel.Application '声明Excel对象Dim AppWokBook As Microsoft.Office.Interop.Excel.Workbook '声明工作簿对象Dim AppSheet As Microsoft.Office.Interop.Excel.Worksheet '声明工作表对象AppXls = New Microsoft.Office.Interop.Excel.Application '实例化Excel对象AppXls.Workbooks.Open("C:\wang\VB_family\VBA\tool\ReadExcelTest.xlsx") '打开已经存在的EXCEL文件AppXls.Visible = False '使Excel不可见AppWokBook = AppXls.Workbooks(1) 'AppWokBook对象指向工作簿"C:\wang\VB系列\VBA\tool\ReadExcelTest.xlsx"AppSheet = AppWokBook.Sheets("Sheet1") 'AppSheet对象指向AppWokBook对象中的表“Sheet1”,即:"C:\wang\VB系列\VBA\tool\ReadExcelTest.xlsx"中的表“Sheet1”' CSV文件路径Dim i, tDim str As StringDim str_Tmp As String = ""Dim arr = AppSheet.UsedRange.ValueDim csvFilePath As String = "C:\wang\VB_family\VBA\tool\file.csv"' 创建CSV文件并写入数据Using writer As New StreamWriter(csvFilePath)' 写入标题行writer.WriteLine("msgId, msgInfo")' 写入数据行For i = 5 To 12For Each t In Split(arr(i, 8), Chr(10)) '拆分第8列,如果第8列是单行,循环只执行一次If str_Tmp = "" Thenstr_Tmp = tElsestr_Tmp = str_Tmp & "<br>" & tEnd IfNext t'生成第i行数据str = """" & arr(i, 7) & """," & """" & str_Tmp & """"writer.WriteLine(str) '写入第i行数据str = "" '初始化数据str_Tmp = "" '初始化数据Next iEnd UsingMsgBox("CSV file generated successfully.")Console.WriteLine("CSV file generated successfully.")Console.ReadLine()'使用完毕必须关闭EXCEL,并退出AppXls.ActiveWorkbook.Close(SaveChanges:=True)AppXls.Quit()End SubEnd Class
VBA 代码如下
Attribute VB_Name = "模块1"
Option Explicit
Sub 宏1()Dim arr, i, tDim rowData_tmp As StringDim rowData As StringDim fileNumber As IntegerDim csvFilePath As Stringarr = activesheet.usedrangerowData_tmp = ""csvFilePath = "C:\wang\VB_family\VBA\tool\file_vba.csv"' 打开CSV文件以进行写入fileNumber = FreeFileOpen csvFilePath For Output As #fileNumber' 写入数据行rowData = "msgId, msgInfo" ' CSV文件的列标题Print #fileNumber, rowDataFor i = 5 To 12For Each t In Split(arr(i, 8), Chr(10)) '拆分第8列,如果第8列是单行,循环只执行一次If rowData_tmp = "" ThenrowData_tmp = tElserowData_tmp = rowData_tmp & "<br>" & tEnd IfNext t'生成第i行数据rowData = """" & arr(i, 7) & """," & """" & rowData_tmp & """"Print #fileNumber, rowData '写入第i行数据rowData = "" '初始化数据rowData_tmp = "" '初始化数据Next i' 关闭CSV文件Close #fileNumberMsgBox "CSV文件已创建成功!"End Sub
生成文件如下
file_vba.csv
msgId, msgInfo
"H220 G663","aaaaaaaaaaaaaaa1<br>bbbbbbbbbbbbbb1<br>cccccccccccccccc1"
"H220 G664","aaaaaaaaaaaaaaa2<br>bbbbbbbbbbbbbb2<br>cccccccccccccccc2"
"H220 G665","aaaaaaaaaaaaaaa3<br>bbbbbbbbbbbbbb3<br>cccccccccccccccc3"
"H220 G666","aaaaaaaaaaaaaaa4<br>bbbbbbbbbbbbbb4<br>cccccccccccccccc4"
"H220 G667","aaaaaaaaaaaaaaa5<br>bbbbbbbbbbbbbb5<br>cccccccccccccccc5"
"H220 G668","aaaaaaaaaaaaaaa6<br>bbbbbbbbbbbbbb6<br>cccccccccccccccc6"
"H220 G669","aaaaaaaaaaaaaaa7<br>bbbbbbbbbbbbbb7<br>cccccccccccccccc7"
"H220 G670","aaaaaaaaaaaaaaa8<br>bbbbbbbbbbbbbb8<br>cccccccccccccccc8"
总结
1 VB.NET Core WPF是一种用于开发Windows Presentation Foundation(WPF)应用程序的框架。它是基于VB.NET语言的.NET Core平台上的一个开发框架。
WPF是一种用于创建图形用户界面(GUI)的技术,它提供了许多丰富的可视化和交互功能。通过使用VB.NET语言和WPF,开发人员可以创建现代化和可定制的桌面应用程序。
在使用VB.NET Core WPF时,您可以利用.NET Core平台的许多优势,例如跨平台开发和高性能。您可以使用Visual Studio等集成开发环境来创建、调试和发布您的VB.NET Core WPF应用程序。
2 由于用到了 Microsoft.Office.Interop.Excel ,需要引入以下依赖。


相关文章:
用 VB.net,VBA 两种方式 读取单元格内的 换行数据,并出力到 CSV文件
用 VB.net,VBA 两种方式 读取单元格内的 换行数据,并出力到 CSV文件 需求 如下图所示,为了生成csv文件导入数据库,需要将下图 的 1 和 2 拼接成 如下 3 所示的一行数据, 开头为 1 ,往后为 2 的换行数据 将换…...
kafka线上问题优化
如何防止消息丢失 生产者: 使用同步发送把ack设成1或者all(非0,0可能会出现消息丢失的情况),并且设置同步的分区数>2 消费者:把自动提交改成手动提交 如何防止重复消费 在防止消息丢失的方案中&#…...
FifthOne:用于矢量搜索的计算机视觉接口
一、说明 数据太多了。数据湖和数据仓库;广阔的像素牧场和充满文字的海洋。找到正确的数据就像大海捞针一样!如果你喜欢开源机器学习库 FiftyOne,矢量搜索引擎通过将复杂数据(图像的原始像素值、文本文档中的字符)转换为称为嵌入矢…...
认识Axios
axios中文网 一. 为什么会诞生Axios 最初浏览器页面向服务器请求数据时,返回的是整个页面,整个页面都会刷新ajax的出现,它可以在页面无刷新的情况下请求数据原生的XMLHttpRequest,jQuery封装的ajax,以及axios都可以实…...
系统架构设计专业技能 · 信息安全技术
系列文章目录 系统架构设计专业技能 网络技术(三) 系统架构设计专业技能 系统安全分析与设计(四)【系统架构设计师】 系统架构设计高级技能 软件架构设计(一)【系统架构设计师】 系统架构设计高级技能 …...
kafka晋升之路-理论+场景
kafka晋升之路 一:故事背景二:核心概念2.1 系统架构2.2 生产者(Producer)2.2.1 生产者分区2.2.2 生产者分区策略 2.3 经纪人(Broker)2.3.1 主题(Topic)2.3.2 分区(Partit…...
(牛客网)链表相加(二)
嗯哼~ 题目 描述 假设链表中每一个节点的值都在 0 - 9 之间,那么链表整体就可以代表一个整数。 给定两个这种链表,请生成代表两个整数相加值的结果链表。 数据范围:0 ≤ n,m ≤ 1000000,链表任意值 0 ≤ val ≤ 9 要求&#x…...
Vs code 使用中的小问题
1.Java在Vs code 中使用单元测试失败或者如何使用单元测试 创建Java项目,或者将要测试的文件夹添加进工作区 要出现lib包,并有两个测试用的jar包 编写测试文件 public class TestUnit{ public static void main(String[] args) {String str "…...
vue2和vue3
1. 双向数据绑定原理发生了改变 vue2的双向数据绑定是利用了es5 的一个API Object.definepropert() 对数据进行劫持 结合发布订阅模式来实现的。vue3中使用了es6的proxyAPI对数据进行处理。 相比与vue2,使用proxy API 优势有:defineProperty只能监听某个…...
火山引擎ByteHouse:一套方案,让OLAP引擎在精准投放场景更高效
由于流量红利逐渐消退,越来越多的广告企业和从业者开始探索精细化营销的新路径,取代以往的全流量、粗放式的广告轰炸。精细化营销意味着要在数以亿计的人群中优选出那些最具潜力的目标受众,这无疑对提供基础引擎支持的数据仓库能力࿰…...
【论文阅读】SHADEWATCHER:使用系统审计记录的推荐引导网络威胁分析(SP-2022)
SHADEWATCHER: Recommendation-guided CyberThreat Analysis using System Audit Records S&P-2022 新加坡国立大学、中国科学技术大学 Zengy J, Wang X, Liu J, et al. Shadewatcher: Recommendation-guided cyber threat analysis using system audit records[C]//2022 I…...
Mac 使用 rar 命令行工具解压和压缩文件
在 Mac 中常遇到的压缩文件有 zip 和 rar 格式的,如果是 zip 格式的 Mac 系统默认双击一下文件就能直接解压了,但 rar 文件就不行。 需要额外下载 rar 工具了实现。 第一步:下载 rar 工具 工具网址:https://www.rarlab.com/dow…...
7.maven
1 初始Maven 1.1 什么是Maven Maven是Apache旗下的一个开源项目,是一款用于管理和构建java项目的工具。 官网:https://maven.apache.org/ Apache 软件基金会,成立于1999年7月,是目前世界上最大的最受欢迎的开源软件基金会&…...
MySQL 主从复制遇到 1590 报错
作者通过一个主从复制过程中 1590 的错误,说明了 MySQL 8.0 在创建用户授权过程中的注意事项。 作者:王祥 爱可生 DBA 团队成员,主要负责 MySQL 故障处理和性能优化。对技术执着,为客户负责。 本文来源:原创投稿 爱可生…...
games101-windows环境配置(CMake+vcpkg+VS2019)
下载工具 安装CMake 安装vcpkg 安装vs2019 安装 eigen3 opencv 在vcpkg安装目录下,使用Windows Power Shell运行下面脚本 .\vcpkg.exe install eigen3:x64-windows .\vcpkg.exe install opencv:x64-windows安装过程中可能会用红色字体提示:Failed to…...
2023年Java核心技术面试第五篇(篇篇万字精讲)
目录 十 . HashMap,ConcurrentHashMap源码解析 10.1 HashMap 的源码解析: 10.1.1数据结构: 10.1.2哈希算法: 10.1.3解决哈希冲突: 10.1.4扩容机制: 10.1.5如何使用 HashMap: 10.2 HashMap 关注…...
第十课:Qt 字符编码和中文乱码相关问题
功能描述:最全的 Qt 字符编码相关知识以及中文乱码的原因与解决办法 一、字符编码种类 ASCII 码 美国人对信息交流的编码,包括 26 个字母(大小写)、数字和标点符号等,用一个字节(8 位)表示这些…...
Go语言基础:Interface接口、Goroutines线程、Channels通道详细案例教程
目录标题 一、Interface1. Declaring and implementing an interface2. Practical use of an interface3. Nterface internal representation4. Empty interface5. Type assertion6. Type switch7. Implementing interfaces using pointer receivers VS value receivers8. Impl…...
Cesium加载ArcGIS Server4490且orgin -400 400的切片服务
Cesium在使用加载Cesium.ArcGisMapServerImageryProvider加载切片服务时,默认只支持wgs84的4326坐标系,不支持CGCS2000的4490坐标系。 如果是ArcGIS发布的4490坐标系的切片服务,如果原点在orgin X: -180.0Y: 90.0的情况下,我们可…...
Objectarx 2021使用vs2019生成报错 /RTCc rejects conformant code
error C2338: /RTCc rejects conformant code错误解决 使用VS2019/VS2022生成项目报错 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 C1189 #error: /RTCc rejects conformant code, so it is not supported by the C Standard Library. Either remove this compiler opti…...
深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...
基于Java+VUE+MariaDB实现(Web)仿小米商城
仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意:运行前…...
