c# - 使用服务器端 webapi 和列表导出到 Excel

标签 c# asp.net-mvc asp.net-web-api export-to-excel

我从通用列表上的 API 获得响应 IEnumerable<myClass> objClass .

我在这里尝试使用 StreamWriter 将列表导出到 CSV 文件

var serviceResponse = await services.GetProfileRepositoryAsync(requestDto, token);
                if(requestDto.IsExportable)
                {
                    MemoryStream stream = new MemoryStream();
                    StreamWriter writer = new StreamWriter(stream);
                    **writer.Write((serviceResponse.dto.NewSoftwareFileDto));**
                    writer.Flush();
                    stream.Position = 0;
                    return File(stream, "text/csv", "filesname.csv");
                }

serviceResponse.dto.NewSoftwareFileDto返回列表 writer.Write不是拧内容。一旦我将 Objectresult 与 writer.Write() 一起使用方法,它在早些时候工作。现在我想不起来了。

我想避免遍历列表和写入数据。

最佳答案

您不能将 DTO 列表直接发送到 MemoryStream使用 StreamWriter.Write() ,因为 StreamWriter.Write() 只接受 char , char[]string作为第一个参数。由于您想避免使用循环(forforeach ),您可以使用 LINQ 创建一个 List<string>从现有的 DTO 列表中提取逗号分隔值,然后将其内容写入流中:

MemoryStream stream = new MemoryStream();
StreamWriter writer = new StreamWriter(stream);

// create list of strings from DTO list
List<string> items = serviceResponse.dto.NewSoftwareFileDto.Select(x => 
      string.Join(",", x.Property1, x.Property2, ...)).ToList();

// insert newline between every lines (i.e. list indexes)
string combined = string.Join(Environment.NewLine, items);

// write combined strings to StreamWriter
writer.Write(combined);

writer.Flush();
stream.Position = 0;
return File(stream, "text/csv", "filesname.csv");

请注意 Property1 , Property2 etc. 表示 DTO 对象列表中的属性名称,具体取决于定义顺序。 Select 中使用的属性名称必须在 NewSoftwareFileDto 内可用.

关于c# - 使用服务器端 webapi 和列表导出到 Excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55237065/

相关文章:

c# - FFT算法得到错误的声音频率值

c# - 更新 ASP .Net MVC 中的记录

c# - 在控制台应用程序中同步运行的任务

c# - 在 ASP.net MVC 中使用 benchmarkdotnet 获取性能结果

c# - MVC 3 Ajax.ActionLink 了解一些东西

dependency-injection - Autofac 未解决模型绑定(bind)器依赖项

c# - Web API 和 Entity Framework ,在哪里指定数据库连接?

c# - PC 重新启动后,Visual Studio 有时会重建未修改的项目

c# - BulletPhysics/BulletSharp 中的多线程?

c# - 为 C# 泛型类型方法创建 stub