반응형
Excel 스프레드시트의 C#에서 시트 이름을 변경하는 방법
데이터베이스의 데이터에서 수많은 Excel 파일을 만드는 C# 응용프로그램이 있습니다.이 부분은 잘 작동하고 있습니다.그러나 사용자가 데이터베이스의 필드를 반영하도록 시트 탭을 수정할 수 있는지 문의했습니다.이름을 재설정하려고 하면 읽기 전용이며 설정할 수 없다는 메시지가 나타납니다.다음을 시도했지만 작동하지 않았습니다.
xlApp.Sheets[0].Range["A1"].Value = "NewTabName";
시도:
xlApp.Name = "NewTabName";
구글 검색을 해보니 저에게도 통하지 않는 다른 접근법들이 있었습니다.그리고 몇 가지 응답은 읽기 전용이며 수행할 수 없음을 나타냅니다.
이것은 단순해야 할 것처럼 보입니다.어떻게 해야 돼요.
실제 워크시트에 액세스해야 합니다.다음과 같은 방법을 사용해 보십시오.
Microsoft.Office.Interop.Excel.Worksheet worksheet = (Worksheet)xlApp.Worksheets["Sheet1"];
worksheet.Name = “NewTabName”;
여기 기존 코드에서 복사하는 상당히 완전한 예가 있습니다.
Office 365의 Excel을 사용하여 Windows 10에서 완벽하게 작동합니다.
Microsoft에 대한 참조를 추가해야 합니다.사무실.Interop.Excel
이 DLL에 대한 내 경로(사무실 버전에 따라 다를 수 있음) - C:\WINDOWS\어셈블리\GAC_MSIL\Microsoft.사무실.인터럽트.Excel\15.0.0__71e9bce111e9429c\Microsoft.사무실.인터럽트.Excel.dll
// Add this at top of C# file -
using Excel = Microsoft.Office.Interop.Excel;
// In your class or function -
private static Excel.Application XlApp = null;
private static Excel.Workbook XlWorkbook = null;
// In your function -
XlApp = new Excel.ApplicationClass();
// Load workbook
XlWorkbook = XlApp.Workbooks.Open(@"Filename.xls",
0, false, Type.Missing, "", "", true, Excel.XlPlatform.xlWindows,
Type.Missing, Type.Missing, Type.Missing,
Type.Missing, true, Type.Missing,
Type.Missing);
// Get reference to sheet
XlWorksheet = (Excel.Worksheet)XlWorkbook.Worksheets["Sheet1"];
int numsheets = XlWorkbook.Sheets.Count;
// iterates through all sheets (1-n inclusive, not zero based)
for(int i=1;i<=numsheets;i++)
{
Excel.Worksheet sht = (Excel.Worksheet)XlWorkbook.Worksheets[i];
// Show sheet name
Console.WriteLine(i+" "+sht.Name);
}
// To save with a same or different filename
XlWorkbook.SaveAs(@"Filename.xls",
Excel.XlFileFormat.xlWorkbookNormal, "",
"", false, false,
Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing,
true, Type.Missing, Type.Missing, Type.Missing);
// Close Excel
XlWorkbook.Close(true, Type.Missing, Type.Missing);
XlApp.Quit();
// Ensure you release resources
releaseObject(XlApp);
releaseObject(XlWorkbook);
releaseObject(XlWorksheet);
위에서 별도의 함수 호출
private static void releaseObject(object obj)
{
// try .. catch
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
}
언급URL : https://stackoverflow.com/questions/1829044/how-do-i-change-the-sheet-name-from-c-sharp-on-an-excel-spreadsheet
반응형
'programing' 카테고리의 다른 글
Express가 멋지게 포맷된 HTML을 출력하려면 어떻게 해야 합니까? (0) | 2023.08.30 |
---|---|
여러 열에서 내부 조인을 수행하는 방법 (0) | 2023.08.30 |
Ebean - 동적 쿼리 - 준비된 문의 불일치 매개 변수 개수 오류 (0) | 2023.08.30 |
고유 키가 정의된 mariadb 테이블의 이상한 동작(즉, 고유하지 않음) (0) | 2023.08.30 |
열려 있는 파일 구조에서 파일 핸들을 가져오려면 어떻게 해야 합니까? (0) | 2023.08.30 |