2009-09-21 14 views
2

J'utilise sharpdevelop pour programmer l'application WPF (je suis novice à WPF, je connais seulement VB et pas de C#, est-il nécessaire d'apprendre C# pour connaître WPF?).Comment lire et écrire des fichiers CSV en utilisant WPF?

et je veux d'abord lire le fichier CSV. Après cela, je veux modifier et enregistrer le fichier. des suggestions et des pointeurs pour cela?

Répondre

4

WPF est une technologie d'interface utilisateur et Je ne l'associerais pas à la lecture d'un fichier CSV. La lecture du fichier et l'affichage sont deux étapes différentes. Pour la première étape, vous pouvez utiliser 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 

Pour la deuxième étape, WPF est une option. Mais il en va de même pour Windows Forms, ou simplement une simple console avec sortie de texte. En supposant que WPF, vous pouvez afficher les données à l'intérieur d'un DataGrid.

+0

Le code que vous avez posté ci-dessus ressemble à C#. Maintenant que je ne suis pas au courant, comment dois-je procéder? Aussi est-il possible de travailler avec VB.NET et WPF ensemble. Je peux comprendre que WPF est juste une présentation mais je n'ai aucune idée de la façon de les assembler. Aucune suggestion ? – Stark

+0

J'ai été surpris quand j'ai vu que le .Net actuel ne vient pas avec une grille de données intégrée. Cela semblait être un oubli lors de la comparaison avec la fonctionnalité de Windows Forms –

+0

@Stark: modification de l'exemple en VB. Oui, vous pouvez utiliser VB pour créer des applications WPF. Cependant, je ne connais pas assez SharpDevelop pour vous aider. Vous pouvez également envisager d'utiliser l'édition Visual Studio Express (qui est gratuite), au moins pendant votre apprentissage. La plupart des exemples et de l'aide sur le site suppose Visual Studio, donc cela pourrait vous rendre la vie un peu plus facile. –

1

Aucun C# n'est requis. WPF peut également être fait dans VB.NET.

Vous pouvez obtenir la fantaisie et utiliser link text ou VB ne dispose d'un TextFieldParser juste pour ce http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.fileio.textfieldparser.aspx ou ce lien 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 
0

Pour répondre à la première partie de votre quetion. Windows Presentation Foundation est un ensemble de classes concernées par la présentation des interfaces utilisateur d'application. Les classes qui composent WPF peuvent être consommées à partir de n'importe quel langage, y compris VB.NET, donc apprendre C# n'est pas une nécessité pour utiliser WPF

En ce qui concerne le composant CSV de votre question, comme WPF est un cadre de présentation il ne fournit pas directement la possibilité d'analyser le format CSV, cependant le format CSV est un format simple et commun, écrire un analyseur ou en trouver un existant ne devrait pas être trop difficile.

Bien qu'il n'y ait pas de spécification formelle pour le format, Wikipedia fournit une bonne quantité de information si vous décidez d'écrire vous-même un parseur.

Comme indiqué plus haut, il existe de nombreuses bibliothèques préexistantes, qui sont open source certains d'entre icluding this one J'ai trouvé sur le projet de code

NB: Je ne l'ai pas utilisé la bibliothèque CSV mentionné ci-dessus, il est prévu meerly comme un point de départ.

0

Vous n'avez pas besoin de connaître C# pour utiliser WPF, mais il semble y avoir plus de tutoriels et de blogs axés sur C#. La documentation Microsoft pour WPF est fournie dans VB et C#. Pour traiter un fichier CSV, l'analyser est fairly straight-forward. Ce que la plupart des gens (dans WinForm Land) semblent faire est d'analyser le fichier CSV et de déposer chaque "colonne" dans un DataTable. Ensuite, un contrôle de grille a été supprimé sur un formulaire et peuplé de (ou lié à des données) le DataTable. Puis, après modifications, le DataTable modifié a été lu ligne par ligne et craché de nouveau sous forme de fichier CSV (Je suis sûr qu'il y a beaucoup de mises en garde, notamment en citant des virgules dans les chaînes, comme un exemple).Donc, la différence dans WPF land est que vous ne voulez probablement pas adopter cette approche. Vous choisissez WPF parce que vous voulez présenter chaque "ligne" du fichier CSV d'une manière plus intéressante. Peut-être que vous voulez un rolodex de défilement animé, si chaque ligne CSV représentait un contact, par exemple. Je commencerais par vérifier this walkthrough, car il illustre un bon design pour une application WPF.

Mise à jour:

Il y a un DataGrid pour WPF dans la boîte à outils fournie sur CodePlex, mais il est généralement pas le meilleur choix pour ce WPF est conçu pour fonctionner avec.

+0

Exactement, je choisis WPF parce que je voulais ajouter de l'animation aux données CSV et de le présenter de meilleure façon. Merci pour ce lien. – Stark

+0

Cool, alors assurez-vous de trouver un bon exemple de la façon de faire la pagination. – emptyset

+0

@emptyset - il n'y a aucun contrôle DataGrid dans WPF pour le moment. Vous ne pouvez l'obtenir que si vous chargez une bibliothèque externe. Je crois qu'il apparaîtra dans 4.0 –

Questions connexes