wpf. oledb,npoi, epplus 를 사용하지 않고, Microsoft Excel Interop 라이브러리를 사용 엑셀파일 업로드

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 파일을 읽고 데이터를 데이터베이스에 삽입하는 예제입니다.

반응형