MVC+bootstrap实现Excel导入功能
时间: 2023-12-09 07:03:21 浏览: 163
可以使用以下步骤实现MVC+bootstrap实现Excel导入功能:
1. 在MVC项目中添加ExcelHelper类,用于读取Excel内容。
2. 在View视图中添加导入Excel的按钮和相关表单控件。
3. 在Controller中添加导入Excel文件的Action方法,通过HttpPostedFileBase参数获取上传的Excel文件。
4. 在Action方法中调用ExcelHelper类读取Excel内容,并将读取结果存储到Model中。
5. 在View视图中展示读取结果。
6. 使用Bootstrap的样式美化展示效果。
具体实现细节可以参考以下示例代码:
ExcelHelper类:
```csharp
public class ExcelHelper
{
public static DataTable ReadExcelFile(Stream stream)
{
IWorkbook workbook = null;
ISheet sheet = null;
DataTable data = new DataTable();
int startRow = 0;
try
{
workbook = WorkbookFactory.Create(stream);
sheet = workbook.GetSheetAt(0);
if (sheet != null)
{
IRow firstRow = sheet.GetRow(0);
int cellCount = firstRow.LastCellNum;
for (int i = firstRow.FirstCellNum; i < cellCount; ++i)
{
DataColumn column = new DataColumn(firstRow.GetCell(i).StringCellValue);
data.Columns.Add(column);
}
startRow = sheet.FirstRowNum + 1;
for (int i = startRow; i <= sheet.LastRowNum; ++i)
{
IRow row = sheet.GetRow(i);
if (row == null) continue;
DataRow dataRow = data.NewRow();
for (int j = row.FirstCellNum; j < cellCount; ++j)
{
if (row.GetCell(j) != null)
dataRow[j] = row.GetCell(j).ToString();
}
data.Rows.Add(dataRow);
}
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
sheet?.Dispose();
workbook?.Close();
}
return data;
}
}
```
View视图:
```html
@using (Html.BeginForm("Import", "Excel", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<div class="form-group">
<label for="ExcelFile">选择Excel文件</label>
<input type="file" name="ExcelFile" id="ExcelFile" class="form-control-file" accept=".xls,.xlsx">
</div>
<button type="submit" class="btn btn-primary">导入</button>
}
@if (Model != null && Model.Rows.Count > 0)
{
<table class="table table-striped">
<thead>
<tr>
@foreach (DataColumn column in Model.Columns)
{
<th>@column.ColumnName</th>
}
</tr>
</thead>
<tbody>
@foreach (DataRow row in Model.Rows)
{
<tr>
@foreach (DataColumn column in Model.Columns)
{
<td>@row[column.ColumnName]</td>
}
</tr>
}
</tbody>
</table>
}
```
Controller:
```csharp
public class ExcelController : Controller
{
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Import(HttpPostedFileBase ExcelFile)
{
if (ExcelFile != null && ExcelFile.ContentLength > 0)
{
try
{
DataTable data = ExcelHelper.ReadExcelFile(ExcelFile.InputStream);
return View(data);
}
catch (Exception ex)
{
ModelState.AddModelError("ExcelFile", "读取Excel文件时发生错误:" + ex.Message);
}
}
else
{
ModelState.AddModelError("ExcelFile", "请选择Excel文件!");
}
return View();
}
}
```
以上示例代码中,上传的Excel文件将通过HttpPostedFileBase参数传递到Controller的Import方法中,然后调用ExcelHelper类的ReadExcelFile方法读取Excel内容,并将读取结果存储到Model中,在View视图中展示读取结果。同时,使用Bootstrap的样式美化展示效果。
阅读全文