2025. 3. 10. 09:31ㆍ젬스it
닷넷 프레임워크 4.6.1 환경에서 WPF로 `ExcelDataReader`를 사용하여 엑셀 파일을 업로드하고 데이터를 데이터베이스에 넣는
예제를 제공해 드리겠습니다. `ExcelDataReader`의 버전은 3.6.0을 사용하는 것이 좋습니다.
1. **필수 패키지 설치**:
- 인터넷이 연결된 컴퓨터에서 [ExcelDataReader](https://www.nuget.org/packages/ExcelDataReader/)와 [ExcelDataReader.DataSet](https://www.nuget.org/packages/ExcelDataReader.DataSet/) 패키지를 다운로드합니다.
- 다운로드한 `.nupkg` 파일을 인터넷이 연결되지 않은 컴퓨터로 복사합니다.
- `.nupkg` 파일의 확장자를 `.zip`으로 변경한 후 압축 해제합니다.
- 압축 해제된 폴더에서 필요한 `.dll` 파일을 찾습니다.
2. **Visual Studio에서 참조 추가**:
- Visual Studio에서 프로젝트를 열고, 솔루션 탐색기에서 프로젝트 이름을 마우스 오른쪽 버튼으로 클릭합니다.
- `참조 추가`를 선택합니다.
- `찾아보기` 버튼을 클릭하고, 압축을 해제한 폴더에서 `ExcelDataReader.dll` 및 `ExcelDataReader.DataSet.dll` 파일을 선택합니다.
- `확인` 버튼을 클릭하여 참조를 추가합니다.
3. **WPF XAML 구성**:
- 버튼을 클릭하여 파일 선택 대화상자를 열고 엑셀 파일을 선택할 수 있도록 합니다.
```xml
<UserControl x:Class="ExcelUploader.UploadControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="200" Width="400">
<Border BorderBrush="Black" BorderThickness="1" Padding="10" Margin="10">
<Grid>
<Button Content="엑셀 파일 업로드" HorizontalAlignment="Center" VerticalAlignment="Center" Click="UploadButton_Click"/>
</Grid>
</Border>
</UserControl>
```
4. **코드 비하인드**:
- 파일 선택 대화상자를 열어 엑셀 파일을 선택하고, 선택된 파일을 `ExcelDataReader`를 이용해 읽어 데이터베이스에 업로드합니다.
```csharp
using System;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Windows;
using System.Windows.Controls;
using Microsoft.Win32;
using ExcelDataReader;
using System.Text;
namespace ExcelUploader
{
public partial class UploadControl : UserControl
{
public UploadControl()
{
InitializeComponent();
// ExcelDataReader 초기화 (시작 시 코드 페이지 등록)
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
}
private void UploadButton_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog
{
Filter = "Excel Files|*.xls;*.xlsx"
};
bool? result = openFileDialog.ShowDialog();
if (result == true)
{
string filePath = openFileDialog.FileName;
UploadExcelFile(filePath);
}
}
private void UploadExcelFile(string filePath)
{
DataTable dt = new DataTable();
using (var stream = File.Open(filePath, FileMode.Open, FileAccess.Read))
{
using (var reader = ExcelReaderFactory.CreateReader(stream))
{
var conf = new ExcelDataSetConfiguration
{
ConfigureDataTable = _ => new ExcelDataTableConfiguration
{
UseHeaderRow = true
}
};
var result = reader.AsDataSet(conf);
dt = result.Tables[0];
}
}
string dbConnectionString = "Your database connection string";
using (SqlConnection sqlConn = new SqlConnection(dbConnectionString))
{
sqlConn.Open();
foreach (DataRow row in dt.Rows)
{
SqlCommand sqlCmd = new SqlCommand("INSERT INTO YourTableName (Column1, Column2) VALUES (@Column1, @Column2)", sqlConn);
sqlCmd.Parameters.AddWithValue("@Column1", row["Column1"]);
sqlCmd.Parameters.AddWithValue("@Column2", row["Column2"]);
sqlCmd.ExecuteNonQuery();
}
}
MessageBox.Show("엑셀 파일이 성공적으로 업로드되었습니다.", "업로드 완료", MessageBoxButton.OK, MessageBoxImage.Information);
}
}
}
```
이 코드는 `ExcelDataReader`를 사용하여 엑셀 파일을 읽고 데이터를 데이터베이스에 삽입하는 WPF 애플리케이션입니다.
'젬스it' 카테고리의 다른 글
IT 프리랜서로 같은 직장에서 4년째 근무 중이라면 휴가일수는? (0) | 2025.03.24 |
---|---|
wpf 에서 excelDataReader.dll 을 이용해서 엑셀파일을 업로드해서 데이터를 db에 넣기 (0) | 2025.03.07 |
wpf. oledb,npoi, epplus 를 사용하지 않고, Microsoft Excel Interop 라이브러리를 사용 엑셀파일 업로드 (0) | 2025.03.06 |
wpf에서 csv파일 업로드시 UserControl 안에. UserControl 을 넣어서 코딩하는 예제 (0) | 2025.03.06 |
wpf에서 oledb를 이용해서 엑셀파일을 업로드해서 해당 내용을 db에 넣는 방법은? (0) | 2025.03.05 |