Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#wpf datagrid将特定列导出到文本文件_C#_Wpf_File_Text - Fatal编程技术网

c#wpf datagrid将特定列导出到文本文件

c#wpf datagrid将特定列导出到文本文件,c#,wpf,file,text,C#,Wpf,File,Text,我正在使用一个小应用程序,用户可以在其中将datagrid内容写入文本文件。 我使用下面的代码将数据从SQL获取到数据网格 SqlConnection con = new SqlConnection("Server = localhost;Database = autoser; Integrated Security = true"); SqlCommand cmd = new SqlCommand("selectproduct", con); // Usi

我正在使用一个小应用程序,用户可以在其中将datagrid内容写入文本文件。 我使用下面的代码将数据从SQL获取到数据网格

      SqlConnection con = new SqlConnection("Server = localhost;Database = 
      autoser; Integrated Security = true");
      SqlCommand cmd = new SqlCommand("selectproduct", con); // Using a Store 
      Procedure.
     cmd.CommandType = CommandType.StoredProcedure;
      DataTable dt = new DataTable("dtList");
      cmd.Parameters.AddWithValue("@Code", txtbarcode.Text);

      SqlDataAdapter da = new SqlDataAdapter(cmd);
      da.Fill(dt);
      data.ItemsSource = dt.DefaultView;
      SqlDataAdapter adapt = new SqlDataAdapter(cmd);
      DataSet ds = new DataSet();
      adapt.Fill(ds);
      con.Close();
      int count = ds.Tables[0].Rows.Count;
      if (count == 0)
     {
        MessageBox.Show("This product doesn't excist");
        SystemSounds.Hand.Play();
      }
   else if (count == 1)
     {
       lblinfo.Visibility = Visibility.Visible;
       SystemSounds.Asterisk.Play();

     }
我用这段代码将数据网格数据写入一个文本文件

    public static void WriteDataToFile(DataTable submittedDataTable, string submittedFilePath)
    {
        int i = 0;
        StreamWriter sw = null;

        sw = new StreamWriter(submittedFilePath, false);

        for (i = 0; i < submittedDataTable.Columns.Count - 1; i++)
        {

            sw.Write(submittedDataTable.Columns[i].ColumnName + ";");

        }
        sw.Write(submittedDataTable.Columns[i].ColumnName);
        sw.WriteLine();

        foreach (DataRow row in submittedDataTable.Rows)
        {
            object[] array = row.ItemArray;

            for (i = 0; i < array.Length - 1; i++)
            {
                sw.Write(array[i].ToString() + ";");
            }
            sw.Write(array[i].ToString());
            sw.WriteLine();

        }

        sw.Close();
    }
public静态void writeDataTable(数据表submittedDataTable,字符串submittedFilePath)
{
int i=0;
StreamWriter sw=null;
sw=新StreamWriter(submittedFilePath,false);
对于(i=0;i
但当我使用这段代码时,所有列都被写入文本文件。我的问题是,在哪里可以更新代码以只编写特定列(而不是所有列)

尝试以下更改:

        public static void WriteDataToFile(DataTable submittedDataTable, string submittedFilePath)
        {
            string[] columnNames = { "Column A", "Column B", "Column C", "Column D" };
            int[] columnIndexes = submittedDataTable.Columns.Cast<DataColumn>().Where(x => columnNames.Contains(x.ColumnName)).Select(x => x.Ordinal).ToArray();

            int i = 0;
            StreamWriter sw = null;

            sw = new StreamWriter(submittedFilePath, false);

            sw.WriteLine(string.Join(";", columnNames));

            foreach (DataRow row in submittedDataTable.Rows)
            {
                object[] array = row.ItemArray;

                string[] values = columnIndexes.Select(x => array[x].ToString()).ToArray();
                string csv = string.Join(";", values);

                sw.WriteLine(csv);
            }

            sw.Close();
        }
public静态void writeDataTable(数据表submittedDataTable,字符串submittedFilePath)
{
字符串[]columnNames={“A列”、“B列”、“C列”、“D列”};
int[]columnIndexes=SubmittedDataable.Columns.Cast()。其中(x=>columnNames.Contains(x.ColumnName))。选择(x=>x.Ordinal.ToArray();
int i=0;
StreamWriter sw=null;
sw=新StreamWriter(submittedFilePath,false);
sw.WriteLine(string.Join(“;”,columnNames));
foreach(submittedDataTable.Rows中的DataRow行)
{
object[]数组=row.ItemArray;
字符串[]值=列索引。选择(x=>array[x].ToString()).ToArray();
字符串csv=string.Join(“;”,值);
软件写入线(csv);
}
sw.Close();
}

您希望写入文件的列可能重复?你如何识别他们?