我正在使用sharpdevelop来编写WPF应用程序(我是WPF的新手,我只知道VB而且没有C#,是否有必要学习C#以了解WPF?)。
我想先读取CSV文件。之后我想修改并保存文件。有什么建议和指示吗?
答案 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设计使用的最佳选择。