반응형
C#으로 워크시트 셀에 값, 함수 넣기
1. 목표
-
셀에 숫자, 텍스트 넣기
-
엑셀 함수를 넣어 합계 구하기
-
셀에 랜덤한 숫자를 넣고 합계 구하기 예제
2. 전체 코드
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;
namespace chapter_003
{
class Program
{
static void Main(string[] args)
{
Application excelapp = new Application();
Workbook read_wb = excelapp.Workbooks.Open(Filename: @"C:\test\1234.xlsx");
Worksheet ws = read_wb.Worksheets.Item[1];
Range rg1 = ws.Cells[1, 1];
rg1.Value = "abcd";
Range rg2 = ws.Cells[1, 2];
rg2.Formula = "=sum(1,2,3,4,5)";
Console.WriteLine(rg1.Value);
Console.WriteLine(rg2.Value);
Console.WriteLine(rg1.Value);
//예제 만들기
Worksheet ws2 = read_wb.Worksheets.Item[2];
Random rand = new Random();
int i;
for (i = 1; i <= 10; i++)
{
Range rg3 = ws2.Cells[i, 1];
Range rg4 = ws2.Cells[i, 2];
Range rg5 = ws2.Cells[i, 3];
rg3.Value = i;
rg4.Value = DateTime.Now.ToString();
rg5.Value = rand.Next(100);
Marshal.ReleaseComObject(rg3);
Marshal.ReleaseComObject(rg4);
Marshal.ReleaseComObject(rg5);
}
Range rg6 = ws2.Range[ws2.Cells[i + 1, 1], ws2.Cells[i + 1, 2]];
Range rg7 = ws2.Cells[i + 1, 3];
rg6.Value = "Total";
rg7.Formula = "=sum(c1:c10)";
read_wb.Save();
read_wb.Close();
excelapp.Quit();
Marshal.ReleaseComObject(rg1);
Marshal.ReleaseComObject(rg2);
Marshal.ReleaseComObject(rg6);
Marshal.ReleaseComObject(rg7);
Marshal.ReleaseComObject(ws);
Marshal.ReleaseComObject(ws2);
Marshal.ReleaseComObject(read_wb);
Marshal.ReleaseComObject(excelapp);
}
}
}
3. 뜯어 보기
Range rg1 = ws.Cells[1, 1];
rg1.Value = "abcd";
-
rg1에 1,1(엑셀 셀 주소로는 A1)을 할당한다.
-
rg1.value로 셀의 내용을 추가한다. (숫자, 텍스트 등... )
-
rg1.value에 함수 값을 그냥 넣을 경우 함수 계산이 제대로 되지 않는다.
Range rg2 = ws.Cells[1, 2];
rg2.Formula = "=sum(1,2,3,4,5)";
-
rg2.Formula를 이용하여 셀에 함수값을 넣는다.
-
C#과 무관한 엑셀 함수를 넣어야 계산이 된다.
Worksheet ws2 = read_wb.Worksheets.Item[2];
Random rand = new Random();
int i;
for (i = 1; i <= 10; i++)
{
Range rg3 = ws2.Cells[i, 1];
Range rg4 = ws2.Cells[i, 2];
Range rg5 = ws2.Cells[i, 3];
rg3.Value = i;
rg4.Value = DateTime.Now.ToString();
rg5.Value = rand.Next(100);
Marshal.ReleaseComObject(rg3);
Marshal.ReleaseComObject(rg4);
Marshal.ReleaseComObject(rg5);
}
Range rg6 = ws2.Range[ws2.Cells[i + 1, 1], ws2.Cells[i + 1, 2]];
Range rg7 = ws2.Cells[i + 1, 3];
rg6.Value = "Total";
rg7.Formula = "=sum(c1:c10)";
-
2번째 워크시트(read_wb.Worksheets.Item[2])에 현재 시간값과 난수를 이용하여 예제를 만든다.
-
rg3, rg4, rg5는 1,2,3열에 각각 번호, 현재 시각, 0부터 100까지의 난수를 입력한다.
-
rg6, rg7을 이용하여 "Total"텍스트 입력과 3열의 값 합계를 계산하는 엑셀 함수를 작성한다.
반응형
'C# > C# & Excel' 카테고리의 다른 글
C# 엑셀(Excel) 06. 셀 테두리, 배경, 크기 설정 방법 (0) | 2021.02.15 |
---|---|
C# 엑셀(Excel) 05. 셀 병합, 셀 병합 해제 방법 (0) | 2021.02.11 |
C# 엑셀(Excel) 03. 워크시트 셀 선택 방법 (0) | 2021.02.07 |
C# 엑셀(Excel) 02. C#으로 워크시트 선택, 생성, 컨트롤 (0) | 2021.02.04 |
C# 엑셀(Excel) 01. C#으로 엑셀 열기, 저장, 닫기 (0) | 2021.01.31 |