View

 

 


예전에 SheetJS를 이용해서 엑셀데이터를 가져오고
엑셀을 시트별로 만드는 것을 했었는데

 

 

javascript :: SheetJS 테이블들 엑셀 시트 별로 다운로드하기

이번에 엑셀다운로드를 구현하는 일을 맡게 되었다. 이전까지는 엑셀 다운로드를 할 때 단일 시트형식이었기 때문에 큰 어려움은 없었다. 하지만 이번에는 테이블에 따라 시트를 나눠달라는 요

w94dev.tistory.com



C# DLL을 다운받아 직접 엑셀데이터를 가져와보자


첫 번째 / DLL 다운받기 🔥
엑셀 데이터를 가져오기 위해서는 먼저 DLL을 다운받아야한다
솔루션탐색기>마우스 오른쪽 버튼 클릭> NuGet패키지관리 클릭

ExcelDatareader와
ExcelDataReader.DataSet을 다운로드 받는다
둘 다 받아야 한다!


두 번째 / ExcelDataReader참조로 넣기🔥
엑셀 데이터를 부를 소스페이지에
using ExcelDataReader; 를 추가해주어 엑셀 데이터를 가져올 준비를 끝낸다


사용 예시 🔥

DataSet dsExcel = null;

using (var stream = File.Open(filepath, FileMode.Open, FileAccess.Read))
{
    ExcelReaderConfiguration conf = new ExcelReaderConfiguration();

    // 한글 인코딩
    conf.FallbackEncoding = Encoding.GetEncoding("ks_c_5601-1987");

    using (var dtreader = ExcelReaderFactory.CreateCsvReader(stream, conf))
    {
        dsExcel = dtreader.AsDataSet();
    }
}

foreach (DataTable datatableExcel in dsExcel.Tables)
{

    foreach (DataRow DtRw in datatableExcel.Rows)
    {

	for (int i=0; i< exDtRw.ItemArray.Length; i++)
        {
            Console.WriteLine(exDtRw[i].ToString());
        }

    }
}




❗ ExcelDataReader 사용 시 일어날 수 있는 문제
😃   한글인코딩
처음에 엑셀 데이터를 가져왔을 때 한글 깨짐현상이 있었다.
그때는 다음 인코딩을 추가해준다.

ExcelReaderConfiguration conf = new ExcelReaderConfiguration();
conf.FallbackEncoding = Encoding.GetEncoding("ks_c_5601-1987");

😃  엑셀 유형 문제
나는 정해진 엑셀 형식이 csv였기 때문에 ExcelReaderFactory.CreateCsvReader를 사용했다 .
엑셀에서 xlsx, xls , csv 형식이 존재하기 때문에 형식에 맞는 함수를 사용해주면 된다. 

형식이 모두 필요하다면 switch 구문이나 if문으로 구분해서 사용하면 될 듯하다

 

Method 해당 형식
CreateBinaryReader xls
CreateOpenXmlReader xlsx
CreateCsvReader csv

 

 

Share Link
reply
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31