Excel Interop - 다른 워크시트를 모두 추가합니다.
새로운 워크시트를 Excel 워크북에 추가하여 C# Excel Interop의 마지막 워크시트로 만들려고 합니다.
이것은 정말 간단해 보이고, 저는 아래 코드가 그것을 할 것이라고 생각했습니다:
using System.Runtime.InteropServices;
using Excel = Microsoft.Office.Interop.Excel;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
var excel = new Excel.Application();
var workbook = excel.Workbooks.Open(@"C:\test\Test.xlsx");
workbook.Sheets.Add(After: workbook.Sheets.Count);
workbook.Save();
workbook.Close();
Marshal.ReleaseComObject(excel);
}
}
}
운이 별로 없는.다음과 같은 유용한 오류가 발생합니다.
COME 예외가 처리되지 않았습니다 - HRESULT에서 예외: 0x800A03EC
저는 Microsoft.com 에서 이 페이지를 발견했는데, 먼저 시트를 추가한 후에 시트를 이동하여 아래와 같이 시도했습니다.이 웹 페이지가 Excel 95를 대상으로 한다는 것을 알고 있지만 VBA는 여전히 사용할 수 있기 때문에 계속 작동하기를 희망했습니다.
using System.Runtime.InteropServices;
using Excel = Microsoft.Office.Interop.Excel;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
var excel = new Excel.Application();
var workbook = excel.Workbooks.Open(@"C:\test\Test.xlsx");
workbook.Sheets.Add();
workbook.Sheets.Move(After: workbook.Sheets.Count);
workbook.Save();
workbook.Close();
Marshal.ReleaseComObject(excel);
}
}
}
위와 같은 오류가 발생합니다.나는 또한 나의 마지막 워크시트의 이름을 문자열로 전달하려고 시도했습니다.After
두 가지 모두에 있는 매개 변수Add
그리고.Move
방법, 기쁨이 없습니다!
이것이 제가 시도한 것입니다. 그래서 제 질문은 어떻게 하면 C# Excel Interop을 사용하여 Excel 워크북에 워크시트를 추가하고 워크북의 마지막 시트로 만들 수 있을까요?
감사해요.
여기 http://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.worksheet.move(v=vs.80).aspx, 의 설명서를 보면 '다음' 개체가 숫자 위치가 아니라 시트를 배치하려는 시트를 나타내는 개체라는 것을 알 수 있습니다.코드는 다음과 같은 것이어야 합니다(테스트되지 않음).
workbook.Sheets.Add(After: workbook.Sheets[workbook.Sheets.Count]);
이 작업을 수행해야 합니다.
wSheet.Move(Missing.Value, workbook.Sheets[workbook.Sheets.Count]);
이것이 저에게 맞는 유일한 방법입니다.
xlWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets.Add
(System.Reflection.Missing.Value,
xlWorkBook.Worksheets[xlWorkBook.Worksheets.Count],
System.Reflection.Missing.Value,
System.Reflection.Missing.Value);
저한테는 효과가 있어요.
WorkBook.Worksheets.Add(
System.Reflection.Missing.Value,
WorkBook.Worksheets[WorkBook.Worksheets.Count],
1,
System.Reflection.Missing.Value);
언급URL : https://stackoverflow.com/questions/12156302/excel-interop-add-a-new-worksheet-after-all-of-the-others
'programing' 카테고리의 다른 글
WPF: 코드 뒤에 있는 코드 없이 View Model에서 View로 이벤트 신호를 보내는 방법은 무엇입니까? (0) | 2023.04.26 |
---|---|
목록 랜덤화 (0) | 2023.04.26 |
지정된 문화 또는 중립 문화에 적합한 리소스를 찾을 수 없습니다. (0) | 2023.04.26 |
Visual Studio 2015 추가 디버그 옵션 사용 안 함 (0) | 2023.04.26 |
PowerShell에서 DateTime을 포맷하는 방법 (0) | 2023.04.26 |