débutant en c# j'essaye de faire un tracé de courbes issues de plusieurs fichiers texte. Afin de faire ça j'essaye de créé un tableau à partir de tous mes fichiers chacun de mes fichiers étant une colonne de mon tableau voici mon code
try
{
int r = 1;
int c = 1;
string[] txtFiles = Directory.GetFiles(test);
foreach (string f in txtFiles)
{
StreamReader file = new StreamReader(f);
string line = file.ToString();
while ((line = file.ReadLine()) != null)
{
AffichePts.Rows[r].Cells[c].Value = line;
c++;
}
r++;
}
}
catch (Exception d)
{
MessageBox.Show(d.Message);
Application.Exit();
}
j'ai une erreur sur la cell active qui semble être x=-1 y=-1 :/
{
DataTable dt = new DataTable();
int index = 1;
string[] txtFiles = Directory.GetFiles(_CalypsoResultPath + "temp/");
foreach (string f in txtFiles)
{
string colum = "Courbe" + Convert.ToString(index);
System.IO.StreamReader file = new System.IO.StreamReader(f);
string[] columnnames = file.ReadLine().Split(' ');
foreach (string c in columnnames)
{
dt.Columns.Add(colum);
}
string newline;
while ((newline = file.ReadLine()) != null)
{
DataRow dr = dt.NewRow();
string[] values = newline.Split(' ');
for (int i = 0; i < values.Length; i++)
{
dr[i] = values[i];
}
dt.Rows.Add(dr);
}
index++;
file.Close();
}
AffichePts.DataSource = dt;
}
le but de mon code étant donc de créer une Row à chaque nouveau fichier. J'avais essayé avec uniquement AffichePts.Rows.add(line); malheureusement il n'incrémente pas les colonnes d'où mon code un peu à la con
Merci d'avance de votre aide
P.S : J'essaye également de faire un merge de X fichiers text pour contourner le problème, j'arrive à merge mais les éléments les uns à la suite des autres alors que je souhaiterai une colonne
Bonsoir merci de ton aide.
Le nombre de fichier est aléatoire c'est pour cela que je pars sur un getfile. Le nombre de ligne est lui aussi aléatoire mais commun a chaque fichier au moment ou je les importe.
Je peux éventuellement mettre un END en dernière ligne vu que je retravaille les fichiers avant cette étape
Enfin le format a l'intérieur est tout con, une liste de chiffre decimaux a la suite dans une seule colonne .
string path = Application.StartupPath + @"\test";
string[] txtFiles = Directory.GetFiles(path);//récupère le nom des fichiers dans le répertoire
List<string[]> fichiers = new List<string[]>(); //parce qu'avec .Add c'est plus simple
foreach(string chemin in txtFiles)
fichiers.Add(File.ReadAllLines(chemin));//File.ReadAllLines retourne directement un tableau de string contenant chaque lignes
for(int i = 0; i<fichiers.Count;i++)//on ajoute autant de colonnes que necessaire
dataGridView1.Columns.Add(new DataGridViewTextBoxColumn());
for(int i = 0; i < fichiers[0].Length;i++)//Puisque tous les fichiers ont le même nombre de lignes, je prend la longueur du premier tableau en référence
{
DataGridViewRow row = dataGridView1.Rows[dataGridView1.Rows.Add()];//ajoute une ligne
for(int j = 0; j<fichiers.Count;j++)
row.Cells[j].Value = fichiers[j][i];//remplit les cellules
}
je me permet de te re remercier ça marche parfaitement même si à la fin avec 33 fichiers et 60 lignes par fichier c'est assez long niveau traitement je vais essayer de mettre un message d'attente ;).
Bonjour, pour le graphisme il y a le controle Charts.
Un bon tuto pour commencer
http://plasserre.developpez.com/cours/chart/ c'est en VB.Net mais la transcription en C# se fait bien.
Concernant le temps d'exécutrion ça vient je pense de la saisie du datagridview cellule par cellule, je pense qu'en bindant ça irait plus vite.
Avec un dataset peut etre.