programing

XLSX(Excel)에서 읽는 방법?

css3 2023. 6. 14. 22:08

XLSX(Excel)에서 읽는 방법?

.xlsx(Excel) 파일에서 읽는 데 문제가 있습니다.사용하려고 했습니다.

var fileName = @"C:\automated_testing\ProductsUploadTemplate-2015-10-22.xlsx";
var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", fileName);

var adapter = new OleDbDataAdapter("SELECT * FROM [workSheetNameHere$]", connectionString);
var ds = new DataSet();
adapter.Fill(ds, "XLSData");
DataTable data = ds.Tables["XLSData"];

// ... Loop over all rows.
StringBuilder sb = new StringBuilder();
foreach (DataRow row in data.Rows)
{
    sb.AppendLine(string.Join(",", row.ItemArray));
}

하지만 만약 때문에 실패한다면,connectionString그래서 .xlsx를 지원하도록 라인을 업데이트했습니다.

var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 12.0;", fileName);

하지만 전 이해해요.

마이크로소프트사.ACE.OLEDB.12.0' 제공자가 로컬 컴퓨터에 등록되어 있지 않습니다.

문제는 원격 테스트 시스템에 새 소프트웨어를 설치할 수 없기 때문에 수정할 수 없고 다른 솔루션을 찾아야 한다는 것입니다.

또한 가져온 데이터가 간단한 방법으로 저장되는지 확인해야 합니다(나는 초보 프로그래머입니다). 즉, 행 데이터로 개체를 만들 수 있습니다.

내가 확인한 다른 접근법:

comment: 아마도 저에게 적합한 것처럼 보이지만, 알 수 없는 차원의 Excel 파일(행과 열의 임의 개수)을 지원하지 않습니다.

comment: 첫 번째 행과 다른 행의 설정 열 이름을 지원하지 않습니다. 일부 Excel 파일에서는 첫 번째 행에 4-6개의 주석이 있고 그 다음에 헤더 행과 아래 데이터가 있습니다.

코멘트: 위와 같은 문제입니다.

코멘트: 다운로드된 패키지 무게가 60MB 이상이었고 시스템에 설치해야 하는데, 제 상황에서는 불가능합니다.어쨌든, 사람들은 그것이 150줄로 제한된다고 말합니다.

한편, 저는 https://code.google.com/p/linqtoexcel/, 을 확인하려고 노력할 것이지만, 다른 모든 아이디어는 환영할 만합니다!

편집: 방금 위와 같은 문제인 LinkQToExcel을 확인했습니다.

마이크로소프트사.ACE.OLEDB.12.0' 제공자가 로컬 컴퓨터에 등록되어 있지 않습니다.

EDIT2: 궁극적으로 이 솔루션을 통해 문제가 해결된 것 같습니다.

https://stackoverflow.com/a/19065266/3146582

데이터를 읽는 경우Excel파일, 사용할 수 있습니다.EPPlusNuGet 패키지 및 다음 코드를 사용합니다.

//using OfficeOpenXml;
using (ExcelPackage xlPackage = new ExcelPackage(new FileInfo(@"C:\YourDirectory\sample.xlsx")))
{
    var myWorksheet = xlPackage.Workbook.Worksheets.First(); //select sheet here
    var totalRows = myWorksheet.Dimension.End.Row;
    var totalColumns = myWorksheet.Dimension.End.Column;

    var sb = new StringBuilder(); //this is your data
    for (int rowNum = 1; rowNum <= totalRows; rowNum++) //select starting row here
    {
        var row = myWorksheet.Cells[rowNum, 1, rowNum, totalColumns].Select(c => c.Value == null ? string.Empty : c.Value.ToString());
        sb.AppendLine(string.Join(",", row));
    }
}

MS Jet 엔진(MS Access)이 설치된 경우에만 OLE 공급자로 Excel 파일을 읽을 수 있습니다.API에 .NET interop을 사용하기로 결정한 것을 알았지만 이것은 좋은 생각이 아닙니다. MS Excel이 설치되어 있어야 하며 서버에서 자동화를 위해 사용하는 것은 권장되지 않습니다.

이전(이진) Excel 형식(xls)을 지원할 필요가 없고 XLSX를 읽는 것으로 충분하다면 EP Plus 라이브러리를 사용하는 것을 추천합니다.XLSX 파일 읽기 및 쓰기를 위한 간단하고 강력한 API를 제공합니다(많은 예제 포함).

var existingFile = new FileInfo(filePath);
// Open and read the XlSX file.
using (var package = new ExcelPackage(existingFile)) {
   // access worksheets, cells etc
}

언급URL : https://stackoverflow.com/questions/33302235/how-to-read-from-xlsx-excel