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 스프레드시트 컨트롤과 NameBox 및 FormulaTextBox 컨트롤을 통합하는 간단한 프론트 엔드 스프레드시트 사용자 인터페이스를 생성합니다.
C# 및 VB에서 파일 - 열기, 파일 - 저장 및 파일 - 디자인 명령을 처리하는 메뉴 항목을 구현하는 방법을 사용할 것입니다.
C# 및 VB.net WinForms에서 Excel XLSX 스프레드시트를 가져오고 내보내는 단계입니다.
이 단계는 다음이 필요합니다.
Microsoft Visual Studio 2022 (참고: 이 단계는 VS2022 및 .NET 6용입니다. 하지만 WinForms는 동일한 단계에 따라 대상이 .NET 4.6.2+를 대상으로 하는 이전 버전의 Visual Studio에서도 실행 가능합니다.)
Spread.NET (평가판 또는 라이선스)
샘플 파일을 다운로드받아 함께 진행해 주시길 바랍니다.
프로젝트를 필터링할 C#, Windows 및 Desktop을 선택하여 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의 방향을 가로로 설정한 후 Palen1MinSize 및 SplitterDistance를 23으로 설정합니다.
스프레드시트는 하단 창에 있고, 수식 입력줄 인터페이스는 상단 창에 있습니다.
Splitter(분할기)는 새 줄로 줄 감싸는 긴 수식을 표시하기 위한 FormulaTextBox 컨트롤의 높이를 결정합니다.
6단계: SplitContainer2 만들기
도구 상자(CTRL+ALT+X)에서 새 SplitContainer를 splitContainer1의 상단 창(Panel1)으로 드래그 앤 드롭하여 splitContainer2를 만듭니다.
속성 창(F4)에서 splitContainer2의 Panel1MinSize 및 SplitterDistance를 150으로 설정합니다.
7단계: FpSpread 만들기
솔루션 탐색기에서 솔루션 SpreadNetQuickStart 및 프로젝트 SpreadNetQuickStart를 확장합니다.
그 다음, 종속성을 마우스 오른쪽 버튼으로 클릭한 후 NuGet 패키지 관리를 선택합니다.
단축키 ALT+P+N+N+N+ENTER 누르는 방법도 있습니다.
그런 다음 NuGet 패키지 관리자에서 왼쪽 상단에 있는 찾아보기를 선택합니다.
검색 상자에 Spread.WinForms를 입력하여 최신 GrapeCity.Spread.WinForms를 찾은 후 설치를 클릭합니다.
GrapeCity.Spread.WinForms를 설치한 후, GrapeCity.Spread.WinForms.Design도 설치해 주세요.
이 패키지에는 Spread Designer 도구를 런타임으로 표시하기 위한 fpSpreadDesigner 컴포넌트가 들어 있습니다.
도구 상자(CTRL+ALT+X)에서 FpSpread 컨트롤을 선택합니다.
마지막으로 SplitContainer1의 하단 창(Panel2)으로 FpSpread의 인스턴스를 끌어옵니다.
컨트롤을 생성할 때 Spred Designer 도구가 열릴 수 있습니다.
지금은 Spread Designer가 나타나면 닫으십시오.
속성 표(F4)를 사용하여 도킹 속성을 Fill(채우기)로 설정합니다.
8단계: 이름 입력란 만들기
도구 상자(CTRL+ALT+X)에서 WinForms용 GrapeCity Spread 카테고리를 확장하고 NameBox 컨트롤을 선택합니다.
왼쪽 상단의 Panel1(SplitContiner2.Panel1) 안에 NameBox을 끌어당겨 둡니다.
속성 창(F4)에서 nameBox1의 도킹을 Fill(채우기)로 설정합니다.
NameBox1의 오른쪽 상단에 있는 표시기를 클릭하여 NameBox 작업을 열겠습니다.
다음으로 AttachTo 드롭다운을 클릭하고 fpSpread1을 선택합니다.
NameBox 컨트롤을 FpSpread 컨트롤에 첨부하기 위한 code-behind 형식의 코드가 생성됩니다.
9단계: FormulaTextBox 만들기
도구 상자(CTRL+ALT+X)에서 컨테이너를 확장하고 패널 컨트롤을 선택합니다.
Panel2(NameBox1의 오른쪽) 안에 새 패널을 끌어옵니다.
속성 창(F4)에서 panel1의 BorderStyle을 FixedSingle로 설정하고 도킹을 Fill(채우기)로 설정합니다.
도구 상자(CTRL+ALT+X)에서 FormulaTextBox 컨트롤을 선택합니다.
panel1(splitContainer2.Panel2 내부에 있음) 안에 새 FormulaTextBox 컨트롤을 끌어옵니다.
속성 창(F4)에서 formulaTextBox1의 BorderStyle을 없음으로 설정하고 도킹을 Fill(채우기)로 설정합니다.
formulaTextBox1의 오른쪽 상단에 있는 표시기를 클릭하여 FormulaTextBox 작업을 연 다음 AttachTo 드롭다운을 클릭하고 fpSpread1을 선택합니다.
그러면 FormulaTextBox 컨트롤을 FpSpread 컨트롤에 첨부하기 위한 code-behind 형식의 코드가 생성됩니다.
10단계: WinForms 스프레드시트 디자이너 컴포넌트 만들기
이제 도구 상자 창(CTRL+ALT+X)의 WinForms용 GrapeCity Spread Design WinForms 카테고리에서 FpSpreadDesigner 컴포넌트를 두 번 클릭하여 다음 형식의 새 FpSpreadDesigner를 만듭니다.
방금 추가한 fpSpreadDesigner1 컴포넌트는 menuStrip1 및 fpSpread1_Sheet1 컴포넌트 옆의 양식 컴포넌트 트레이에 표시됩니다.
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을 다운로드하여 직접 테스트해 보세요!
댓글목록
등록된 댓글이 없습니다.