将excel工作簿中的第一行复制到一个新的excel工作簿中

如何获得Excel工作簿中的第一行并使用.net c#将其保存到新的Excel工作簿? 我不知道列的数量,所以需要整行。 这是我有,但新的工作簿是空白的(没有行复制)

Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(file); Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1]; Excel.Range xlRangeHeader = xlWorksheet.get_Range("A1", "A1").EntireRow; Excel.Workbook xlWorkbookNew = xlApp.Workbooks.Add(); Excel._Worksheet xlWorksheetNew = xlWorkbookNew.Sheets[1]; xlWorksheetNew.get_Range("A1", "A1").EntireRow.Value = xlRangeHeader; xlWorkbook.Close(false); xlWorkbookNew.SaveAs(Path.Combine(sDestination, Path.GetFileName(file)), fileFormat); xlWorkbookNew.Close(true); 

试试这个代码:

 xlWorksheetNew.get_Range("A1", "A1").EntireRow.Value = xlRangeHeader.Value; 

要么

 xlWorksheetNew.get_Range("A1", "A1").EntireRow.Value = xlWorksheet.get_Range("A1", "A1").EntireRow.Value; 
 public void test(Application xlApp) { string file = @"C:\Temp\a.xlsx"; Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(file); Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1]; xlWorksheet.Range["A1"].EntireRow.Copy(); Excel.Workbook xlWorkbookNew = xlApp.Workbooks.Add(); Excel._Worksheet xlWorksheetNew = xlWorkbookNew.Sheets[1]; Worksheet activeSheet = xlWorkbookNew.ActiveSheet; activeSheet.Paste(); xlWorkbook.Close(false); xlWorkbookNew.SaveAs(Path.Combine(@"C:\Temp", Path.GetFileName(file))); xlWorkbookNew.Close(true); CloseExcel(); } public void CloseExcel(Application xlApp) { try { if (xlApp != null) { xlApp.Quit(); if (Marshal.IsComObject(xlApp)) Marshal.ReleaseComObject(xlApp); } } catch (Exception ex) { } } 

编辑:

我打算进入低水平的东西,但不知道你的专业水平。 如果你想要好的performance不使用复制/粘贴。 在这里,我会告诉你一些小窍门。 首先写信给所有的细胞:

 object[,] values = (object[,])Array.CreateInstance(typeof(object), new int[2] { rowCount, ColumnCount }, new int[2] { 1, 1 }); 

//在这里填充值,然后将数据写入Excel中:

 using (var targetRange = xlApp.Range[topLeft + startRow + ":" + rightBottom + endRow].WithComCleanup()) { targetRange.Resource.Value2 = values; } 

其次,注意.WithComCleanup() – 在进行VSTO编码时,您需要注意pipe理非托pipe内存 – http://jake.ginnivan.net/vsto-com-interop