Я пытаюсь скопировать диапазон ячеек из одной рабочей книги в другую, она работает нормально, но когда я пытаюсь использовать функцию SaveAs с транспонированием, выдает ошибку:
Система.Reflection.TargetInvocationException: 'Исключение было сгенерировано целью вызова.'
Внутреннее исключение.COMException: метод PasteSpecial класса Range не выполнен
Вот мой код:
private void CopyTranspose(string rawFile, string tempFile, string dataFile, string oldCells, string newCells)
{
try
{
object missing = Type.Missing;
//Copying data
Excel.Application oldApp = new Excel.Application();
oldApp.Application.DisplayAlerts = false;
oldApp.Application.Visible = false;
oldApp.Application.DisplayAlerts = false;
Excel.Workbook oldWorkBook = oldApp.Workbooks.Open(rawFile);
Excel.Worksheet oldWorkSheet = oldWorkBook.Worksheets.get_Item(1);
Excel.Range oldRange = oldWorkSheet.Range[oldCells];
oldRange.Copy(Type.Missing);
//Pasting data
Excel.Application newApp = new Excel.Application();
Excel.Workbook newWorkBook = newApp.Workbooks.Open(tempFile, 0, false);
newApp.Application.DisplayAlerts = false;
newApp.Application.Visible = false;
newApp.Application.DisplayAlerts = false;
Excel.Worksheet newWorkSheet = newWorkBook.Worksheets.get_Item(1);
Excel.Range newRange = newWorkSheet.Range[newCells];
newRange.Select();
newWorkSheet.Paste(Type.Missing, Type.Missing); //This line works but it doesn't do the transpose
newRange.PasteSpecial(Excel.XlPasteType.xlPasteValues,
Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone, true, true); //this line does the transpose but it fails
oldWorkBook.Close(false, null, null);
oldApp.Quit();
//Saving File
newWorkBook.SaveAs(dataFile, missing, missing, missing, missing, false);
newWorkBook.Close(false, null, null);
newApp.Quit();
}
catch (Exception ex) { Console.WriteLine(ex.Message); Console.ReadLine(); }
}
, и это исключение в окне вывода:
Exceptionброшено: «System.Runtime.InteropServices.COMException» в mscorlib.dll Метод PasteSpecial класса Range не удалсянеправильно с моим кодом, спасибо!