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 파일 읽기를 목표로 하는 다른 라이브러리를 사용하는 것보다 뛰어났습니다.
몇 개의 링크:
- EPplus.Core: https://github.com/VahidN/EPPlus.Core
- 다음과 같은 구체적인 예로 사용 방법: https://www.codeproject.com/Articles/1217036/Console-Logging-and-Reading-Excel-Files-with-NET-C
도움이 되길 바랍니다.
후안
다음 패키지를 추가합니다.
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
'programing' 카테고리의 다른 글
두 번째로 큰 값을 찾는 가장 간단한 SQL 쿼리는 무엇입니까? (0) | 2023.08.26 |
---|---|
"could not find driver"를 대규모로 해결하는 방법은? (0) | 2023.08.26 |
상대적 위치 대 절대적 위치? (0) | 2023.08.26 |
자바스크립트에서 html 요소 객체를 복제하는 것이 가능합니까? (0) | 2023.08.26 |
iOS 6: How do I restrict some views to portrait and allow others to rotate? (0) | 2023.08.21 |