fin datarow true ssa pty returns getc mes rem
这里只写MVC下的情况
- public ActionResult Index()
- {
- var path = Server.MapPath(@"/content/user.xlsx");
- var dt= ExcelToDataTable(true, path);
- List<User> list = new List<User>();
- foreach (DataRow item in dt.Rows)
- {
- list.Add(new User(){
- No=Convert.ToInt32( item[0]),
- Name= item[1].ToString(),
- Age=Convert.ToInt32(item[2]),
- Sex=item[3].ToString()
- });
- }
- return View(list);
- }
- /// <summary>
- /// 将excel中的数据导入到DataTable中
- /// </summary>
- /// <param name="isFirstRowColumn">第一行是否是DataTable的列名</param>
- /// <param name="fileName">文件路径</param>
- /// <returns>返回的DataTable</returns>
- public static DataTable ExcelToDataTable( bool isFirstRowColumn, string fileName)
- {
- if (string.IsNullOrEmpty(fileName))
- {
- throw new ArgumentNullException(fileName);
- }
- var data = new DataTable();
- IWorkbook workbook = null;
- FileStream fs = null;
- try
- {
- fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
- if (fileName.IndexOf(".xlsx", StringComparison.Ordinal) > 0)
- {
- workbook = new XSSFWorkbook(fs);
- }
- else if (fileName.IndexOf(".xls", StringComparison.Ordinal) > 0)
- {
- workbook = new HSSFWorkbook(fs);
- }
- ISheet sheet = null;
- if (workbook != null)
- {
- //获取第一个sheet
- sheet = workbook.GetSheetAt(0);
- }
- if (sheet == null) return data;
- var firstRow = sheet.GetRow(0);
- //一行最后一个cell的编号 即总的列数
- int cellCount = firstRow.LastCellNum;
- int startRow;
- if (isFirstRowColumn)
- {
- for (int i = firstRow.FirstCellNum; i < cellCount; ++i)
- {
- var cell = firstRow.GetCell(i);
- var cellValue = cell.StringCellValue;
- if (cellValue == null) continue;
- var column = new DataColumn(cellValue);
- data.Columns.Add(column);
- }
- startRow = sheet.FirstRowNum + 1;
- }
- else
- {
- startRow = sheet.FirstRowNum;
- }
- //最后一列的标号
- var rowCount = sheet.LastRowNum;
- for (var i = startRow; i <= rowCount; ++i)
- {
- var row = sheet.GetRow(i);
- //没有数据的行默认是null
- if (row == null) continue;
- var dataRow = data.NewRow();
- for (int j = row.FirstCellNum; j < cellCount; ++j)
- {
- //同理,没有数据的单元格都默认是null
- if (row.GetCell(j) != null)
- dataRow
来源: http://www.bubuko.com/infodetail-2409724.html