DataTable转XML输出
DataTable dt = new DataTable(); das.Fill(dt); int rows = 1; XElement rtnXml = new XElement("Response"); for (int i = 0; i < rows; i++) { DataRow row = dt.Rows[i]; XElement tmpjl = new XElement("Data", new XElement("Name", row["UserName"].ToString().Trim()), new XElement("Phone", row["Phone"].ToString().Trim()) ); rtnXml.Add(tmpjl); } StringBuilder sb = new StringBuilder(); StringWriter sw = new StringWriter(sb); rtnXml.Save(sw, SaveOptions.DisableFormatting); string xml = sb.ToString(); Response.Write(xml);
sb.AppendLine(" <Worksheet ss:Name=\"Sheet1\">");
sb.AppendLine(" <Table>");
//
// 输出标题
//
sb.AppendLine(" <Row>");
if (displayColumnCaptions != null)
{
// 输出指定列标题
for (int i = 0; i < displayColumnCaptions.Length; i++)
sb.AppendLine(" <Cell><Data ss:Type=\"String\">" + displayColumnCaptions[i] + "</Data></Cell>");
}
else if (displayColumnNames != null)
{
// 输出展示列标题
for (int i = 0; i < displayColumnNames.Length; i++)
sb.AppendLine(" <Cell><Data ss:Type=\"String\">" + displayColumnNames[i] + "</Data></Cell>");
}
else
{
// 输出所有列标题
for (int i = 0; i < dt.Columns.Count; i++)
sb.AppendLine(" <Cell><Data ss:Type=\"String\">" + dt.Columns[i].Caption + "</Data></Cell>");
}
sb.AppendLine(" </Row>");
//
// 输出数据
//
if (displayColumnNames != null)
{
// 输出指定列数据
foreach (DataRow dr in dt.Rows)
{
sb.AppendLine(" <Row>");
foreach (string colName in displayColumnNames)
sb.AppendLine(" <Cell><Data ss:Type=\"String\">" + dr[colName].ToString() + "</Data></Cell>");
sb.AppendLine(" </Row>");
}
}
else
{
//输出所有列数据
foreach (DataRow dr in dt.Rows)
{
sb.AppendLine(" <Row>");
Object[] ary = dr.ItemArray;
for (int i = 0; i <= ary.GetUpperBound(0); i++)
sb.AppendLine(" <Cell><Data ss:Type=\"String\">" + ary[i].ToString() + "</Data></Cell>");
sb.AppendLine(" </Row>");
}
}
// 表结束
sb.AppendLine(" </Table>");
sb.AppendLine(" </Worksheet>");
sb.AppendLine("</Workbook>");
return sb.ToString();
}
此外需注意,必须导出为 UTF-8格式的xml,否则excel 无法打开该文件,会报错滴~