wpf 에서 excelDataReader.dll 을 이용해서 엑셀파일을 업로드해서 데이터를 db에 넣기
CodePagesEncodingProvider가 표시되지 않는다면, 몇 가지 점검해야 할 사항이 있습니다. `ExcelDataReader` 라이브러리를 사용할 때, .NET Core 또는 .NET Framework에서 `CodePagesEncodingProvider`를 사용할 수 있도록 해주어야 합니다.
1. **ExcelDataReader 초기화**:
- `System.Text.Encoding.CodePages` 패키지를 설치해야 합니다.
- NuGet 패키지 관리자를 열고 다음 명령어를 입력하여 설치합니다:
```powershell
Install-Package System.Text.Encoding.CodePages
```
2. **코드 수정**:
- `System.Text.Encoding.CodePages`를 참조한 다음, `CodePagesEncodingProvider`를 등록합니다.
```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();
openFileDialog.Filter = "Excel Files|*.xls;*.xlsx";
if (openFileDialog.ShowDialog() == 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 result = reader.AsDataSet(new ExcelDataSetConfiguration()
{
ConfigureDataTable = (_) => new ExcelDataTableConfiguration()
{
UseHeaderRow = true
}
});
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);
}
}
}
```
위 코드를 통해 `Encoding.RegisterProvider(CodePagesEncodingProvider.Instance)`를 사용하여 `CodePagesEncodingProvider`를 등록하고 사용할 수 있습니다.
이 단계를 통해 문제가 해결되기를 바랍니다. 추가로 궁금한 사항이 있으면 언제든지 말씀해 주세요! 😊 [A](https://github.com/NarubetUTL/UTL.PartMaster/tree/eb99d9ec5c8d16a3de1c2cae0b4add46878fbd19/Authentication%2FMainMDI.cs?copilot_analytics_metadata=eyJldmVudEluZm9fY2xpY2tTb3VyY2UiOiJjaXRhdGlvbkxpbmsiLCJldmVudEluZm9fY29udmVyc2F0aW9uSWQiOiI1WmtlNndBcDRWZXR2QmRSOUNpbXYiLCJldmVudEluZm9fbWVzc2FnZUlkIjoiNFBkRDFCOEFMVjVqbU5EUVp5MlFHIiwiZXZlbnRJbmZvX2NsaWNrRGVzdGluYXRpb24iOiJodHRwczpcL1wvZ2l0aHViLmNvbVwvTmFydWJldFVUTFwvVVRMLlBhcnRNYXN0ZXJcL3RyZWVcL2ViOTlkOWVjNWM4ZDE2YTNkZTFjMmNhZTBiNGFkZDQ2ODc4ZmJkMTlcL0F1dGhlbnRpY2F0aW9uJTJGTWFpbk1ESS5jcyJ9&citationMarker=9F742443-6C92-4C44-BF58-8F5A7C53B6F1)