ASP.NETCore --- Excel 파일 가져오기
프런트엔드 인터페이스
@{
    Layout = null;
}
    "viewport" content="width=device-width" />
    Xlsx 
     "multipart/form-data"method="post"asp-action="ImportToDataTable">"file"name="excelfile"/>
"submit"value = "업로드"/>
백그라운드
 ///   
        ///  EXCEL   
        /// 
        ///  
        ///  
        
        public void  ImportToDataTable(IFormFile excelfile)
        {         
            DataTable dt = new DataTable();
            var filePath = excelfile.FileName.Split('.');
            if (filePath[1].ToLower()==".xls")
            {//.xls
                #region .xls :HSSFWorkbook
                HSSFWorkbook hssfworkbook;
                try
                {
                    using (MemoryStream ms = new MemoryStream())
                    {
                        excelfile.CopyTo(ms);
                        ms.Seek(0, SeekOrigin.Begin);
                        hssfworkbook = new HSSFWorkbook(ms);
                    }
                   
                    ISheet sheet = hssfworkbook.GetSheetAt(0);
                    System.Collections.IEnumerator rows = sheet.GetRowEnumerator();
                    var maxRowIndex = 0;
                    while (rows.MoveNext())
                    {
                        IRow row = (HSSFRow)rows.Current;
                        var r = row.Cells.Select(p => p.StringCellValue).ToList();
                        var _result = row.Cells.Any(t => !string.IsNullOrEmpty(t.StringCellValue));
                        if (_result)
                        {
                            maxRowIndex = row.RowNum;
                            break;
                        }
                    }
                    HSSFRow headerRow = (HSSFRow)sheet.GetRow(maxRowIndex);// 
                    var _ColumnIndex = new List<int>();
                    //    
                    for (int j = 0; j < (headerRow.LastCellNum); j++)
                    {
                        //SET EVERY COLUMN NAME
                        HSSFCell cell = (HSSFCell)headerRow.GetCell(j);
                        if (!string.IsNullOrEmpty(cell.StringCellValue))
                        {
                            dt.Columns.Add(cell.ToString());
                            _ColumnIndex.Add(cell.ColumnIndex);
                        }
                    }
                    while (rows.MoveNext())
                    {
                        IRow row = (HSSFRow)rows.Current;
                        DataRow dr = dt.NewRow();
                        if (row.RowNum <= headerRow.RowNum) continue;
                        for (int i = 0; i < _ColumnIndex.Count; i++)
                        {                            
                            if (i >= dt.Columns.Count)
                            {
                                break;
                            }
                            ICell cell = row.GetCell(_ColumnIndex[i]);
                            if ((i == 0) && cell == null)// cell ,break
                            {
                                break;
                            }
                            if (cell == null)
                            {
                                dr[i] = null;
                            }
                            else
                            {
                                switch (cell.CellType)
                                {
                                    case CellType.String:
                                        dr[i] = cell.StringCellValue;
                                        break;
                                    case CellType.Numeric:
                                        if (DateUtil.IsCellDateFormatted(cell))
                                        {
                                            dr[i] = cell.DateCellValue;
                                        }
                                        else
                                        {
                                            dr[i] = cell.NumericCellValue;
                                        }
                                        break;
                                    default:
                                        dr[i] = null;
                                        break;
                                }
                            }
                        }
                      
                            dt.Rows.Add(dr);
                                            
                    }
                }
                catch (Exception e)
                {
                    throw new Exception(e.Message, e);
                }
                #endregion
            }
            else
            {//.xlsx
                #region .xlsx :XSSFWorkbook
                XSSFWorkbook hssfworkbook;
                try
                {
                    using (MemoryStream ms = new MemoryStream())
                    {
                        excelfile.CopyTo(ms);
                        ms.Seek(0, SeekOrigin.Begin);
                        hssfworkbook = new XSSFWorkbook(ms);
                    }                   
                    ISheet sheet = hssfworkbook.GetSheetAt(0);
                    // ISheet sheet = hssfworkbook.GetSheet(sheetName);
                    System.Collections.IEnumerator rows = sheet.GetRowEnumerator();
                    var maxRowIndex = 0;
                    while (rows.MoveNext())
                    {
                        IRow row = (XSSFRow)rows.Current;
                        var _result = row.Cells.Any(t => !string.IsNullOrEmpty(t.StringCellValue));
                        if (_result)
                        {
                            maxRowIndex = row.RowNum;
                            break;
                        }
                    }
                    XSSFRow headerRow = (XSSFRow)sheet.GetRow(maxRowIndex);// 
                    var _ColumnIndex = new List<int>();
                    //    
                    for (int j = 0; j < (headerRow.LastCellNum); j++)
                    {
                        //SET EVERY COLUMN NAME
                        XSSFCell cell = (XSSFCell)headerRow.GetCell(j);
                        if (!string.IsNullOrEmpty(cell.StringCellValue))
                        {
                            dt.Columns.Add(cell.ToString());
                            _ColumnIndex.Add(cell.ColumnIndex);
                        }
                    }
                    while (rows.MoveNext())
                    {
                        IRow row = (XSSFRow)rows.Current;
                        DataRow dr = dt.NewRow();
                        if (row.RowNum == 0) continue;
                        for (int i = 0; i < _ColumnIndex.Count; i++)
                        {
                            if (i >= dt.Columns.Count)
                            {
                                break;
                            }
                            ICell cell = row.GetCell(_ColumnIndex[i]);
                            if ((i == 0) && (cell == null))// cell ,break
                            {
                                break;
                            }
                            if (cell == null)
                            {
                                dr[i] = null;
                            }
                            else
                            {
                                switch (cell.CellType)
                                {
                                    case CellType.String:
                                        dr[i] = cell.StringCellValue;
                                        break;
                                    case CellType.Numeric:
                                        if (DateUtil.IsCellDateFormatted(cell))
                                        {
                                            dr[i] = cell.DateCellValue;
                                        }
                                        else
                                        {
                                            dr[i] = cell.NumericCellValue;
                                        }
                                        break;
                                    default:
                                        dr[i] = null;
                                        break;
                                }
                            }
                        }
                        dt.Rows.Add(dr);
                    }
                }
                catch (Exception e)
                {
                    throw new Exception(e.Message, e);
                }
                #endregion
            }
            var a =  dt.Rows.Count;// 
        }
         다음으로 전송:https://www.cnblogs.com/macT/p/11613663.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.