! 제품 버전을 정확하게 입력해 주세요.
제품 버전이 정확하게 기재되어 있지 않은 경우,
최신 버전을 기준으로 안내 드리므로
더욱 빠르고 명확한 안내를 위해
제품 버전을 정확하게 입력해 주세요!

WinForms C# 및 VB.NET에서 Excel XLSX를 가져오고 내보내는 방법 > 온라인 스터디

본문 바로가기

Spread.NET

온라인 스터디

8. Excel 입출력 WinForms C# 및 VB.NET에서 Excel XLSX를 가져오고 내보내는 방법

페이지 정보

작성자 MESCIUS 작성일 2023-11-23 13:27 조회 130회 댓글 0건

본문

이번 스터디에서는 Spread.NET을 사용해 .NET WinForms 응용 프로그램에서 직접 Microsoft Excel XLSX 및 XLSM 스프레드시트를 가져오고 내보내는 방법을 설명합니다.


실행 중인 응용 프로그램 내에서 코드 한 줄만으로 Excel 스프레드시트 인스턴스를 편집하기 위해 런타임에 Spread Designer 도구를 사용합니다.


최종적으로 분할 창을 사용하여 FpSpread 스프레드시트 컨트롤과 NameBoxFormulaTextBox 컨트롤을 통합하는 간단한 프론트 엔드 스프레드시트 사용자 인터페이스를 생성합니다.


C#VB에서 파일 - 열기, 파일 - 저장파일 - 디자인 명령을 처리하는 메뉴 항목을 구현하는 방법을 사용할 것입니다. 


C# 및 VB.net WinForms에서 Excel XLSX 스프레드시트를 가져오고 내보내는 단계입니다.

이 단계는 다음이 필요합니다.

  • Microsoft Visual Studio 2022 (참고: 이 단계는 VS2022 및 .NET 6용입니다. 하지만 Spread.NET WinForms는 동일한 단계에 따라 대상이 .NET 4.6.2+를 대상으로 하는 이전 버전의 Visual Studio에서도 실행 가능합니다.)

  • WinForms용 Spread.NET (평가판 또는 라이선스)


샘플 파일을 다운로드받아 함께 진행해 주시길 바랍니다.

 
1단계: 프로젝트 만들기 


새 프로젝트 만들기


프로젝트를 필터링할 C#, WindowsDesktop을 선택하여 Visual Studio 2022에서 새 프로젝트를 만듭니다.


그 다음, C# 또는 VB WinForms 응용 프로그램 중 하나를 선택합니다.


 

2단계: 프로젝트 구성 


새 프로젝트 구성

프로젝트 이름으로 SpreadNetQuickStart입력합니다.


 

3단계: 파일 메뉴 만들기 


​이제 메뉴 및 도구 모음 카테고리의 도구 상자 창(F4)에서 MenuStrip을 추가합니다.


MenuStrip 컴포넌트를 두 번 클릭하여 다음 형식의 새 MenuStrip을 만들어 보겠습니다.

메뉴 스트립


연결된 바로 가기 키를 사용하여 파일 - 열기, 파일 - 저장, 파일 - 다른 이름으로 저장, 파일 - 디자인, 파일 - 종료에 해당하는 메뉴 항목을 만듭니다.

디자인


파일 - 저장 메뉴 항목은 처음에는 비활성화되어 있어야 합니다.


메뉴 구분 기호(메뉴 구분 기호를 만들려면 메뉴 항목 텍스트에 "-" 사용) 및 바로 가기 키는 선택 사항이지만 만드는 것을 권장합니다.

메뉴 항목에 대한 코드는 추후 단계에서 추가할 예정입니다. 


 

4단계: SplitContainer1 만들기 


⚠️ 참고: splitter(분할기)를 추가하는 것이 FpSpread를 사용하는 데에 반드시 필요한 것은 아닙니다. 하지만 SplitContainer 컨트롤​은 코드 없이 스프레드시트, 이름 입력란, 수식 텍스트 상자 컨트롤 등의 크기를 자동으로 조정하기 때문에 유연한 스프레드시트 인터페이스를 쉽게 만들 수 있습니다.


도구 상자(CTRL+ALT+X)에서 컨테이너 카테고리를 확장합니다.


SplitContainer 컨트롤을 두 번 클릭하여 splitContainer1을 만듭니다.

컨테이너 분할


 

5단계: SplitContainer1 구성 


속성 창(F4)에서 splitContainer1방향가로로 설정한 후 Palen1MinSizeSplitterDistance23으로 설정합니다.

방향


스프레드시트는 하단 창에 있고, 수식 입력줄 인터페이스는 상단 창에 있습니다.


Splitter(분할기)는 새 줄로 줄 감싸는 긴 수식을 표시하기 위한 FormulaTextBox 컨트롤의 높이를 결정합니다.


 

6단계: SplitContainer2 만들기 


도구 상자(CTRL+ALT+X)에서 새 SplitContainersplitContainer1의 상단 창(Panel1)으로 드래그 앤 드롭하여 splitContainer2를 만듭니다.

컨테이너 분할


속성 창(F4)에서 splitContainer2Panel1MinSizeSplitterDistance150으로 설정합니다.

SplitterDistance


 

7단계: FpSpread 만들기 


솔루션 탐색기에서 솔루션 SpreadNetQuickStart프로젝트 SpreadNetQuickStart를 확장합니다.


그 다음, 종속성을 마우스 오른쪽 버튼으로 클릭한 후 NuGet 패키지 관리를 선택합니다.

단축키 ALT+P+N+N+N+ENTER 누르는 방법도 있습니다.

NuGet 패키지 관리


그런 다음 NuGet 패키지 관리자에서 왼쪽 상단에 있는 찾아보기를 선택합니다.


검색 상자에 Spread.WinForms를 입력하여 최신 GrapeCity.Spread.WinForms를 찾은 후 설치를 클릭합니다.

SpreadNet QuickStart


GrapeCity.Spread.WinForms를 설치한 후, GrapeCity.Spread.WinForms.Design도 설치해 주세요.


이 패키지에는 Spread Designer 도구를 런타임으로 표시하기 위한 fpSpreadDesigner 컴포넌트가 들어 있습니다.


도구 상자(CTRL+ALT+X)에서 FpSpread 컨트롤을 선택합니다.

FpSpread


마지막으로 SplitContainer1의 하단 창(Panel2)으로 FpSpread의 인스턴스를 끌어옵니다.


컨트롤을 생성할 때 Spred Designer 도구가 열릴 수 있습니다.


지금은 Spread Designer가 나타나면 닫으십시오.

패널


속성 표(F4)를 사용하여 도킹 속성을 Fill(채우기)로 설정합니다.

Duckbill


 

8단계: 이름 입력란 만들기 


도구 상자(CTRL+ALT+X)에서 WinForms용 GrapeCity Spread 카테고리를 확장하고 NameBox 컨트롤을 선택합니다.

이름 입력란


왼쪽 상단의 Panel1(SplitContiner2.Panel1) 안에 NameBox을 끌어당겨 둡니다.

패널


속성 창(F4)에서 nameBox1도킹Fill(채우기)로 설정합니다.

도킹 채우기


NameBox1의 오른쪽 상단에 있는 표시기를 클릭하여 NameBox 작업을 열겠습니다.


다음으로 AttachTo 드롭다운을 클릭하고 fpSpread1을 선택합니다.


NameBox 컨트롤을 FpSpread 컨트롤에 첨부하기 위한 code-behind 형식의 코드가 생성됩니다.

FpSpread


 

9단계: FormulaTextBox 만들기 


도구 상자(CTRL+ALT+X)에서 컨테이너를 확장하고 패널 컨트롤을 선택합니다.

패널 컨트롤


Panel2(NameBox1의 오른쪽) 안에 새 패널을 끌어옵니다.

새 패널 그리기


속성 창(F4)에서 panel1BorderStyleFixedSingle로 설정하고 도킹Fill(채우기)로 설정합니다.

고정 단일


도구 상자(CTRL+ALT+X)에서 FormulaTextBox 컨트롤을 선택합니다.

수식 텍스트 상자


panel1(splitContainer2.Panel2 내부에 있음) 안에 새 FormulaTextBox 컨트롤을 끌어옵니다.

패널 1


속성 창(F4)에서 formulaTextBox1BorderStyle없음으로 설정하고 도킹Fill(채우기)로 설정합니다.

테두리 스타일


formulaTextBox1의 오른쪽 상단에 있는 표시기를 클릭하여 FormulaTextBox 작업을 연 다음 AttachTo 드롭다운을 클릭하고 fpSpread1을 선택합니다.


그러면 FormulaTextBox 컨트롤을 FpSpread 컨트롤에 첨부하기 위한 code-behind 형식의 코드가 생성됩니다.

FpSpread1


 

10단계: WinForms 스프레드시트 디자이너 컴포넌트 만들기 


이제 도구 상자 창(CTRL+ALT+X)의 WinForms용 GrapeCity Spread Design WinForms 카테고리에서 FpSpreadDesigner 컴포넌트를 두 번 클릭하여 다음 형식의 새 FpSpreadDesigner를 만듭니다.

FpSpreadDesigner


방금 추가한 fpSpreadDesigner1 컴포넌트 menuStrip1 fpSpread1_Sheet1 컴포넌트 옆의 양식 컴포넌트 트레이에 표시됩니다.

FpSpreadDesigner


 

11단계: 파일 메뉴 항목 이벤트 처리기 만들기 


파일 메뉴 처리기 만들기


파일 메뉴의 각 메뉴 항목에 대해 디자인 보기에서 VB 또는 C# 코드에서 생성된 관련 메뉴 처리기가 있을 때까지 해당 메뉴 항목을 두 번 클릭합니다.

파일 메뉴 처리기 만들기


 

12단계: 이벤트 처리기 코드 추가 


다음 코드를 복사하여 이벤트 처리기를 구현합니다.


[C#]


이벤트 처리기 코드 C# 추가

private string mFileName = null;
 
private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
    OpenFileDialog ofd = new OpenFileDialog();
    ofd.Filter = "Excel Spreadsheet (*.XLSX;*.XLSM)|*.XLSX;*.XLSM";
    ofd.FilterIndex = 0;
    if (ofd.ShowDialog() == DialogResult.OK)
    {
        mFileName = ofd.FileName;
        fpSpread1.OpenExcel(mFileName);
        saveToolStripMenuItem.Enabled = true;
    }
}
 
private void saveToolStripMenuItem_Click(object sender, EventArgs e)
{
    fpSpread1.SaveExcel(mFileName);
}
 
private void saveAsToolStripMenuItem_Click(object sender, EventArgs e)
{
    SaveFileDialog sfd = new SaveFileDialog();
    sfd.Filter = "Excel Spreadsheet (*.XLSX;*.XLSM)|*.XLSX;*.XLSM";
    sfd.FilterIndex = 0;
    sfd.FileName = mFileName;
    if (sfd.ShowDialog() == DialogResult.OK)
    {
        mFileName = sfd.FileName;
        fpSpread1.SaveExcel(mFileName);
        saveToolStripMenuItem.Enabled = true;
    }
}
 
private void designToolStripMenuItem_Click(object sender, EventArgs e)
{
    fpSpreadDesigner1.ShowDialog(fpSpread1);
}
 
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
    DialogResult ret = MessageBox.Show("Do you want to save this file before closing?", "Save Spreadsheet", MessageBoxButtons.YesNoCancel);
    if (ret == DialogResult.Cancel)
        return;
    else if (ret == DialogResult.Yes)
        saveToolStripMenuItem_Click(null, EventArgs.Empty);
    Close();
}



[VB]


이벤트 처리기 코드 VB 추가

Private mFileName As String = Nothing
 
Private Sub OpenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles OpenToolStripMenuItem.Click
    Dim ofd As New OpenFileDialog
    ofd.Filter = "Excel Spreadsheet (*.XLSX;*.XLSM)|*.XLSX;*.XLSM"
    ofd.FilterIndex = 0
    If ofd.ShowDialog() = DialogResult.OK Then
        mFileName = ofd.FileName
        FpSpread1.OpenExcel(mFileName)
        SaveToolStripMenuItem.Enabled = True
    End If
End Sub
 
 
Private Sub SaveToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SaveToolStripMenuItem.Click
    FpSpread1.SaveExcel(mFileName)
End Sub
 
Private Sub SaveAsToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SaveAsToolStripMenuItem.Click
    Dim sfd As SaveFileDialog = New SaveFileDialog()
    sfd.Filter = "Excel Spreadsheet (*.XLSX;*.XLSM)|*.XLSX;*.XLSM"
    sfd.FilterIndex = 0
    sfd.FileName = mFileName
    If sfd.ShowDialog() = DialogResult.OK Then
        mFileName = sfd.FileName
        FpSpread1.SaveExcel(mFileName)
        SaveToolStripMenuItem.Enabled = True
    End If
End Sub
 
Private Sub DesignToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DesignToolStripMenuItem.Click
    FpSpreadDesigner1.ShowDialog(FpSpread1)
End Sub
 
Private Sub ExitToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ExitToolStripMenuItem.Click
    Dim ret As DialogResult = MessageBox.Show("Do you want to save this file before closing?", "Closing", MessageBoxButtons.YesNoCancel)
    If ret = DialogResult.Cancel Then
        Return
    ElseIf ret = DialogResult.Yes Then
        SaveToolStripMenuItem_Click(Nothing, EventArgs.Empty)
    End If
    Close()
End Sub


파일 - 열기 코드는 OpenFileDialog를 사용하여 스프레드시트 파일을 찾은 다음 FpSpread.OpenExcel 메서드를 사용하여 선택한 파일을 엽니다.


파일 - 저장 코드는 FpSpread.SaveExcel을 사용하여 스프레드시트를 저장합니다.


파일 - 다른 이름으로 저장 코드는 SaveFileDialog를 사용해 사용자가 파일을 다른 위치에 저장하거나 다른 이름을 사용할 수 있습니다.


이 기능을 사용하면 C# 또는 VB.net Excel을 가져오고 내보낼 수 있습니다. 


파일 - 디자인 코드는 FpSpreadDesigner.ShowDialog 메서드를 사용하여 런타임에 Spread Designer 도구를 표시하고 변경한 다음 변경 사항을 폼의 스프레드시트 인스턴스에 다시 적용합니다.


파일 - 종료 코드는 파일을 저장할지 묻는 메시지를 표시한 다음 Close 메서드를 사용하여 폼을 닫습니다.



빌드 및 실행 준비 완료


최종 결과


프로젝트를 빌드하고 실행할 준비가 되었습니다.


파일 - 디자인 메뉴를 사용하면 위와 같이 런타임에 Spread Designer 도구가 열리고 폼에서 실행 중인 스프레드시트 인스턴스에 변경 내용을 적용할 수 있습니다.


Spread.NET이 응용 프로그램 내에서 C# 또는 VB.net을 사용하여 Excel XLSX 스프레드시트를 가져오고 내보내는 기능을 어떻게 제공할 수 있는지 알아보았습니다!


다른 기사 시리즈에서는,

을 설명합니다. 






지금 바로 Spread.NET을 다운로드하여 직접 테스트해 보세요!

  • 페이스북으로 공유
  • 트위터로  공유
  • 링크 복사
  • 카카오톡으로 보내기

댓글목록

등록된 댓글이 없습니다.

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기

태그1

인기글

더보기
  • 인기 게시물이 없습니다.
메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@mescius.com | 전화 : 1670-0583 | 경기도 과천시 과천대로 7길 33, 디테크타워 B동 1107호 메시어스(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 ⓒ 2024 MESCIUS inc. All rights reserved.