programing

asp.net core 1.0에서 Excel 파일 읽기

padding 2023. 8. 26. 10:31
반응형

asp.net core 1.0에서 Excel 파일 읽기

안녕하세요. 제 asp.net 프로젝트에 엑셀 파일을 업로드하여 읽으려고 하는데 제가 찾은 문서는 ASP MVC 5에 대한 것뿐입니다.제 목표는 엑셀 시트를 읽고 객체 목록에 값을 전달하는 것입니다.

이것은 내 컨트롤러이며, 내 wwwroot/uploads에 파일을 업로드하는 데 사용됩니다.

public class HomeController : Controller
{
    private IHostingEnvironment _environment;

    public HomeController(IHostingEnvironment environment)
    {
        _environment = environment;
    }

    public IActionResult index()
    {
        return View();
    }



    [HttpPost]
    public async Task<IActionResult> Index(ICollection<IFormFile> files)
    {
        var uploads = Path.Combine(_environment.WebRootPath, "uploads");
        foreach (var file in files)
        {
            if (file.Length > 0)
            {
                using (var fileStream = new FileStream(Path.Combine(uploads,    file.FileName), FileMode.Create))
                {
                    await file.CopyToAsync(fileStream);
                }
            }
        }
        return View();
    }

Visual Studio에서 패키지 관리자 콘솔을 열고 다음을 입력합니다.

PM> Install-Package EPPlus.Core

파일 작성은 다음과 같이 간단합니다.

public void WriteExcel(string fileName)
{


    FileInfo file = new FileInfo(fileName);
    /// overwrite old file
    if (file.Exists)
    {
        file.Delete();
        file = new FileInfo(fileName);
    }
    using (ExcelPackage package = new ExcelPackage(file))
    {
        // add a new worksheet to the empty workbook
        ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Employee");
        worksheet.Cells["A1"].Value = "HELLO WORLD!!!";
        package.Save(); 
    }
}

더 많은 예: http://www.talkingdotnet.com/import-export-xlsx-asp-net-core/

.NET Core OleDb 및 데이터 테이블이 없습니다.이로 인해 일부 프로젝트는 자체적으로 넷코어로 포팅하기가 더 어려워집니다.

OpenXml Excel 파일(xlsx)을 읽고 있다면 비공식 Eplus입니다.코어가 도와줄 수 있습니다.

그러나 이전 97-2003 형식(xls)의 경우 아직 해결책을 찾을 수 없었습니다.

올해 말에 NPOI 또는 Excel DataReader 중 하나가 코어 버전을 받기를 바라지만, 그 방향에 대한 활동은 많지 않습니다.

일부 의견과 답변에서 언급한 바와 같이 에 비공식적으로 EPLUS 포트가 있습니다.Net Core(지금 확인해 본 결과 Core 1.0, 1.1 및 2.0을 지원합니다)...

이 코드는 방법을 설명합니다.

var filePath = @"D:/test.xlsx";
FileInfo file = new FileInfo(filePath);

using (ExcelPackage package = new ExcelPackage(file))
{       
    ExcelWorksheet worksheet = package.Workbook.Worksheets[1];
    int rowCount = worksheet.Dimension.Rows;
    int ColCount = worksheet.Dimension.Columns;

    var rawText = string.Empty;
    for (int row = 1; row <= rowCount; row++)
    {
        for (int col = 1; col <= ColCount; col++)
        {   
            // This is just for demo purposes
            rawText += worksheet.Cells[row, col].Value.ToString() + "\t";    
        }
        rawText+="\r\n";
    }
    _logger.LogInformation(rawText);
}

참고: 오늘은 회사에서 사용했고 각 열에 직접 액세스하기 위해 열 이름과 열 이름이 일치하는 사전을 만들었습니다. 이름, 행별로 지정되었으며 성능은 csv 파일 읽기를 목표로 하는 다른 라이브러리를 사용하는 것보다 뛰어났습니다.

몇 개의 링크:

도움이 되길 바랍니다.

후안

다음 패키지를 추가합니다.

Install-Package Syncfusion.XlsIO.Net.Core -Version 17.2.0.49

Excel 파일을 읽는 방법:

 private DataTable ConvertExcelToDataTable(string path)
    {
            using (Stream inputStream = File.OpenRead(path))
            {
                using (ExcelEngine excelEngine = new ExcelEngine())
                {
                    IApplication application = excelEngine.Excel;
                    IWorkbook workbook = application.Workbooks.Open(inputStream);
                    IWorksheet worksheet = workbook.Worksheets[0];

                    DataTable dataTable = worksheet.ExportDataTable(worksheet.UsedRange, ExcelExportDataTableOptions.ColumnNames);
                    return dataTable;
                }
            }
    }

대부분의 경우 ASP를 사용하는지 여부는 중요하지 않습니다.NET 4 또는 ASP.엑셀 파일을 읽는 것과 관련하여 NET Core.당신은 그것을 할 수 있는 도서관을 찾으면 됩니다.프로젝트에 이러한 라이브러리를 추가하려면 NuGet을 사용하는 것이 좋습니다.

https://docs.nuget.org/ndocs/guides/install-nuget 에서 NuGet 패키지를 설치하는 방법을 참조하십시오.

제가 추천할 만한 도서관은 EPLUS(https://www.nuget.org/packages/EPPlus) 입니다.

파일 업로드가 완료되고 엑셀 파일을 어딘가에 저장했다면 읽기를 위해 EPLUS를 사용하여 열기만 하면 됩니다.간단한 예는 다음과 같습니다.

var package = new ExcelPackage(new FileInfo("sample.xlsx"));

ExcelWorksheet workSheet = package.Workbook.Worksheets[0];

for (int i = workSheet.Dimension.Start.Column; i <= workSheet.Dimension.End.Column; i++)
{
    for (int j = workSheet.Dimension.Start.Row; j <= workSheet.Dimension.End.Row; j++)
    {
        object cellValue = workSheet.Cells[i, j].Value;
    }
}

언급URL : https://stackoverflow.com/questions/40557935/read-an-excel-file-on-asp-net-core-1-0

반응형