我想将数据列表导出为Excel格式,但我找不到任何第三方库或任何参考。我正在.net核心上构建我的项目。这里有专家建议任何解决方案。谢谢
答案 0 :(得分:3)
如果跨平台(Windows,Linux,Mac)是您的主要问题,那么您必须使用一些“预发布”的东西。
OpenXML的.NET Core支持存在问题,可用于创建Open XML Office文档(例如XLSX),(https://github.com/OfficeDev/Open-XML-SDK/issues/65)。有些工作必须在准备好之前完成。
有需求的人将其移植到.NET Core并在GitHub上发布他的项目(https://github.com/xrkolovos/Open-XML-SDK-for-NET-Platform-Standard)。我自己没有尝试过,但尝试一下可能是值得的。
如果您的应用程序仅在Windows上运行,那么您可以在完整的.NET Framework之上构建ASP.NET Core项目(使用众所周知的第三方库来创建Excel)。
答案 1 :(得分:1)
我差不多7个月前发布了这个问题,我找到了解决方案,所以我想分享一下。
在project.json上添加"PdfRpt.Core": "1.0.0-*"
[HttpGet("exportexcell")]
public async Task<FileContentResult> ExportExcel()
{
var loggedUser = await GetCurrentUserAsync();
var users = _userManager.Users.Select(u => new UserListVM
{
Id = u.Id,
Name = u.UserName,
Email = u.Email
}).ToList();
if (users == null) return null;
//column Header name
var columnsHeader = new List<string>{
"S/N",
"User Name",
"Email"
};
var filecontent = ExportExcell(users, columnsHeader, "Users");
return File(filecontent, "application/ms-excel", "users.xlsx"); ;
}
帮助方法
private static byte[] ExportExcell(List<UserListVM> data, List<string> columns, string heading)
{
byte[] result = null;
using (ExcelPackage package = new ExcelPackage())
{
// add a new worksheet to the empty workbook
var worksheet = package.Workbook.Worksheets.Add(heading);
using (var cells = worksheet.Cells[1, 1, 1, 7])
{
cells.Style.Font.Bold = true;
cells.Style.Fill.PatternType = ExcelFillStyle.Solid;
cells.Style.Fill.BackgroundColor.SetColor(Color.Green);
}
//First add the headers
for (int i = 0; i < columns.Count(); i++)
{
worksheet.Cells[1, i + 1].Value = columns[i];
}
//Add values
var j = 2;
var count = 1;
foreach (var item in data)
{
worksheet.Cells["A" + j].Value = count;
worksheet.Cells["B" + j].Value = item.Name;
worksheet.Cells["C" + j].Value = item.Email;
worksheet.Cells["D" + j].Value = item.RoleNam
j++;
count++;
}
result = package.GetAsByteArray();
}
return result;
}
//它对我来说很好..它对你也有帮助。
你可以找到demo here
答案 2 :(得分:1)
首先,Thx为您的工作。它现在正在帮助我:D
其次,你的代码演示中有错误
//First add the headers
for (int i = 0; i < columnsHeader.Count; i++)
{
worksheet.Cells[1, i + 1].Value = columnsHeader[i];
}
将columnsList替换为columnsHeader(存储表格标题的位置)。像这样:
$(document).ready(function() {
$("input.sliderValue").change(function(e) {
var el = e.currentTarget;
var dataIndex = el.getAttribute('data-index');
});
});
干杯!