将Datagridview导出到XML文件C# [英] Export Datagridview To XML File C#
本文介绍了将Datagridview导出到XML文件C#的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个要求,我需要从excel文件中导出数据,然后将数据导入到"datagridview"中以指定格式"xml".首先,我从excel中填充到datagrid并另存为Xml,如下代码所示
I have a requirement where I need to export data from excel file that import to a 'datagridview' to a specified format 'xml' firstly I fill to datagrid from excel and save as Xml ,folowing this code
namespace SAMPLE_
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
在这里,我正在使用Microsoft Office Interop Excel导入Excel文件:
Here I am using Microsoft Office Interop Excel to import Excel file:
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
Microsoft.Office.Interop.Excel.Application xlApp;
Microsoft.Office.Interop.Excel.Workbook xlWorkBook;
Microsoft.Office.Interop.Excel.Worksheet xlWorlSheet;
Microsoft.Office.Interop.Excel.Range xlRange;
int xlRow;
string strfileName;
openFilalog1.Filter = "Excel Office | *.xls; *.xlsx";
openFilalog1.ShowDialog();
strfileName = openFilalog1.FileName;
if(strfileName != string.Empty)
{
xlApp = new Microsoft.Office.Interop.Excel.Application();
xlWorkBook = xlApp.Workbooks.Open(strfileName);
xlWorlSheet = xlWorkBook.Worksheets["SHEET1"];
xlRange = xlWorlSheet.UsedRange;
int i=0;
for (xlRow = 2; xlRow <= xlRange.Rows.Count; xlRow++)
{
if(xlRange.Cells[xlRow,2].Text != "")
{
i++;
dataGridView1.Rows.Add(i, xlRange.Cells[xlRow, 1].Text, xlRange.Cells[xlRow,
2].Text,
xlRange.Cells[xlRow, 3].Text, xlRange.Cells[xlRow, 4].Text,
xlRange.Cells[xlRow, 5].Text, xlRange.Cells[xlRow, 6].Text,
xlRange.Cells[xlRow, 7].Text, xlRange.Cells[xlRow, 8].Text,
xlRange.Cells[xlRow, 9].Text,xlRange.Cells[xlRow, 10].Text,
xlRange.Cells[xlRow, 11].Text,xlRange.Cells[xlRow, 12].Text,
xlRange.Cells[xlRow, 13].Text);
}
}
xlWorkBook.Close();
xlApp.Quit();
}
这是我用来导出的按钮:
This is the button I use to export:
private void button1_Click(object sender, EventArgs e)
{
DataSet ds = (DataSet)dataGridView1.DataSource;
SaveFilalog sfd = new SaveFilalog();
sfd.Filter = "SHEET1|*.xml";
if (sfd.ShowDialog() == DialogResult.OK)
{
try
{
ds.Tables[0].WriteXml(sfd.FileName);
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
}
private void button2_Click(object sender, EventArgs e)
{
}
}
}
推荐答案
从数据表中可以看到像这样的
From a datatable it would be something like this
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
DataTable dt = new DataTable();
dt.Columns.Add("id", typeof(string));
dt.Columns.Add("name", typeof(string));
dt.Columns.Add("last", typeof(string));
dt.Columns.Add("phone", typeof(string));
dt.Columns.Add("adresse", typeof(string));
dt.Columns.Add("citie", typeof(string));
dt.Columns.Add("age", typeof(string));
dt.Columns.Add("mp", typeof(string));
dt.Columns.Add("dpa", typeof(string));
dt.Columns.Add("New A", typeof(string));
dt.Columns.Add("New B", typeof(string));
dt.Columns.Add("New C", typeof(string));
dt.Columns.Add("New D", typeof(string));
for (xlRow = 2; xlRow <= xlRange.Rows.Count; xlRow++)
{
if (xlRange.Cells[xlRow, 2].Text != "")
{
dt.Rows.Add(new object[] {
xlRange.Cells[xlRow, 1].Text,
xlRange.Cells[xlRow,2].Text,
xlRange.Cells[xlRow, 3].Text, xlRange.Cells[xlRow, 4].Text,
xlRange.Cells[xlRow, 5].Text, xlRange.Cells[xlRow, 6].Text,
xlRange.Cells[xlRow, 7].Text, xlRange.Cells[xlRow, 8].Text,
xlRange.Cells[xlRow, 9].Text, xlRange.Cells[xlRow, 10].Text,
xlRange.Cells[xlRow, 11].Text, xlRange.Cells[xlRow, 12].Text,
xlRange.Cells[xlRow, 13].Text
});
}
}
dataGridView1.DataSource = dt;
string header = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><Sheet1></Sheet1>";
XDocument doc = XDocument.Parse(header);
XElement sheet1 = doc.Root;
foreach (DataRow row in dt.AsEnumerable())
{
XElement rd = new XElement("rd", new object[] {
new XElement("id", row["id"]),
new XElement("name", row["name"]),
new XElement("last", row["last"]),
new XElement("phone", row["phone"]),
new XElement("refF", new object[] {
new XElement("adresse", row["adresse"]),
new XElement("citie", row["citie"]),
}),
new XElement("age", row["age"]),
new XElement("mp", new XElement("degree", row["mp"])),
new XElement("dpa", row["dpa"])
});
sheet1.Add(rd);
}
doc.Save(FILENAME);
}
}
}
这篇关于将Datagridview导出到XML文件C#的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文