сохранить данные из datagridview в c # - PullRequest
0 голосов
/ 19 ноября 2018

1 У меня проблема с хранением данных.до этого у меня есть данные, которые были отображены в DataGridview, и я хочу сохранить данные из DataGridview в виде * txt.Я пытался сохранить данные, но сохраняются не все данные.

Здесь я покажу вам свой код.Надеюсь, кто-нибудь может мне помочь?Большое спасибо, прежде чем

row.Cells["colProjection"].Value = string.Join("\t", feature.Select(f => Math.Abs(f / 30).ToString("N3")));
            TextWriter writer = new StreamWriter(@"C:\Users\LENOVO\Desktop\OKE.txt");
            writer.Write(row.Cells["colProjection"].Value);
            writer.WriteLine("");
            writer.Close();

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Это код, который я использую для хранения данных.Но сохраненные данные все еще имеют ошибки.Поскольку сохраненные данные - это данные последней строки, а не данные от первой строки до последней строки.

private void btnFeature_Click(object sender, EventArgs e)
    {
        if (pca == null)
        {
            MessageBox.Show("Please compute the analysis first!");
            return;
        }

        ImageToArray converter = new ImageToArray(min: 0, max: 1);

        int rows = dataGridView3.Rows.Count;
        double[][] inputs = new double[rows][];
        double[][] features = new double[rows][];
        int[] outputs = new int[rows];

        int index = 0;
        foreach (DataGridViewRow row in dataGridView3.Rows)
        {
            Bitmap image = row.Cells["colFace2"].Value as Bitmap;
            int label = (int)row.Cells["colLabel2"].Value;

            double[] input;
            converter.Convert(image, out input);

            double[] feature = pca.Transform(input);

            row.Cells["colProjection"].Value = string.Join("\t", feature.Select(f => Math.Abs(f / 30).ToString("N3")));
            TextWriter writer = new StreamWriter(@"C:\Users\LENOVO\Desktop\OKE.txt");
            for (int i = 0; i < dataGridView3.RowCount; i++)
            {
                writer.Write(row.Cells["colProjection"].Value + "\t"); 
            }
            writer.WriteLine("");
            writer.Close();

            row.Tag = feature;
            inputs[index] = input;
            features[index] = feature;
            outputs[index] = label;
            index++;
        }
    }
0 голосов
/ 19 ноября 2018

Вы должны получить все данные строк, вы можете использовать цикл for, чтобы сделать это, что-то вроде этого:

  StringBuilder sr=new StringBuilder();
  for (int i=0 ;i>=mygrid.Rows.Count;i++)
  {
     sr.AppendLine(mygrid.Rows[i].Cells["colProjection"].Text);
  }

  System.IO.File.WriteAllText("D:\output.txt",sr.ToString());

ОБНОВЛЕНИЕ:

private void btnFeature_Click(object sender, EventArgs e)
{
    if (pca == null)
    {
        MessageBox.Show("Please compute the analysis first!");
        return;
    }

    ImageToArray converter = new ImageToArray(min: 0, max: 1);

    int rows = dataGridView3.Rows.Count;
    double[][] inputs = new double[rows][];
    double[][] features = new double[rows][];
    int[] outputs = new int[rows];

    int index = 0;
    StringBuilder sr=new StringBuilder();
    foreach (DataGridViewRow row in dataGridView3.Rows)
    {
        Bitmap image = row.Cells["colFace2"].Value as Bitmap;
        int label = (int)row.Cells["colLabel2"].Value;

        double[] input;
        converter.Convert(image, out input);

        double[] feature = pca.Transform(input);

        row.Cells["colProjection"].Value = string.Join("\t", feature.Select(f => Math.Abs(f / 30).ToString("N3")));
       // TextWriter writer = new StreamWriter(@"C:\Users\LENOVO\Desktop\OKE.txt");
        /*for (int i = 0; i < dataGridView3.RowCount; i++)
        {
            writer.Write(); 
        }*/

        sr.Append(row.Cells["colProjection"].Text);// Or .Value


        row.Tag = feature;
        inputs[index] = input;
        features[index] = feature;
        outputs[index] = label;
        index++;
    }
  System.IO.File.WriteAllText("C:\Users\LENOVO\Desktop\OKE.txt",sr.ToString());
}
...