如何阅读&使用WPF写CSV文件?

时间:2009-09-21 13:16:51

标签: vb.net csv

我正在使用sharpdevelop来编写WPF应用程序(我是WPF的新手,我只知道VB而且没有C#,是否有必要学习C#以了解WPF?)。

我想先读取CSV文件。之后我想修改并保存文件。有什么建议和指示吗?

5 个答案:

答案 0 :(得分:4)

WPF是一种用户界面技术,我不会将其与读取CSV文件相关联。读取文件和显示是两个不同的步骤。第一步,您可以使用KBCsv

Dim reader As CsvReader = Nothing
Try
    reader = New CsvReader("C:\data.csv")
    reader.ReadHeaderRecord()
    Dim record As DataRecord = reader.ReadDataRecord

    While (Not record Is Nothing)
        System.Console.WriteLine("{0} is {1} years old", record("Name"), record("Age"))
        record = reader.ReadDataRecord
    End While
Finally
    If (Not reader Is Nothing) Then
        reader.Close()
    End If
End Try

对于第二步,WPF是一个选项。但是Windows Forms也是如此,或者只是一个带文本输出的普通控制台。假设使用WPF,您可以在DataGrid内显示数据。

答案 1 :(得分:2)

在线阅读/编写CSV文件有很多代码。这是一个完整的(免费)库:http://www.filehelpers.com/

如果您想进入此类任务的源代码,这是一个很好的CSV解析实现:http://www.codeproject.com/KB/database/CsvReader.aspx

答案 2 :(得分:1)

不需要c#。 WPF也可以在VB.NET中完成。

你可以使用link text或者VB确实有一个TextFieldParser http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.fileio.textfieldparser.aspx 或此链接link text

 Using MyReader As New Microsoft.VisualBasic.FileIO.TextFieldParser _
("c:\logs\bigfile")
    MyReader.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.Delimited
    MyReader.Delimiters = New String() {vbTab}
    Dim currentRow As String()
    'Loop through all of the fields in the file. 
    'If any lines are corrupt, report an error and continue parsing. 
    While Not MyReader.EndOfData
        Try
            currentRow = MyReader.ReadFields()
            ' Include code here to handle the row.
        Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException
            MsgBox("Line " & ex.Message & _
            " is invalid.  Skipping")
        End Try
    End While
End Using

答案 3 :(得分:0)

回答你的第一部分。 Windows Presentation Foundation是一组与应用程序用户界面的表示有关的类。组成WPF的类可以从任何语言中使用,包括VB.NET,因此学习C#并不是使用WPF的必要条件

关于问题的CSV组件,因为WPF是一个演示文稿框架,它不直接提供解析CSV格式的能力,但是CSV是一种简单而通用的格式,因此编写解析器或查找现有格式不应该太难。

虽然没有正式的格式规范,但是如果您决定自己编写解析器,维基百科确实提供了很多information

如上所述,有许多预先存在的库,其中一些是开源的,但我在代码项目中找到了this one

注意:我没有使用上面提到的CSV库,它只是作为一个起点提供。

答案 4 :(得分:0)

您不需要知道C#就可以使用WPF,但似乎有更多针对C#的教程和博客。 WPF的Microsoft文档在VB和C#中提供。

至于处理CSV文件,解析它是fairly straight-forward。大多数人(在WinForm中)似乎都在解析CSV并将每个“Column”放入DataTable中。然后,在表单上放置一个网格控件,并从DataTable填充(或数据绑定到)。然后,在编辑之后,逐行读取已更改的DataTable并再次作为CSV文件吐出(我确信有很多警告,特别是在字符串中引用逗号时,仅作为一个示例)

因此,WPF土地的不同之处在于您可能不想采用这种方法。您选择WPF是因为您希望以更有趣的方式呈现CSV文件的每个“行”。例如,如果每个CSV行代表一个联系人,也许你想要一个动画滚动rolodex。我将首先查看this walkthrough,因为它说明了WPF应用程序的良好设计。

<强>更新

在Codeplex上的工具包中提供了一个用于WPF的DataGrid,但它通常不是WPF设计使用的最佳选择。