2025. 3. 5. 16:31ㆍ젬스it
아래 코드는 파일 선택 대화상자를 사용하여 사용자가 원하는 엑셀 파일을 선택하고, 해당 파일을 OLEDB를 이용해 업로드하는 WPF 애플리케이션의 예제입니다.
1. **WPF XAML 구성**:
- 버튼을 클릭하여 파일 선택 대화상자를 열고 엑셀 파일을 선택할 수 있도록 합니다.
```xml
<Window x:Class="ExcelUploader.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Excel Uploader" Height="200" Width="400">
<Grid>
<Button Content="엑셀 파일 업로드" HorizontalAlignment="Center" VerticalAlignment="Center" Click="UploadButton_Click"/>
</Grid>
</Window>
```
2. **코드 비하인드**:
- 파일 선택 대화상자를 열어 엑셀 파일을 선택하고, 선택된 파일을 OLEDB를 이용해 업로드합니다.
```csharp
using System;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.Windows;
using Microsoft.Win32;
namespace ExcelUploader
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void UploadButton_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "Excel Files|*.xls;*.xlsx;*.xlsm";
if (openFileDialog.ShowDialog() == true)
{
string filePath = openFileDialog.FileName;
UploadExcelFile(filePath);
}
}
private void UploadExcelFile(string filePath)
{
string excelConnectionString = $"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={filePath};Extended Properties='Excel 12.0 Xml;HDR=YES;'";
DataTable dt = new DataTable();
using (OleDbConnection conn = new OleDbConnection(excelConnectionString))
{
conn.Open();
OleDbCommand cmd = new OleDbCommand("SELECT * FROM [Sheet1$]", conn);
OleDbDataAdapter adapter = new OleDbDataAdapter(cmd);
adapter.Fill(dt);
}
string dbConnectionString = "Your database connection string";
#mssql일경우
string dbConnectionString = "Server=your_server_name;Database=your_database_name;User Id=your_username;Password=your_password;";
#mysql 일경우
string dbConnectionString = "Server=your_server_name;Database=your_database_name;Uid=your_username;Pwd=your_password;";
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);
}
}
}
```
이 코드는 파일 선택 대화상자를 사용하여 사용자가 원하는 엑셀 파일을 선택하고, 해당 파일을 OLEDB를 이용해 데이터베이스에 업로드하는 예제입니다.
이 오류는 Microsoft Access Database Engine이 설치되어 있지 않거나, 32비트와 64비트 버전의 불일치로 인해 발생할 수 있습니다. 다음 단계를 따라 문제를 해결해 보세요:
1. **Microsoft Access Database Engine 설치**:
- [Microsoft Access Database Engine 2010 Redistributable](https://gseek.pe.kr/6937/) 또는 [Microsoft Access Database Engine 2016 Redistributable](https://m.blog.naver.com/horizon87/221002947851)을 다운로드하여 설치합니다. 사용 중인 시스템에 맞는 32비트 또는 64비트 버전을 선택하세요.
2. **프로젝트의 플랫폼 대상 설정**:
- Visual Studio에서 프로젝트를 열고, `프로젝트` 메뉴에서 `속성`을 선택합니다.
- `빌드` 탭에서 `플랫폼 대상`을 `x86` 또는 `x64`로 설정합니다. 이 설정은 설치한 Access Database Engine의 버전에 맞춰야 합니다.
3. **명령줄에서 설치**:
- 만약 32비트와 64비트 Office 제품이 혼합되어 있는 경우, 명령줄에서 다음 명령을 실행하여 설치할 수 있습니다:
```sh
AccessDatabaseEngine.exe /passive
```
이 단계를 따라 오류를 해결할 수 있습니다.
[A](https://gseek.pe.kr/6937/?copilot_analytics_metadata=eyJldmVudEluZm9fY2xpY2tTb3VyY2UiOiJjaXRhdGlvbkxpbmsiLCJldmVudEluZm9fY29udmVyc2F0aW9uSWQiOiI1WmtlNndBcDRWZXR2QmRSOUNpbXYiLCJldmVudEluZm9fbWVzc2FnZUlkIjoiQng1OEZOQURzWnd3ejdjNFhleUJYIiwiZXZlbnRJbmZvX2NsaWNrRGVzdGluYXRpb24iOiJodHRwczpcL1wvZ3NlZWsucGUua3JcLzY5MzdcLyJ9&citationMarker=9F742443-6C92-4C44-BF58-8F5A7C53B6F1): [Microsoft Access Database Engine 2010 Redistributable](https://www.microsoft.com/ko-kr/download/details.aspx?id=13255)
[B](https://m.blog.naver.com/horizon87/221002947851?copilot_analytics_metadata=eyJldmVudEluZm9fY2xpY2tTb3VyY2UiOiJjaXRhdGlvbkxpbmsiLCJldmVudEluZm9fY2xpY2tEZXN0aW5hdGlvbiI6Imh0dHBzOlwvXC9tLmJsb2cubmF2ZXIuY29tXC9ob3Jpem9uODdcLzIyMTAwMjk0Nzg1MSIsImV2ZW50SW5mb19jb252ZXJzYXRpb25JZCI6IjVaa2U2d0FwNFZldHZCZFI5Q2ltdiIsImV2ZW50SW5mb19tZXNzYWdlSWQiOiJCeDU4Rk5BRHNad3d6N2M0WGV5QlgifQ%3D%3D&citationMarker=9F742443-6C92-4C44-BF58-8F5A7C53B6F1): [Microsoft Access Database Engine 2016 Redistributable](https://www.microsoft.com/ko-KR/download/details.aspx?id=54920)
'젬스it' 카테고리의 다른 글
wpf. oledb,npoi, epplus 를 사용하지 않고, Microsoft Excel Interop 라이브러리를 사용 엑셀파일 업로드 (0) | 2025.03.06 |
---|---|
wpf에서 csv파일 업로드시 UserControl 안에. UserControl 을 넣어서 코딩하는 예제 (0) | 2025.03.06 |
wpf 에서 window 클래스의 Dialogresult 와 같은 속성은? (0) | 2025.03.05 |
NuGet (.nupkg) 패키지 설치하는 방법 (0) | 2025.03.04 |
엑셀 파일을 WPF 애플리케이션에서 업로드하고 데이터를 읽어와서 데이터베이스에 삽입하는 방법 (0) | 2025.02.28 |