[英]Copy first row in excel workbook to a new excel workbook
如何獲取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)
{
}
}
編輯:
我打算進入低級別的東西,但不知道你的專業水平。 如果你想要好的表現,不要使用復制/粘貼。 在這里,我將向您展示一些技巧。 首先立即寫入所有單元格:
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編碼時,您需要了解管理非托管內存 - http://jake.ginnivan.net/vsto-com-interop 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.