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

C# 및 VB.NET WinForms에서 Excel 시트를 가져오고 내보내는 방법 > 블로그 & Tips

본문 바로가기

Spread.NET

블로그 & Tips

C# 및 VB.NET WinForms에서 Excel 시트를 가져오고 내보내는 방법

페이지 정보

작성자 GrapeCity 작성일 2020-08-20 09:31 조회 2,575회 댓글 0건

본문

첨부파일

2017년 Microsoft는 C#과 VB.NET의 개발을 통해 보다 복잡한 기능을 선택하고 VB.NET을 사용하여 가독성을 유지하고 다양한 개념을 관리할 수 있도록 할 것이라고 발표했습니다.이 두 언어는 기술 수준에 따라 개발자에게 다른 방식으로 서비스를 제공하지만 최신 상태를 유지하면서 Word 및 Excel과 같은 프로그램에서 기본 매크로를 수행 할 수 있는 것이 중요합니다.


이 포스팅에서는 .NET 스프레드시트인 Spread.NET 을 사용하여 .NET Windows Forms 애플리케이션에서 직접 Microsoft Excel XLSX 및 XLSM 스프레드시트를 가져오고 내보내는 방법을 살펴볼 것입니다.


실행 중인 애플리케이션 내에서 단 한 줄의 코드를 통해 스프레드시트 인스턴스를 편집하기 위해 런타임에서 Spread Designer 도구를 사용할 것입니다. FpSpread 스프레드시트 컨트롤을 NameBox 및 FormulaTextBox 컨트롤과 통합하는 간단한 프런트엔드 사용자 인터페이스를 만드는 방법과 분할 창을 사용하여 기본 사용자 인터페이스를 만드는 방법, 그리고 C#VB에서 File-Open , File-Save, File-Design 명령을 처리하는 메뉴 아이템을 구현하는 방법을 알아보겠습니다.
 

다음과 같은 개발 환경을 필요로 합니다.
 


1 단계 : 프로젝트 생성


그림 1 – 새 Windows Forms 프로젝트 만들기 (C # 또는 VB)


Visual Studio 2019에서 C#Windows 및 데스크톱을 선택하여 프로젝트를 필터링한 다음 C# 또는 VB Windows Forms 를 선택하여 새 프로젝트를 만듭니다.



2 단계 : 프로젝트 구성


>

그림 2 – 새 Windows Forms 프로젝트 구성


프로젝트 이름에 _Spread.NET_GettingStarted 를 입력하고 하단의 Framework 대상이 .NET Framework 4.5.2 (지원되는 최소 프레임 워크 버전) 이상인지 확인합니다.



3 단계 : 파일 메뉴 만들기


MenuStrip 컨트롤을 폼에 끌어다 놓고 File-OpenFile-SaveFile-Save AsFile-Design 및 File-Exit 아래에 File 메뉴와 메뉴 항목을 만듭니다.


그림 3 – 파일 메뉴 만들기


처음에 파일 - 저장 메뉴 항목을 비활성화해야 합니다. 또한 메뉴 구분자 및 바로 가기 키는 선택 사항이지만 권장합니다. 이후 단계에서 해당 메뉴 항목에 대한 코드를 추가할 것입니다.



4 단계 : SplitContainer1 생성


그림 4 – SplitContainer1 만들기


도구 상자(Containers 아래)에서 SplitContainer 컨트롤을 더블 클릭하여 기본 스프레드시트 컨트롤 및 수식 입력 줄 사용자 인터페이스에 대한 분할 컨테이너를 만듭니다.



5 단계 : SplitContainer1 구성


그림 5 – SplitContainer1 구성


Property Grid를 사용하여 SplitContainer1.Orientation  수직에서 수평으로 변경하고, Panel1MinSize 를 21 로 변경한 후, 위의 그림과 같이 상단 페이지를 최소 크기로 조정합니다. 스프레드시트는 아래쪽 창에 있고 수식 입력 줄 인터페이스는 위쪽 창에 있으며 분할자는 새 줄로 줄 바꿈되는 긴 수식을 표시하기위한 FormulaTextBox 컨트롤의 높이를 결정합니다.



6 단계 : SplitContainer2 생성


그림 6 – SplitContainer2 만들기


Toolbox를 사용하여, 상단 창에 SplitContainer2를 생성하기 위해 SplitContainer1의 맨 위 창(Panel1)에 다른 SplitContainer 인스턴스를 드래그 앤 드롭합니다.이 새로운 SplitContainer에는 NameBox 및 FormulaTextBox 컨트롤이 포함되며 사용자가 양식 너비에 따라 해당 컨트롤의 상대적 너비를 조정할 수 있습니다.



7 단계 : FpSpread 생성


그림 7 – FpSpread 생성


Toolbox를 사용하여 FpSpread 인스턴스를 SplitContainer1의 아래쪽 창(Panel2)으로 끌어다 놓습니다. Spread Designer 도구는 컨트롤을 만들 때 열릴 것입니다. (이것이 기본 동작입니다.)  - 지금은 Spread Designer가 나타나면 그냥 닫으시면 됩니다. 컨트롤의 스마트 태그를 사용하여 부모 컨테이너에서 Dock 클릭하여 Dock 속성을 Fill로 설정합니다.



8 단계 : NameBox 만들기


그림 8 – NameBox 컨트롤 만들기


Toolbox를 사용하여 NameBox 인스턴스를 SplitContainer1 의 상단 창 ( Panel1 )에있는 SplitContainer2 왼쪽 ( Panel1 )에 끌어다 놓은 다음 Property Grid를 사용하여 Dock 속성을 Fill 로 설정 한 다음 컨트롤의 Smart 태그를 열고, NameBox FpSpread 컨트롤에 연결합니다.


그림 9 – FpSpread 에 NameBox 연결



9 단계 : FormulaTextBox 만들기


먼저 Panel 컨트롤을 SplitContainer1의 상단 창(Panel1)에 있는 SplitContainer2의 오른쪽 (Panel2)으로 드래그 앤 드롭 한 다음 Property Grid를 사용하여 Dock 속성을 Fill로 설정하고 BorderStyle을 Fixed Single로 설정합니다.


그림 10 - BorderStyle Fixed Single로 Panel 만들기

FormulaTextBox Panel 컨트롤로 드래그앤드롭하고, Property Grid를 사용하여 Dock 속성을 Fill로 설정하고 BorderStyleNone로 설정한 다음, 컨트롤의 Smart 태그를 열어 FormulaTaxtBox FpSpread 컨트롤에 연결합니다.


그림 11 – FormulaTextBox 를 FpSpread에 연결



10 단계 : FpSpreadDesigner 컴포넌트 만들기


그림 12 – FpSpreadDesigner 컴포넌트 만들기


FpSpreadDesigner 컴포넌트를 도구 상자에서 양식으로 드래그 앤 드롭하여 SheetView 및 MenuStrip 인스턴스 옆의 컴포넌트 트레이에 인스턴스를 만듭니다.



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


그림 13 – 파일 메뉴 항목에 대한 이벤트 처리기 만들기


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


그림 14 – C # 또는 VB 코드로 이벤트 핸들러 생성



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


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


[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]

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



파일(File) - 열기(Open) 코드는 OpenFileDialog를 사용하여 스프레드시트 파일을 찾은 다음 FpSpread.OpenExcel 메서드를 사용하여 선택한 파일을 엽니다. 파일(File) - 저장(Save) 코드는 FpSpread.SaveExcel을 사용하여 스프레드시트를 저장하고 파일(File) - 다른 이름으로 저장(Save as) 코드는 SaveFileDialog를 사용하여 사용자가 파일을 다른 위치 또는 다른 이름을 사용할 수 있도록 합니다.


파일(File) - 디자인(Design) 의 코드는 FpSpreadDesigner.ShowDialog 메서드를 사용하여 런타임에 스프레드 디자이너 도구를 표시하고 변경한 다음 해당 변경 사항을 양식의 스프레드시트 인스턴스에 다시 적용합니다. 마지막으로 파일(File) - 종료(Exit)의 코드는 사용자에게 파일을 저장할 것인지 묻는 메시지를 표시한 다음 Close 메서드를 사용하여 양식을 닫습니다.



빌드하고 실행할 준비가 되었습니다!


그림 15 – 프로젝트 실행 및 파일 사용 -디자인


프로젝트를 빌드하고 실행할 준비가 되었습니다. 파일(File) - 디자인(Design) 메뉴를 통해 위와 같이 런타임에 스프레드 디자이너 도구가 열리고, 양식에서 실행되는 스프레드시트 인스턴스에 다시 변경 사항을 적용할 수 있습니다.


첨부 파일을 통해 샘플을 다운로드하실 수 있습니다.


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

댓글목록

등록된 댓글이 없습니다.

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

태그1

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