前台:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml.Linq;
using System.Data;
using WebApplication1.common;
namespace WebApplication1.Excel1.toxml
{
public partial class test2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
excel_to.ExcelConvertToXml(Server.MapPath("../data/test1.xls"), Server.MapPath("../data/test2.xml"));
}
}
}
类:
public static void ExcelConvertToXml(string excel_path,string xml_path)
{
//这个控件应该在aspx文件中定义.
string path = excel_path;
string connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path +
";Extended Properties='Excel 8.0;HDR=yes;IMEX=1;'";
string selectCommand = " SELECT * FROM [test$] ";
System.Data.DataTable dt = new System.Data.DataTable();
using (var conn = new System.Data.OleDb.OleDbConnection(connString))
{
var adt = new System.Data.OleDb.OleDbDataAdapter(selectCommand, conn);
adt.Fill(dt);
}
var root = new XElement("ImportFromExcel");
var lstHeader = new List<string>();
foreach (System.Data.DataColumn dc in dt.Columns)
lstHeader.Add(dc.ColumnName);
var data = new XElement("Data");
XElement row;
foreach (System.Data.DataRow dr in dt.Rows)
{
row = new XElement("add");
for (int i = 0; i < lstHeader.Count; i++)
row.Add(new XAttribute(lstHeader[i], dr[i].ToString()));
data.Add(row);
}
root.Add(data);
root.Save(xml_path);
}
