【问题标题】:Import CVS coma separated Matrix into a Dynamics VB Matrix将 CSV 逗号分隔的矩阵导入 Dynamics VB 矩阵
【发布时间】:2019-08-21 19:35:48
【问题描述】:

我有问题, 我有一个 Visual Basic 项目,它最终生成 14 个由 7 个整数组成的数组,从小到大排序。问题是将它们与 CSV 文件(甚至 excel 中的同一文件取决于代码的简单程度)中存在的数据行进行比较,以“;”分隔。 CSV文件的行也是由从小到大排列的7个数字组成的,但是行数是可变的,因为每次使用VB程序,这都必须在CSV 文件。我认为最简单的方法是将 CSV 文件导入 VB 中的动态矩阵,并将 ARRAY 与矩阵的每一行进行比较。

My Arrays are Integer:        
dim one (7) as integer         
dim two (7) as integer           
etc ... etc .... up to               
dim fourteen (7) as integer.

你能帮我把 CVS 文件导入并写进去吗?

【问题讨论】:

  • 要读取CSV 类型的文件,您可以使用TextFieldParser 类。查看示例here(不要介意正则表达式)。您可以指定非标准分隔符。要将一行追加到CSV 文件(它是一个文本文件),您可以使用File.AppendAllTextFile.AppendText 或任何其他File.Append-something 方法。
  • 有很多与这些方法相关的示例。
  • Jimi 感谢您的回答,明天我将尝试阅读您的建议,现在我在意大利太累了,已经很晚了....我希望明天能和您谈谈我的其他疑问...晚安,明天见

标签: vb.net


【解决方案1】:

我已经使用该代码解决了导入问题:

将 MyReader 用作新的 Microsoft.VisualBasic。 FileIO.TextFieldParser("D:\Lista.csv")

        MyReader.TextFieldType = FileIO.FieldType.Delimited
        MyReader.SetDelimiters(";")

        Dim currentRow As String()
        While Not MyReader.EndOfData
            Try

                currentRow = MyReader.ReadFields()
                Dim currentField As String
                For Each currentField In currentRow

                    c = (z + 1)
                    oldserie(c) = currentField
                    z = (c)

                Next
            Catch ex As Microsoft.VisualBasic.
                        FileIO.MalformedLineException
                MsgBox("Line " & ex.Message &
                "is not valid and will be skipped.")
            End Try
        End While

为了将数组与矩阵匹配,我改变了想法,我选择每次匹配一个 STRING ARRAY (oldserie(100000000)) 与 6 个数字,从 Lbound(oldserie) 开始

这是唯一不好的事情,因为我必须将 oldserie 定义为一个包含 100000000 条记录的字符串数组......我不能像

这样在动态数组模式下使用

dim oldserie() 作为字符串 .

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-11
    • 2016-06-17
    • 1970-01-01
    • 2015-03-16
    • 2015-07-29
    • 1970-01-01
    相关资源
    最近更新 更多