在C#中将XML导出到Excel时缺less标题

在我的应用程序中,我有一个XML文件。我想将XML导出到Excel文件中xls格式。我的问题是当导出头文件丢失。请find下面的代码。

private string ExportTestDatatoExcel(string testDataPath) { Microsoft.Office.Interop.Excel.Application xlApp; Microsoft.Office.Interop.Excel.Workbook xlWorkBook; Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet; object misValue = System.Reflection.Missing.Value; DataSet ds = new DataSet(); XmlReader xmlFile; int i = 0; int j = 0; xlApp = new Microsoft.Office.Interop.Excel.Application(); xlWorkBook = xlApp.Workbooks.Add(misValue); xlWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); xmlFile = XmlReader.Create(testDataPath, new XmlReaderSettings()); ds.ReadXml(xmlFile); for (i = 0; i <= ds.Tables[0].Rows.Count - 1; i++) { for (j = 0; j <= ds.Tables[0].Columns.Count - 1; j++) { xlWorkSheet.Cells[i + 1, j + 1] = ds.Tables[0].Rows[i].ItemArray[j].ToString(); } } string fileName = Path.GetFileNameWithoutExtension(testDataPath); fileName += ".xls" ; xlWorkBook.SaveAs(Path.GetFullPath(fileName), Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue); xlWorkBook.Close(true, misValue, misValue); xlApp.Quit(); releaseObject(xlApp); releaseObject(xlWorkBook); releaseObject(xlWorkSheet); return Path.GetFullPath(fileName); } private void releaseObject(object obj) { try { System.Runtime.InteropServices.Marshal.ReleaseComObject(obj); obj = null; } catch (Exception ex) { obj = null; } finally { GC.Collect(); } } 

请帮帮我。

您的代码正在按预期写出数据。

就在for循环之前for您需要添加另一个for循环来在表格的第一行添加列标题。

 for(int k = 0; k < ds.Tables[0].Columns.Count - 1; k++) { xlWorkSheet.Cells[1, k + 1] = ds.Tables[0].Columns[k].ColumnName; } 

那么在我们的outter for循环中,您需要初始化i = 1来考虑标题行。

感谢巴里参考。它应该工作时,循环如下
for (i = 0; i <= ds.Tables[0].Rows.Count - 1; i++) { for (j = 0; j <= ds.Tables[0].Columns.Count-1; j++) { for (int k = 0; k < ds.Tables[0].Columns.Count; k++) {
xlWorkSheet.Cells[1, k + 1] = ds.Tables[0].Columns[k].ColumnName;
} xlWorkSheet.Cells[i + 2, j + 1] = ds.Tables[0].Rows[i].ItemArray[j].ToString(); } }