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

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

본문 바로가기

Spread.NET

온라인 스터디

8. Excel 입출력 WinForms C# 및 VB.NET에서 Excel CSV 파일을 가져오고 내보내는 방법

페이지 정보

작성자 MESCIUS 작성일 2024-01-02 13:50 조회 82회 댓글 0건

본문

첨부파일

이번 스터디에서는 Spread.NET 스프레드시트를 사용하여 .NET WinForms 응용 프로그램에서 직접 CSV(쉼표로 구분된 값) 파일 형식의 스프레드시트를 가져오고 내보내는 방법에 대해 설명합니다.


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


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


또한, C#VB에서 파일 - 열기, 파일 - 저장파일 - 디자인 명령을 처리하는 메뉴 항목을 구현하는 방법을 보여 드리겠습니다.


다음은 C# 및 VB.net WinForms에서 CSV 파일을 가져오고 내보내는 단계입니다.

  • 프로젝트 만들기

  • 프로젝트 구성

  • 파일 메뉴 만들기

  • SplitContainer1 만들기

  • SplitContainer1 구성

  • SplitContainer2 만들기

  • FpSpread 만들기

  • NameBox 만들기

  • FormulaTextBox 만들기

  • WinForms 스프레드시트 디자이너 컴포넌트 만들기

  • 파일 메뉴 항목 이벤트 핸들러 만들기

  • 이벤트 핸들러 코드 추가


위 단계를 진행하려면 다음이 필요합니다.

  • Microsoft Visual Studio 2022 (참고: 위 단계들은 VS2022 및 .NET 6에 해당하며, Spread.NET WinForms는 동일한 단계에 따라 대상이 .NET 4.6.2+인 이전 버전의 Visual Studio에서도 작동할 수 있습니다.)

  • WinForms용 Spread.NET(체험판 또는 정식 버전) - Spread.NET WinForms 30일 무료 체험판 다운로드



1단계: 프로젝트 만들기 

새 프로젝트 만들기


먼저, C#, WindowsDesktop을 선택하여 프로젝트를 필터링합니다.


C# 또는 VB WinForms App 중 하나를 선택하여 Visual Studio 2022에서 새 프로젝트를 만듭니다.



2단계: 프로젝트 구성 

프로젝트 구성


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



3단계: 파일 메뉴 만들기 


이제 MenuStrip을 추가해 보겠습니다.


메뉴 및 도구 모음 카테고리의 도구 상자 창(F4)에서 MenuStrip 컴포넌트를 두 번 클릭하여 폼에서 MenuStrip을 만듭니다. 

Menu Strip 도구 상자


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

파일 메뉴


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


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


해당 메뉴 항목에 대한 코드는 추후 단계에서 추가하겠습니다.



4단계: SplitContainer1 만들기 


참고: FpSpread를 사용하는 데 분할자 추가는 반드시 필요하지는 않습니다. SplitContainer 컨트롤을 사용하면 스프레드시트, 이름 입력란, 수식 텍스트 상자 컨트롤 등의 크기 조정을 코드 없이도 자동으로 처리하기 때문에 편하고 유연한 스프레드시트 인터페이스를 훨씬 쉽게 만들 수 있습니다.


도구 상자(CTRL+ALT+X)에서 컨테이너 카테고리를 확장한 후, SplitContainer 컨트롤을 두 번 클릭하여 splitContainer1을 만듭니다.

컨테이너 분할 도구 상자



5단계: SplitContainer1 구성 


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

SplitContainer 1 속성


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


스플리터는 새 줄로 줄 바꿈되는 긴 수식을 표시하기 위한 FormulaTextBox 컨트롤의 높이를 결정합니다.



6단계: SplitContainer2 만들기 


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

SplitContainer 2


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

SplitContainer2 속성



7단계: FpSpread 만들기 


솔루션 탐색기에서 솔루션 SpreadNetQuickStart프로젝트 SpreadNetQuickStart를 확장하고 종속성을 마우스 오른쪽 버튼으로 클릭한 후 NuGet 패키지 관리...를 선택합니다. 단축키로는 ALT+P+N+N+N+ENTER를 누르면 됩니다.

NuGet 패키지 관리


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


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

NuGet 패키지 관리자

GrapeCity.Spread.WinForms를 설치한 후 GrapeCity.Spread.WinForms.Design도 설치합니다.


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


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

FpSpread 도구 상자


마지막으로 SplitContainer1의 하단 창(Panel2)으로 FpSpread의 인스턴스를 드래그합니다.


컨트롤을 생성(기본 동작)할 때 Spred Designer 도구가 열릴 수 있습니다.

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

FpSpread 양식


속성 눈금(F4)을 사용하여 Dock 속성을 Fill(채우기)로 설정합니다.

FpSpread 도킹



8단계: NameBox 만들기 


도구 상자(CTRL+ALT+X)에서 GrapeCity Spread for WinForms 카테고리를 펼칩니다.

NameBox 컨트롤을 선택합니다.

Namebox 도구 상자


왼쪽 상단의 Panel1(SplitContiner2.Panel1) 안에 새 NameBox을 그립니다.

NameBox 양식


속성 창(F4)에서 nameBox1DockFill(채우기)로 설정합니다.

NameBox 속성


NameBox1의 오른쪽 상단에 있는 표시기 - NameBox Tasks을 연 다음 AttachTo 드롭다운을 클릭합니다. fpSpread1을 선택합니다.


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

NameBox 첨부 파일



9단계: FormulaTextBox 만들기 


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

Panel 도구 상자


Panel2(NameBox1의 오른쪽에 있음) 안에 새 Panel을 그립니다.

Panel 2 양식


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

Panel 1 속성


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

수식 텍스트 상자 도구 상자


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

수식 텍스트 상자 양식


속성 창(F4)에서 formulaTextBox1BorderStyleNone으로 설정하고 DockFill(채우기)로 설정합니다.

수식 텍스트 상자 속성


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


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

수식 텍스트 상자 첨부 파일



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


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

FpSpread Designer 도구 상자


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

FpSpread Designer 양식



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

파일 메뉴 처리기 디자인


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

파일 메뉴 처리기



12단계: 이벤트 핸들러 코드 추가 


다음 코드를 복사하여 이벤트 핸들러를 구현합니다.


[C#]

이벤트 핸들러 코드 C# 추가

private string mFileName = null;

private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
    OpenFileDialog ofd = new OpenFileDialog();
    ofd.Filter = "CSV file (*.csv)|*.csv| All Files (*.*)|*.*";
    ofd.FilterIndex = 0;
    if (ofd.ShowDialog() == DialogResult.OK)
    {
        mFileName = ofd.FileName;
        fpSpread1.Sheets[0].LoadTextFile(mFileName, FarPoint.Win.Spread.TextFileFlags.None, FarPoint.Win.Spread.Model.IncludeHeaders.None, "", ",", "");
        saveToolStripMenuItem.Enabled = true;
    }
}

private void saveToolStripMenuItem_Click(object sender, EventArgs e)
{
    fpSpread1.Sheets[0].SaveTextFile(mFileName, FarPoint.Win.Spread.TextFileFlags.None, FarPoint.Win.Spread.Model.IncludeHeaders.None, "", ",", "");
}

private void saveAsToolStripMenuItem_Click(object sender, EventArgs e)
{
    SaveFileDialog sfd = new SaveFileDialog();
    sfd.Filter = "CSV file (*.csv)|*.csv| All Files (*.*)|*.*";
    sfd.FilterIndex = 0;
    sfd.FileName = mFileName;
    if (sfd.ShowDialog() == DialogResult.OK)
    {
        mFileName = sfd.FileName;
        fpSpread1.Sheets[0].SaveTextFile(mFileName, FarPoint.Win.Spread.TextFileFlags.None, FarPoint.Win.Spread.Model.IncludeHeaders.None, "", ",", "");
        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 = "CSV file (*.csv)|*.csv| All Files (*.*)|*.*"
    ofd.FilterIndex = 0
    If ofd.ShowDialog() = DialogResult.OK Then
        mFileName = ofd.FileName
        FpSpread1.Sheets(0).LoadTextFile(mFileName, FarPoint.Win.Spread.TextFileFlags.None, FarPoint.Win.Spread.Model.IncludeHeaders.None, "", ",", "")
        SaveToolStripMenuItem.Enabled = True
    End If
End Sub

Private Sub SaveToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SaveToolStripMenuItem.Click
    FpSpread1.Sheets(0).SaveTextFile(mFileName, FarPoint.Win.Spread.TextFileFlags.None, FarPoint.Win.Spread.Model.IncludeHeaders.None, "", ",", "")
End Sub

Private Sub SaveAsToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SaveAsToolStripMenuItem.Click
    Dim sfd As SaveFileDialog = New SaveFileDialog()
    sfd.Filter = "CSV file (*.csv)|*.csv| All Files (*.*)|*.*"
    sfd.FilterIndex = 0
    sfd.FileName = mFileName
    If sfd.ShowDialog() = DialogResult.OK Then
        mFileName = sfd.FileName
        FpSpread1.Sheets(0).SaveTextFile(mFileName, FarPoint.Win.Spread.TextFileFlags.None, FarPoint.Win.Spread.Model.IncludeHeaders.None, "", ",", "")
        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를 사용하여 CSV 파일을 찾은 다음 FpSpread.OpenExcel 메서드를 사용하여 선택한 CSV 파일을 엽니다.


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


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


이 기능을 사용하여 C# 또는 VB.NET CSV 파일을 가져오고 내보낼 수 있습니다.


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


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



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

최종 결과


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


파일 - 디자인 메뉴를 사용하면 위와 같이 런타임에 Spread Designer 도구가 열립니다.

폼에서 실행 중인 스프레드시트 인스턴스에 변경 내용을 적용할 수 있습니다.


Spread .NET이 응용 프로그램 내에서 C# 또는 VB.NET을 사용하여 스프레드시트를 가져오고 CSV로 내보내는 기능을 어떻게 제공하는지 확인하셨나요?


다른 글에서는 WinForms 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.