programing

Excel 스프레드시트의 C#에서 시트 이름을 변경하는 방법

codeshow 2023. 8. 30. 22:18
반응형

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

반응형