如何在实体框架项目中将表格数据转换为Excel格式
本文关键字:数据 表格 转换 格式 Excel 实体 框架 项目 | 更新日期: 2023-09-27 18:04:45
我有一个实体框架项目,我有名为的表
- dbo.patient
- dbo.doctor
- dbo.disease
这三张表是相互联系的。
我需要将带有医生姓名和疾病名称的患者数据转换为Excel格式的文件。。。我必须做些什么才能做到这一点?
我不知道怎么做…
有人能提供步骤吗?
我应该创建一个存储过程吗?如何将数据转换为Excel格式?
我可以在不使用存储过程的情况下执行此操作吗?
您可以使用名为EPPlus的免费开源库。
以下是链接:EPPlus创建高级Excel电子表格
以下是如何做到这一点。。
步骤1:
在Package Manager控制台上运行以下命令:
PM>安装程序包eppls
步骤2:
这是导出数据的方法:
注意:使用EF查询从服务器检索data
后,可以将其替换为actual data
。
public void ExportListUsingEPPlus()
{
//this is the data retrieval point you have to replace with your data
var data = new[]{
new{ Name="Myname", Email="myna@google.com"},
new{ Name="yourname", Email="your@yahoo.com"},
new{ Name="saman", Email="saman@yahoo.com"},
};
ExcelPackage excel = new ExcelPackage();
var workSheet = excel.Workbook.Worksheets.Add("Sheet1");
workSheet.Cells[1, 1].LoadFromCollection(data, true);
using (var memoryStream = new MemoryStream())
{
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment; filename=Contact.xlsx");
excel.SaveAs(memoryStream);
memoryStream.WriteTo(Response.OutputStream);
Response.Flush();
Response.End();
}
}
您可以以html或csv格式导出数据,并让Excel进行转换。这有它自己的陷阱。
例如,对于csv,如果您的文本数据看起来像日期或数字,Excel会将其转换为日期或数字。当这种情况发生时,我在数据中放入一个制表符来阻止它
而且,对于html,如果你告诉浏览器应该使用Excel打开它,用户会收到一个警告,即格式不是Excel。
尽管如此,我还是使用这些技术在MVC应用程序中进行了简单的导出,而无需使用库。
将响应设置为Excel(用于html输出(:
protected void SetResponseToExcel(string fileName)
{
HttpContext.Response.Clear();
HttpContext.Response.AddHeader("content-disposition",
"attachment;filename=" + fileName);
HttpContext.Response.Charset = "";
HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
HttpContext.Response.ContentType = "application/vnd.ms-excel";
}
将响应设置为csv:
protected void SetResponseToText(string fileName)
{
HttpContext.Response.Clear();
HttpContext.Response.AddHeader("content-disposition",
"attachment;filename=" + fileName);
HttpContext.Response.Charset = "";
HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
HttpContext.Response.ContentType = "text/csv";
}
进行导出:
public ActionResult MyExport()
{
SetResponseToText("MyFilename.csv");
Response.Write(String.Format("'"{0}'",...,{26}",
"Heading 1", ..., Environment.NewLine));
Response.Flush();
IEnumerable<MyClass> exportData = _MyService.GetMyData();
foreach (var row in exportData)
{
Response.Write(String.Format("'"{0}'"...,{26}",
"'t" + row.Field1, //tab character to force Excel to treat it as text
row.Field2, ..., Environment.NewLine));
}
Response.Flush();
Response.End();
return null;
}