2025. 2. 28. 17:32ㆍ젬스it
엑셀 파일을 WPF 애플리케이션에서 업로드하고 데이터를 읽어와서 데이터베이스에 삽입하는 방법을 단계별로 설명드릴게요. 이 과정에서는 `Microsoft.Office.Interop.Excel` 라이브러리를 사용하여 엑셀 파일을 읽고, `SqlConnection`을 사용하여 데이터를 인써트 하는 방법.
1. **프로젝트에 참조 추가:**
- Visual Studio에서 프로젝트를 열고, `Microsoft.Office.Interop.Excel` 라이브러리를 추가합니다. NuGet 패키지 관리자에서 `Microsoft.Office.Interop.Excel`을 검색하여 설치할 수 있습니다.
- 또한, `System.Data.SqlClient`를 참조로 추가해야 합니다.
2. **XAML 파일 디자인:**
- 엑셀 파일을 선택하고 업로드할 수 있는 버튼과 상태를 표시할 레이블을 추가합니다.
```xml
<Window x:Class="ExcelToDatabase.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Excel to Database" Height="200" Width="400">
<Grid>
<Button Name="btnUpload" Content="Upload Excel" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Width="100" Click="btnUpload_Click"/>
<Label Name="lblStatus" Content="Status: Waiting for upload..." HorizontalAlignment="Left" Margin="10,50,0,0" VerticalAlignment="Top" Width="300"/>
</Grid>
</Window>
```
3. **C# 코드 작성:**
- 엑셀 파일을 읽고 데이터베이스에 삽입하는 기능을 추가합니다.
```csharp
using System;
using System.Data.SqlClient;
using System.Windows;
using Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;
namespace ExcelToDatabase
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void btnUpload_Click(object sender, RoutedEventArgs e)
{
// OpenFileDialog 생성
var openFileDialog = new Microsoft.Win32.OpenFileDialog();
openFileDialog.Filter = "Excel Files|*.xls;*.xlsx";
if (openFileDialog.ShowDialog() == true)
{
string filePath = openFileDialog.FileName;
lblStatus.Content = "Status: Reading Excel file...";
try
{
// 엑셀 파일 읽기
var excelApp = new Application();
var workBook = excelApp.Workbooks.Open(filePath);
var workSheet = (Worksheet)workBook.Sheets[1];
var range = workSheet.UsedRange;
// 데이터베이스 연결 및 데이터 삽입
using (var connection = new SqlConnection("YourConnectionStringHere"))
{
connection.Open();
for (int row = 2; row <= range.Rows.Count; row++)
{
string column1 = (range.Cells[row, 1] as Range).Text;
string column2 = (range.Cells[row, 2] as Range).Text;
string query = "INSERT INTO YourTable (Column1, Column2) VALUES (@column1, @column2)";
using (var command = new SqlCommand(query, connection))
{
command.Parameters.AddWithValue("@column1", column1);
command.Parameters.AddWithValue("@column2", column2);
command.ExecuteNonQuery();
}
}
}
lblStatus.Content = "Status: Upload and insert complete!";
workBook.Close(false);
excelApp.Quit();
Marshal.ReleaseComObject(workSheet);
Marshal.ReleaseComObject(workBook);
Marshal.ReleaseComObject(excelApp);
}
catch (Exception ex)
{
lblStatus.Content = "Status: Error occurred!";
MessageBox.Show(ex.Message);
}
}
}
}
}
```
이 예제는 엑셀 파일의 첫 번째 시트에서 데이터를 읽어와 `YourTable`이라는 데이터베이스 테이블에 데이터를 삽입하는 방법을 보여줍니다. 실제로 사용하려면 적절한 연결 문자열과 테이블 이름으로 대체해야 합니다.
'젬스it' 카테고리의 다른 글
wpf 에서 window 클래스의 Dialogresult 와 같은 속성은? (0) | 2025.03.05 |
---|---|
NuGet (.nupkg) 패키지 설치하는 방법 (0) | 2025.03.04 |
`this.Dispatcher.BeginInvoke` 사용은 언제하나? (0) | 2025.02.20 |
G3900 주황색 램프 8번 깜박임 프린터오류시 (0) | 2024.12.24 |
yaml 파일 (4) | 2024.12.12 |