Excel开发学习笔记:读取xml文件及csv文件

读取xml文件
有好多种读取xml的方式,xmlDOM比较常见,我使用了另外一种,它以数据流的方式打开文件并读取内容

Imports System.Xml  
Dim group As New List(Of String)  
Using reader As XmlReader = XmlReader.Create(OpenFileDialog2.FileName)  
    While reader.ReadToFollowing("group")  
        reader.MoveToAttribute("name")  
        group.Add(reader.Value)  
    End While  
End Using

读取csv文件
常见的csv文件以逗号‘,‘分割每行的字段,如果字段中正好也有‘,‘,则需要用双引号""括起来,比如下面2行的情况。这给解析字段带来了麻烦,不能简单的调用string的split函数。
"","","","","Case_1,Case_2,Case_3","Case_1,Case_2,Case_3","Case_1,Case_2,Case_3","Case_1,Case_2,Case_3",
project,Comm,factor5%(dB),"[0,Infinity]",-2.0599684918456296 ,-2.0599684918456296 ,-2.0599684918456296 ,-2.0599684918456296 ,

幸运的是遇到的需求中并不关注带双引号""的字段,所以对字符串进行了预处理,把""中的‘,‘替换掉,使之不对用‘,‘分割产生干扰。

‘dataFileStr是string数组,保存了csv文件的完整内容  
    Dim dataFileStr As String() = IO.File.ReadAllLines(file)‘file是文件路径的字符串  
    ‘转换格式
    ChangeCsvFormat(dataFileStr)  
    ‘分割第一行的字段  
    Dim titleEle As String() = dataFileStr(0).Split(New Char() {","c})  
                          
    ‘修改读取的csv内容,把""中间的逗号替换为~号,方便后续用逗号分词  
    Private Sub ChangeCsvFormat(ByRef csvLines As String())  
        For i As Long = 0 To csvLines.Count - 1  
            Dim begin As Integer = -1, endIdx As Integer = -1  
            Dim cnt As Integer = 0  
            Do  
                cnt += 1  
                If cnt Mod 2 = 0 Then  
                    endIdx = csvLines(i).IndexOf("""", begin + 1)  
                    If endIdx > 0 Then  
                        Dim orgSub As String = csvLines(i).Substring(begin, endIdx - begin + 1)  
                        Dim newSub As String = orgSub.Replace(",", "~")  
      
                        csvLines(i) = csvLines(i).Replace(orgSub, newSub)  
                    End If  
                Else  
                    endIdx += 1  
                    begin = csvLines(i).IndexOf("""", endIdx)  
                End If  
            Loop Until begin < 0 Or endIdx < 0  
        Next  
    End Sub

时间: 2024-12-14 18:42:32

Excel开发学习笔记:读取xml文件及csv文件的相关文章

Excel开发学习笔记:发布VSTO下的Excel开发项目

工作中遇到一个数据处理自动化的问题,于是打算开发一个基于excel的小工具.在业余时间一边自学Excel开发一边动手实践,最近终于完成了雏形.抽空把一些知识写下来以备今后参考,因为走的是盲人摸象的野路子,幼稚与错误请多包涵. 开发环境基于VSTO(没有用VBA),具体配置:visual studio 2010,VB .Net,excel 2007,文档级别的定制程序. 因为是自用的小工具,对部署的要求很低,有个安装文件即可,也不要求兼容老版本的office.这样最简单的就是使用vs2010的pu

Excel开发学习笔记:文件选择控件、查找匹配项、单元格格式及数据有效性

遇到一个数据处理自动化的问题,于是打算开发一个基于excel的小工具.在业余时间一边自学一边实践,抽空把一些知识写下来以备今后参考,因为走的是盲人摸象的野路子,幼稚与错误请多包涵. 开发环境基于VSTO,具体配置:visual studio 2010,VB .Net,excel 2007,文档级别的定制程序. Private OpenFileDialog1 As New OpenFileDialog  Private Sub test()      OpenFileDialog1.Filter 

Excel开发学习笔记:VB.net的一些杂项

最近遇到一个数据处理自动化的问题,于是打算开发一个基于excel的小工具.在业余时间一边自学一边实践,最近终于完成了雏形.抽空把一些知识写下来以备今后参考,因为走的是盲人摸象的野路子,幼稚与错误请多包涵. 开发环境基于VSTO,具体配置:visual studio 2010,VB .Net,excel 2007,文档级别的定制程序. 动态数组vb自带的简单数组增删元素和改变大小不方便,.net提供的List类型很好用.比如下面定义了int类型的动态数组,第二句则是将 List(T) 的元素复制到

Excel开发学习笔记:界面交互与控件的布局

除了业务逻辑之外,比较耗时耗力的就是人机交互了.在编写excel定制程序的过程中,这次用到了以下几种交互方式: 通过excel工作表(worksheet)获取用户输入 通过按钮控件触发功能代码执行 通过TreeView控件显示内容摘要及导航 通过自定义的windows窗体提供交互 工作表的操作放到后面再说,讲一下按钮控件button和Treeview控件的布局. 放置控件的方法: 无非可视化放置和运行时代码加载两种.可视化放置比较直观,通过visual studio的toolbox工具栏拖动需要

Excel开发学习笔记:新建文档级的excel解决方案

工作中遇到一个数据处理自动化的问题,于是打算开发一个基于excel的小工具.在业余时间一边自学一边实践,最近终于完成了雏形.抽空把一些知识写下来以备今后参考,因为走的是盲人摸象的野路子,幼稚与错误请多包涵. 开发环境基于VSTO(没有用VBA),具体配置:visual studio 2010,VB .Net,excel 2007,文档级别的定制程序. Excel的开发方式有很多,比如VBA.vsto下的文档级程序.vsto下的插件程序等,VBA和文档级程序比较容易上手,开发简单的功能足够了,适合

Excel开发学习笔记:查找与创建worksheet

开发环境基于VSTO,具体配置:visual studio 2010,VB .Net,excel 2007,文档级别的定制程序. 如题,我在ThisWorkbook.vb中添加了一个public函数来完成查找功能. 入参:待查找的sheet名称 返回:如果存在则返回worksheet对象,如果不存在则返回nothing Public Function WorksheetExist(name As String) As Excel.Worksheet          Try           

Excel开发学习笔记:根据工作表worksheet内容控制按钮的状态

开发环境基于VSTO,具体配置:visual studio 2010,VB .Net,excel 2007,文档级别的定制程序. 在Ribbon工具栏中有2个功能按钮,它们是否可用取决于worksheet(sheet1)中的内容. button1需要在sheet1中存在某个关键字(比如“默认勾选”)的时候可用,在sheet1初始化和内容变更事件中添加代码,下面的Ribbon1.Button1是我项目中的工具栏和按钮名称 Public Function checkRow() As Boolean 

IBatis .NET 开发学习笔记&mdash;&mdash;.NET 开发环境搭建

大家好,今天给大家带来的是web应用程序配置,至于windows应用程序或者其他类型解决方案可以相同的配置,web应用程序配置文件为web.config,windows应用程序是app.config. 通过以下步骤可以建立属于你自己的环境: 1.首先,肯定是打开Visual Studio(文章后面简称VS),如果你有其他工具开发,我也不介意,反正我用VS,VS目前最新版是2013,不过我喜欢复古,所以,我目前用安装VS2010来当作教程,不管目前是多少版本了,都可以同理得到. 2.然后,新建一个

【web开发学习笔记】Structs2 Action学习笔记(一)

1.org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter准备和执行 2. <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> url-pattern约定熟成只写/*,没必要写*.action 3. <