c#wpf datagrid将特定列导出到文本文件
我正在使用一个小应用程序,用户可以在其中将datagrid内容写入文本文件。 我使用下面的代码将数据从SQL获取到数据网格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
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();
}
您希望写入文件的列可能重复?你如何识别他们?