programing

C#의 XLSX에서 데이터 읽기

closeapi 2023. 7. 10. 22:24
반응형

C#의 XLSX에서 데이터 읽기

저는 c#에 처음이며 다음 코드로 c#에 있는 XLSX 파일을 읽으려고 합니다.

string Connection = "Provider=Microsoft.ACE.OLEDB.12.0;DataSource=c:\\Temp\\source.xlsx;Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=1\";";

//code to read the content of format file 
OleDbConnection con = new OleDbConnection(Connection);
OleDbCommand command = new OleDbCommand();

DataTable dt = new DataTable();
OleDbDataAdapter myCommand = new OleDbDataAdapter("select * from [Tabelle1$]", con);

myCommand.Fill(dt);
Console.Write(dt.Rows.Count);

출력에서 정확한 카운트를 얻었지만 두 가지 질문이 더 있습니다.

1. select where 문(행에 액세스하는 방법)을 만드는 방법은 무엇입니까?

 select * from [Tabelle1$] where A = '123' (A being an existing Excel row)

잘못된 매개 변수를 언급하는 오류가 발생합니다.

2. 누가 나에게 튜토리얼 링크나 짧은 샘플을 제공할 수 있습니까? 어떻게 데이터에 접근할 수 있습니까?

다음 샘플 코드를 참조하십시오.

private DataTable LoadXLS(string strFile, String sheetName, String column, String value)
{
    DataTable dtXLS = new DataTable(sheetName);

    try
    {
       string strConnectionString = "";

       if(strFile.Trim().EndsWith(".xlsx")) {

           strConnectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\";", strFile);

       } else if(strFile.Trim().EndsWith(".xls")) {

           strConnectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";", strFile);

       }

       OleDbConnection SQLConn = new OleDbConnection(strConnectionString);

       SQLConn.Open();

       OleDbDataAdapter SQLAdapter = new OleDbDataAdapter();

       string sql = "SELECT * FROM [" + sheetName + "$] WHERE " + column + " = " + value;

       OleDbCommand selectCMD = new OleDbCommand(sql, SQLConn);

       SQLAdapter.SelectCommand = selectCMD;

       SQLAdapter.Fill(dtXLS);

       SQLConn.Close();
    }

    catch (Exception e)
    {
       Console.WriteLine(e.ToString());
    }

    return dtXLS;

}

저는 이것이 훌륭한 답을 가진 오래된 질문이라는 것을 알고 있지만, 이 페이지는 "import xlsx c#"에 대한 구글의 결과를 높이 평가했기 때문에 NPOI 라이브러리를 사용하여 xls/xlsx 데이터를 읽는 더 현대적이고 간단한 방법을 추가하고 싶었습니다.저는 새로운 c# 개발자들이 ado.net 를 사용하는 것보다 엑셀 데이터를 더 쉽게 가져올 수 있는 방법이 있다는 것을 확실히 알고 싶습니다.

저는 NPOI와 NPOi의 조합을 사용합니다.Mapper(donnytian: https://github.com/donnytian/Npoi.Mapper) 에서 Excel 파일을 쉽게 가져올 수 있습니다.NPOI 및 Npoi에 대한 뉘트 참조를 추가합니다.그런 다음 가져올 열과 직접 관련된 강력한 유형의 클래스를 사용하여 xls/xlsx 데이터를 가져올 수 있습니다.

'''시스템 사용 중.IO; 시스템 사용.Linq; Npoi 사용.Mapper; Npoi 사용.Mapper. 특성. NPOI 사용.SS.사용자 모델, 사용자 관리 서비스 사용.모델;

네임스페이스 작업고객가져오기.프로세서 {public class Excel EmailProcessor {private User ManagementServiceContext DataContext {get; }

    public ExcelEmailProcessor(int customerNumber)
    {
        DataContext = new UserManagementServiceContext();
    }

    public void Execute(string localPath, int sheetIndex)
    {
        IWorkbook workbook;
        using (FileStream file = new FileStream(localPath, FileMode.Open, FileAccess.Read))
        {
            workbook = WorkbookFactory.Create(file);
        }

        var importer = new Mapper(workbook);
        var items = importer.Take<MurphyExcelFormat>(sheetIndex);
        foreach(var item in items)
        {
            var row = item.Value;
            if (string.IsNullOrEmpty(row.EmailAddress))
                continue;

            UpdateUser(row);
        }

        DataContext.SaveChanges();
    }

    private void UpdateUser(MurphyExcelFormat row)
    {
        //LOGIC HERE TO UPDATE A USER IN DATABASE...
    }

    private class MurphyExcelFormat
    {
        [Column("District")]
        public int District { get; set; }

        [Column("DM")]
        public string FullName { get; set; }

        [Column("Email Address")]
        public string EmailAddress { get; set; }

        [Column(3)]
        public string Username { get; set; }

        public string FirstName
        {
            get
            {
                return Username.Split('.')[0];
            }
        }

        public string LastName
        {
            get
            {
                return Username.Split('.')[1];
            }
        }
    }
}

} ```

관심이 있으시다면, 제 블로그에서 몇 가지 세부 사항을 다루었습니다.Excel 파일을 쉽게 가져오는 방법.

고마워요! 댄

언급URL : https://stackoverflow.com/questions/5886089/read-data-from-xlsx-in-c-sharp

반응형