60






Syncfusion 컨트롤을 사용하여 PDF, Excel, TXT 파일을 열어볼 수 있는 WPF 애플리케이션입니다. 각 코드 파일에 대해 자세히 설명하겠습니다.
1. FileLoadWindow.xaml
이 XAML 파일은 사용자 인터페이스(UI)를 정의합니다. 주요 구성 요소는 다음과 같습니다.
XAML 구조
<Window x:Class="SynfusionWpfApp.FileLoadWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:syncfusion="clr-namespace:Syncfusion.Windows.PdfViewer;assembly=Syncfusion.PdfViewer.WPF"
xmlns:spreadsheet="clr-namespace:Syncfusion.UI.Xaml.Spreadsheet;assembly=Syncfusion.SfSpreadsheet.WPF"
Title="File Viewer" Height="600" Width="800">
네임스페이스 선언
xmlns:syncfusion
: Syncfusion PDF 뷰어를 위한 네임스페이스입니다.xmlns:spreadsheet
: Syncfusion Excel 스프레드시트를 위한 네임스페이스입니다.
메뉴와 DockPanel
<Menu DockPanel.Dock="Top">
<MenuItem Header="File">
<MenuItem Header="Open" Click="OpenFile_Click"/>
</MenuItem>
</Menu>
Menu
: 상단에 위치한 파일 메뉴입니다.MenuItem
: “File” 메뉴 안에 “Open” 항목이 있습니다. 클릭 시OpenFile_Click
이벤트 핸들러가 호출됩니다.
TabControl과 각 탭
<TabControl Name="TabControlViewers">
<!-- PDF Viewer 탭 -->
<TabItem Header="PDF">
<syncfusion:PdfViewerControl x:Name="PdfViewer"/>
</TabItem>
<!-- Excel Viewer 탭 -->
<TabItem Header="Excel">
<spreadsheet:SfSpreadsheet x:Name="Spreadsheet"/>
</TabItem>
<!-- TXT Viewer 탭 -->
<TabItem Header="Text">
<RichTextBox x:Name="TextViewer"/>
</TabItem>
</TabControl>
TabControl
: PDF, Excel, TXT 뷰어를 각각 탭으로 구분해서 보여줍니다.TabItem
:- PDF 탭: Syncfusion의
PdfViewerControl
로 PDF 파일을 엽니다. - Excel 탭: Syncfusion의
SfSpreadsheet
로 Excel 파일을 엽니다. - Text 탭: 기본 WPF
RichTextBox
로 TXT 파일을 엽니다.
- PDF 탭: Syncfusion의
2. FileLoadWindow.xaml.cs
이 코드 비하인드 파일은 UI에서 정의된 이벤트와 파일을 여는 로직을 구현합니다.
네임스페이스 및 클래스 선언
using System;
using System.IO;
using System.Windows;
using Microsoft.Win32;
using Syncfusion.Windows.PdfViewer;
using Syncfusion.UI.Xaml.Spreadsheet;
namespace SynfusionWpfApp
{
public partial class FileLoadWindow : Window
{
public FileLoadWindow()
{
InitializeComponent();
}
- 네임스페이스: 파일 열기 기능과 Syncfusion 컨트롤에 필요한 네임스페이스를 포함합니다.
- 클래스:
FileLoadWindow
는 WPF 창을 나타냅니다.
파일 열기 이벤트 핸들러
OpenFile_Click
private void OpenFile_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog
{
Filter = "All Supported Files|*.xlsx;*.pdf;*.txt|Excel Files|*.xlsx|PDF Files|*.pdf|Text Files|*.txt",
Title = "Select a File"
};
if (openFileDialog.ShowDialog() == true)
{
string filePath = openFileDialog.FileName;
string extension = Path.GetExtension(filePath).ToLower();
switch (extension)
{
case ".xlsx":
LoadExcel(filePath);
break;
case ".pdf":
LoadPDF(filePath);
break;
case ".txt":
LoadText(filePath);
break;
default:
MessageBox.Show("Unsupported file format.");
break;
}
}
}
OpenFileDialog
: 파일 선택 창을 띄웁니다.Filter
: 지원하는 파일 형식(XLSX, PDF, TXT)을 설정합니다.- 파일 확장자에 따라 적절한 메서드 호출:
- Excel 파일:
LoadExcel
- PDF 파일:
LoadPDF
- TXT 파일:
LoadText
- Excel 파일:
파일 로드 메서드
1. Excel 파일 로드
private void LoadExcel(string filePath)
{
try
{
Spreadsheet.Open(filePath);
}
catch (Exception ex)
{
MessageBox.Show($"Error loading Excel: {ex.Message}");
}
}
Spreadsheet.Open(filePath)
: 선택한 Excel 파일을SfSpreadsheet
컨트롤에 로드합니다.
2. PDF 파일 로드
private void LoadPDF(string filePath)
{
try
{
PdfViewer.Load(filePath);
}
catch (Exception ex)
{
MessageBox.Show($"Error loading PDF: {ex.Message}");
}
}
PdfViewer.Load(filePath)
: 선택한 PDF 파일을PdfViewerControl
에 로드합니다.
3. TXT 파일 로드
private void LoadText(string filePath)
{
try
{
string textContent = File.ReadAllText(filePath);
TextViewer.Document.Blocks.Clear();
TextViewer.Document.Blocks.Add(new System.Windows.Documents.Paragraph(new System.Windows.Documents.Run(textContent)));
}
catch (Exception ex)
{
MessageBox.Show($"Error loading text file: {ex.Message}");
}
}
File.ReadAllText(filePath)
: 텍스트 파일 내용을 읽습니다.RichTextBox
에 텍스트를 표시합니다.
전체 코드
FileLoadWindow.xaml
<Window x:Class="SynfusionWpfApp.FileLoadWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:syncfusion="clr-namespace:Syncfusion.Windows.PdfViewer;assembly=Syncfusion.PdfViewer.WPF"
xmlns:spreadsheet="clr-namespace:Syncfusion.UI.Xaml.Spreadsheet;assembly=Syncfusion.SfSpreadsheet.WPF"
Title="File Viewer" Height="600" Width="800">
<Grid>
<DockPanel>
<Menu DockPanel.Dock="Top">
<MenuItem Header="File">
<MenuItem Header="Open" Click="OpenFile_Click"/>
</MenuItem>
</Menu>
<TabControl Name="TabControlViewers">
<!-- PDF Viewer 탭 -->
<TabItem Header="PDF">
<syncfusion:PdfViewerControl x:Name="PdfViewer"/>
</TabItem>
<!-- Excel Viewer 탭 -->
<TabItem Header="Excel">
<spreadsheet:SfSpreadsheet x:Name="Spreadsheet"/>
</TabItem>
<!-- TXT Viewer 탭 -->
<TabItem Header="Text">
<RichTextBox x:Name="TextViewer"/>
</TabItem>
</TabControl>
</DockPanel>
</Grid>
</Window>
FileLoadWindow.xaml.cs
using System;
using System.IO;
using System.Windows;
using Microsoft.Win32;
using Syncfusion.Windows.PdfViewer;
using Syncfusion.UI.Xaml.Spreadsheet;
namespace SynfusionWpfApp
{
public partial class FileLoadWindow : Window
{
public FileLoadWindow ()
{
InitializeComponent();
}
private void OpenFile_Click (object sender, RoutedEventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog
{
Filter = "All Supported Files|*.xlsx;*.pdf;*.txt|Excel Files|*.xlsx|PDF Files|*.pdf|Text Files|*.txt",
Title = "Select a File"
};
if (openFileDialog.ShowDialog() == true)
{
string filePath = openFileDialog.FileName;
string extension = Path.GetExtension(filePath).ToLower();
switch (extension)
{
case ".xlsx":
LoadExcel(filePath);
break;
case ".pdf":
LoadPDF(filePath);
break;
case ".txt":
LoadText(filePath);
break;
default:
MessageBox.Show("Unsupported file format.");
break;
}
}
}
private void LoadExcel (string filePath)
{
try
{
Spreadsheet.Open(filePath);
}
catch (Exception ex)
{
MessageBox.Show($"Error loading Excel: {ex.Message}");
}
}
private void LoadPDF (string filePath)
{
try
{
PdfViewer.Load(filePath);
}
catch (Exception ex)
{
MessageBox.Show($"Error loading PDF: {ex.Message}");
}
}
private void LoadText (string filePath)
{
try
{
string textContent = File.ReadAllText(filePath);
TextViewer.Document.Blocks.Clear();
TextViewer.Document.Blocks.Add(new System.Windows.Documents.Paragraph(new System.Windows.Documents.Run(textContent)));
}
catch (Exception ex)
{
MessageBox.Show($"Error loading text file: {ex.Message}");
}
}
}
}
실행 사진






요약
- XAML: PDF, Excel, TXT 파일을 열 수 있는 탭 인터페이스를 구성합니다.
- C# 코드 비하인드: 파일을 선택하고 각 형식에 맞는 뷰어로 파일을 로드합니다.
- Excel:
SfSpreadsheet
- PDF:
PdfViewerControl
- TXT:
RichTextBox
- Excel:
이 애플리케이션은 파일 열기 메뉴를 통해 다양한 파일을 간편하게 열어볼 수 있는 기능을 제공합니다.