EXCEL FILE을 읽고 쓰는 방법
1. Microsoft.Office.Interop.Excel 참조
솔루션 탐색기에서 참조를 선택 후 마우스 오른쪽 버튼 클릭
어셈블리 > 검색에 Microsoft.Office.Interop.Excel 검색 > 결과 뜨면 체크 > 확인
2. using 입력
3. TEST 환경 구축
- winform에 textbox를 추가해 Excel 경로를 입력하게 하고
- 버튼을 누르면
- richtextbox에 내용을 담거나, 읽어서 엑셀에 쓰도록 하려고 한다.
4. 버튼 클릭 이벤트 생성
버튼 선택 후 속성창에서 번개모양 선택 후 Click을 찾아 더블클릭하면 자동으로 생성된다
버튼을 클릭하면 textbox안에 있는 경로의 excel file을 읽어서
첫번째 sheet를 사용하고, 글이 작성되어있는 부분의 range를 받아, 내용을 읽어 richtextbox에 append한다.
여기서 파일 경로는 해당부분을 변경해주면 되고,
Microsoft.Office.Interop.Excel.Workbook _workbook = _app.Workbooks.Open(filepath, 0, true, 5, "", ":", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
sheet는 해당 부분을
Microsoft.Office.Interop.Excel.Worksheet _worksheet = (Microsoft.Office.Interop.Excel.Worksheet)_workbook.Worksheets.get_Item(1);
그리고 현재는 "A"열의 정보를 가져온다.
if (_worksheet.get_Range("A"+i).Value2 == null) acolumn = "";
private void button1_Click(object sender, EventArgs e)
{
//File 경로
string filepath = textBox1.Text;
//APP 연결, WORKBOOK 설정, WORKSHEET 설정
Microsoft.Office.Interop.Excel.Application _app = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook _workbook = _app.Workbooks.Open(filepath, 0, true, 5, "", ":", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
//첫 번째 SHEET 사용 / 만약 2번째 SHEET 사용 시 .get_Item(2)
Microsoft.Office.Interop.Excel.Worksheet _worksheet = (Microsoft.Office.Interop.Excel.Worksheet)_workbook.Worksheets.get_Item(1);
object misvalue = System.Reflection.Missing.Value;
//사용되어진 column의 갯수와 row 갯수를 변수로 저장
int column_Count = _worksheet.UsedRange.Columns.Count;
int row_Count = _worksheet.UsedRange.Rows.Count;
string acolumn = "";
//1번째 줄부터, row_count까지
for (int i = 1; i<= row_Count; i++)
{
if (_worksheet.get_Range("A"+i).Value2 == null) acolumn = "";
else acolumn = _worksheet.get_Range("A"+i).Value2.ToString();
richTextBox1.AppendText(i.ToString() + "번째줄 " + acolumn + "\n");
}
}
5. Excel에 Data를 쓰기
Excel에 쓰여진 글을 읽어왔으니, 데이터를 쓰기도 해보자
Excel에 쓸 때 사용되는 내용은 다음과 같다.
_worksheet.Cells[i, 2] = i.ToString();
private void button1_Click(object sender, EventArgs e)
{
//File 경로
string filepath = textBox1.Text;
string newfilepat= @"C:\testexcel2.xlsx";
//APP 연결, WORKBOOK 설정, WORKSHEET 설정
Microsoft.Office.Interop.Excel.Application _app = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook _workbook = _app.Workbooks.Open(filepath, 0, true, 5, "", ":", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
//첫 번째 SHEET 사용 / 만약 2번째 SHEET 사용 시 .get_Item(2)
Microsoft.Office.Interop.Excel.Worksheet _worksheet = (Microsoft.Office.Interop.Excel.Worksheet)_workbook.Worksheets.get_Item(1);
object misvalue = System.Reflection.Missing.Value;
//사용되어진 column의 갯수와 row 갯수를 변수로 저장
int column_Count = _worksheet.UsedRange.Columns.Count;
int row_Count = _worksheet.UsedRange.Rows.Count;
string acolumn = "";
for (int i = 1; i <= 10; i++ )
{
_worksheet.Cells[i, 2] = i.ToString();
}
//1번째 줄부터, row_count까지
_workbook.SaveAs(newfilepat);
_workbook.Close(false, misvalue, misvalue);
_app.Quit();
}
[참고1] 참고로 새로 저장할 이름을 그냥 string으로 적어서 사용했지만, 하단 링크를 참조해 경로, 파일이름, 파일형식으로 분리하여 다음과같이 사용할 수도 있겠다.
_eWorkbook.SaveAs(filepath + @"\" + filename + "_Revised" + extension);
[참고2] 데이터를 읽을 때도 "A"라고 특정 열의 알파벳을 지정했다.
반복문으로 실행 시 i를 주고 i열의 알파벳을 받고싶을 때 해당 링크를 참조하자.
'c# > 기타' 카테고리의 다른 글
[c#] directoryinfo 경로, 폴더, 파일 (0) | 2021.12.16 |
---|---|
[c#] 숫자를 엑셀 열 알파벳으로 변환 (0) | 2021.12.16 |
[c#] file 경로를 경로, 파일이름, 파일 형식으로 분리 (0) | 2021.12.16 |
[C#] enum (0) | 2021.12.06 |
[C#] String vs StringBuilder (0) | 2021.12.06 |