2025. 3. 6. 10:10ㆍ젬스it
xls와 xlsx 파일을 업로드하도록 코드를 수정.
OLEDB, NPOI, EPPlus를 사용하지 않고, Microsoft Excel Interop 라이브러리를 사용하여 엑셀 파일을 업로드하고 데이터를 데이터베이스에 넣는 방법
다음 단계에 따라 코드를 작성하겠습니다:
1. **엑셀 파일을 선택하고 읽기**:
- 파일 선택 대화상자를 사용하여 엑셀 파일을 선택하고, Microsoft Excel Interop 라이브러리를 사용하여 엑셀 파일을 읽습니다.
2. **엑셀 파일을 데이터베이스에 업로드**:
- 읽어들인 엑셀 데이터를 데이터베이스에 삽입합니다.
1. **WPF XAML 구성**:
- 버튼을 클릭하여 파일 선택 대화상자를 열고 xls, xlsx 파일을 선택할 수 있도록 합니다.
```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>
```
2. **코드 비하인드**:
- 파일 선택 대화상자를 열어 엑셀 파일을 선택하고, 선택된 파일을 Microsoft Excel Interop을 이용해 읽어 데이터베이스에 업로드합니다.
```csharp
using System;
using System.Data;
using System.Data.SqlClient;
using System.Windows;
using System.Windows.Controls;
using Microsoft.Win32;
using Excel = Microsoft.Office.Interop.Excel;
namespace ExcelUploader
{
public partial class UploadControl : UserControl
{
public UploadControl()
{
InitializeComponent();
}
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();
Excel.Application excelApp = new Excel.Application();
Excel.Workbook workbook = excelApp.Workbooks.Open(filePath);
Excel.Worksheet worksheet = workbook.Sheets[1];
Excel.Range range = worksheet.UsedRange;
for (int i = 1; i <= range.Columns.Count; i++)
{
dt.Columns.Add(((Excel.Range)range.Cells[1, i]).Text.ToString());
}
for (int i = 2; i <= range.Rows.Count; i++)
{
DataRow row = dt.NewRow();
for (int j = 1; j <= range.Columns.Count; j++)
{
row[j - 1] = ((Excel.Range)range.Cells[i, j]).Text.ToString();
}
dt.Rows.Add(row);
}
workbook.Close(false);
excelApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
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);
}
}
}
```
이 코드는 Microsoft Excel Interop 라이브러리를 사용하여 xls 및 xlsx 파일을 읽고 데이터를 데이터베이스에 삽입하는 예제입니다.
'젬스it' 카테고리의 다른 글
닷넷 프레임워크 4.6.1 환경에서 WPF로 `ExcelDataReader`를 사용하여 엑셀 파일을 업로드하고 데이터를 데이터베이스에 넣는방법 (0) | 2025.03.10 |
---|---|
wpf 에서 excelDataReader.dll 을 이용해서 엑셀파일을 업로드해서 데이터를 db에 넣기 (0) | 2025.03.07 |
wpf에서 csv파일 업로드시 UserControl 안에. UserControl 을 넣어서 코딩하는 예제 (0) | 2025.03.06 |
wpf에서 oledb를 이용해서 엑셀파일을 업로드해서 해당 내용을 db에 넣는 방법은? (0) | 2025.03.05 |
wpf 에서 window 클래스의 Dialogresult 와 같은 속성은? (0) | 2025.03.05 |