개발 공부/C# 학습

[C# 학습] C#으로 Excel Export, Excel 원하는 셀 위치에 이미지 삽입(worksheet.Paste)

아밍나 2022. 11. 17. 14:50
728x90
첫 번째, C#으로 Excel Export 기능을 구현합니다.
두 번째, Excel 시트의 원하는 셀 위치이미지를 삽입합니다.

 

이미지를 삽입하는 방법은 Pictures.Insert, Shapes.AddPicture 등의 다른 방법도 있지만 제일 간단하고, 내가 원하는 기능(지정한 위치)이 제대로 구현되는 방식을 택했다. 다른 방법들은 이유를 모르겠지만 제대로 구현되지 않았다. :( 


1. 필요한 네임스페이스 선언

using System.Windows.Forms;
using System.Drawing;
using Excel = Microsoft.Office.Interop.Excel;

2. 엑셀 파일로 저장하는 Excel Export 구현

//Field
private Excel._Application excel = new Excel.Application();
private Excel._Workbook = null;
private Excel._Worksheet worksheet = null;

//Excel Export
private void ExportToExcel() 
{
    workbook = excel.Workbooks.Add();
    worksheet = workbook.ActiveSheet;
    string picturePath = "이미지 경로 + 이미지 파일 이름 + 확장자";
    
    //셀(B, 2)에 이미지를 삽입한다.
    int cellImageRowNum = 2;
    int cellImageColNum = 2; 

    ///////////////////////////////////////////////////////////
    InsertImage(picturePath, cellImageRowNum, cellImageColNum);
    ///////////////////////////////////////////////////////////
    
    SaveFileDialog saveFileDialog = new SaveFileDialog();
    saveFileDialog.DefaultExt = ".xlsx";
    saveFileDialog.Filter = "Microsoft Excel Workbook (*.xls)|*.xlsx";
    saveFileDialog.FileName = "파일 이름".ToString();
    
    if(saveFileDialog.ShowDialog() == DialogReuslt.OOK)
    {
        workbook.SaveAs(saveFileDialog.FileName);

        workbook.Close();
        excel.Quit();
        workbook = null;
        excel = null;
    }
}

3. 원하는 셀 위치에 이미지를 삽입하는 InsertImage 구현.

//cellImageRowNum: 원하는 세로 셀(셀 1, 2, ...)
//cellImageColNum: 원하는 가로 셀(셀 A, B, ...)
private void InsertImage(String picturePath, int cellImageRowNum, int cellImageColNum)
{
    Excel.Range range = (Excel.Range)worksheet.Cells[cellImageRowNum, cellImageColNum];

    Image image = Image.FromFile(picturePath);
    ClipBoard.SetDataObject(image, true);
    worksheet.Paste(range, picturePath);
}​

4. 실행 결과

이미지가 셀 위치(B, 2)에 정상적으로 삽입되었습니다.

- 2022-11-22 수정) 셀 안에 삽입된 것은 아닙니다. 참고 바랍니다.

삽입한 이미지 크기 조절 관련 글은 따로 게시하겠습니다.

 

 

 

 

 

 

 

 

 

 

 


참고 사이트)

https://social.msdn.microsoft.com/Forums/vstudio/en-US/5bb5eb47-ea5e-4d97-a794-6266122552ea/how-to-programmatically-add-a-picture-or-icon-to-an-excel-worksheet-using-c?forum=csharpgeneral 

 

How to programmatically add a Picture or Icon to an Excel WorkSheet using C#

private void insertImage() { Excel.Application ThisApplication = new Excel.ApplicationClass(); Excel.Workbook ThisWorkBook; string _stFileName = "D:\\Test.xls"; string _stLOGO = "D:\\LOGO.bmp"; object missing = System.Reflection.Missing.Value; try { ThisWo

social.msdn.microsoft.com

 

728x90
반응형