gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 14:44:13 25 4
gpt4 key购买 nike

我从通用列表上的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com