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 명령을 처리하는 메뉴 아이템을 구현하는 방법을 알아보겠습니다.
다음과 같은 개발 환경을 필요로 합니다.
- .NET 4.5.2+ 용 WinForms 개발자 도구가 포함된 Microsoft Visual Studio 2019
- Windows Forms 용 Spread.NET 13 (평가판도 가능합니다.)
- Spread.NET 13 Windows Forms 30일 무료 평가판 다운로드
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-Open, File-Save, File-Save As, File-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로 설정하고 BorderStyle을 None으로 설정한 다음, 컨트롤의 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) 메뉴를 통해 위와 같이 런타임에 스프레드 디자이너 도구가 열리고, 양식에서 실행되는 스프레드시트 인스턴스에 다시 변경 사항을 적용할 수 있습니다.
첨부 파일을 통해 샘플을 다운로드하실 수 있습니다.
댓글목록
등록된 댓글이 없습니다.