c# - 如何将数据gridview导出到xml
问题描述
您好我正在尝试使用 XDocument 将数据网格视图保存到 XML 文件,但问题是当我单击导出按钮时,数据网格视图变得清晰并且导出的 XML 文件为空
此按钮从多个文本框填充 datagridview:
private void add_Click(object sender, EventArgs e)
{
int n = dataGridView1.Rows.Add();
dataGridView1.Rows[n].Cells[0].Value = txtOne.Text;
dataGridView1.Rows[n].Cells[1].Value = txtTwo.Text;
dataGridView1.Rows[n].Cells[2].Value = txtThree.Text;
}
此按钮导出为 XML:
private void Export_Click(object sender, EventArgs e)
{
const string FILENAME = @"c:\temp\test.xml";
XDocument doc = new XDocument(
new XDeclaration("1.0", "ISO-8859-1", null),
new XElement("root",
dt.AsEnumerable().Select(row => new XElement("child", new object[]{
new XElement("one",row[0]),
new XElement("two",row[1]),
new XElement("three",row[2]),
}));
dataGridView1.DataSource = dt;
doc.Save(FILENAME);
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
saveFileDialog1.InitialDirectory = Convert.ToString(Environment.SpecialFolder.MyDocuments);
saveFileDialog1.Filter = "File Name |*.xml";
saveFileDialog1.FilterIndex = 1;
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
doc.Save(saveFileDialog1.FileName);
}
解决方案
如果要从中读取所有数据DataGridView
并导出到XDocument
,则必须使用两个周期来读取所有行和所有单元格。
private void ExportButton_Click(object sender, EventArgs e)
{
var columnHeaders = (from DataGridViewColumn column in dataGridView1.Columns select column.HeaderText).ToArray();
var xDoc = new XDocument(
new XDeclaration("1.0", "ISO-8859-1", null),
new XElement("root"));
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (row.IsNewRow)
continue;
var xRow = new XElement("row");
foreach (DataGridViewCell cell in row.Cells)
{
xRow.Add(new XElement(columnHeaders[cell.ColumnIndex], cell.Value));
}
xDoc.Element("root")?.Add(xRow);
}
xDoc.Save(@"d:\tmp\test.xml");
}
如果需要,您可以saveFileDialog
从对话框中添加和设置文件名
推荐阅读
- php - MySQLi 显示到 PHP 代码
- html - Angular 4选择框双向数据绑定
- css - 两列四项
- ruby-on-rails - html_safe doesn't work when I call truncate() method
- linux - 403 Forbidden 您无权访问此服务器上的/www/cgibin/webadmin.cgi
- c# - 最佳实践:自定义 asp.net core 身份授权
- rest - Amazon S3 DELETE 请求成功但未返回确认?
- amazon-web-services - 从实例中检索特定标签的值
- java - 将对象值列表转换为组
- javascript - 手动显示工具提示 Chart.js