如何让.net mvc 使用epplus导出数据库数据,并让用户自定义下载位置
时间: 2024-03-20 17:39:42 浏览: 128
您可以按照以下步骤使用EPPlus在.NET MVC中导出数据库数据,并让用户自定义下载位置:
1. 在您的MVC项目中安装EPPlus NuGet包。
2. 创建您的控制器方法,该方法将查询数据库并将结果导出到Excel文件中。以下是示例代码:
```csharp
public ActionResult ExportToExcel()
{
string fileName = "data.xlsx"; // Excel文件名
string fileContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; // 文件类型
// 获取数据并将其放入Excel工作簿中
var data = db.MyTable.ToList();
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
ExcelPackage excel = new ExcelPackage();
var workSheet = excel.Workbook.Worksheets.Add("Sheet1");
workSheet.Cells.LoadFromCollection(data, true);
// 将Excel工作簿保存到服务器临时文件夹中
var fileBytes = excel.GetAsByteArray();
var filePath = Path.Combine(Path.GetTempPath(), fileName);
System.IO.File.WriteAllBytes(filePath, fileBytes);
// 返回Excel文件以供下载
return File(filePath, fileContentType, fileName);
}
```
3. 在您的视图中创建一个表单,该表单将允许用户自定义下载位置。以下是示例代码:
```html
@using (Html.BeginForm("ExportToExcel", "Home", FormMethod.Post))
{
<label for="downloadPath">Download Path:</label>
<input type="text" name="downloadPath" id="downloadPath" />
<button type="submit">Export to Excel</button>
}
```
4. 在您的控制器方法中,使用以下代码获取用户选择的下载位置:
```csharp
string downloadPath = Request.Form["downloadPath"];
```
5. 在您的控制器方法中,使用以下代码将Excel文件保存到用户选择的下载位置:
```csharp
// 将Excel工作簿保存到用户指定的下载位置
var fileBytes = excel.GetAsByteArray();
System.IO.File.WriteAllBytes(downloadPath, fileBytes);
```
请注意,为了安全起见,您应该验证用户指定的下载位置是否有效,并确保您的代码不会覆盖现有的文件。
阅读全文