如何将对象列表转换为CSV和zipit

问题描述 投票:0回答:1

我需要从对象生成多个文件,然后将所有文件缩回。

这就是我得到的,如果需要的话,我无法将
.CSV

文件拆分2中,并且

.csv

文件被打破了,我有很多文本错误列表...
最好的方法是什么?我靠近正确的东西吗?
Controller:

.csv

服务:

IActionResult GetDados()
{
    var list = _itensService.GetDadosXXX().ToList();
    var sourceFiles = _itensService.PrepareData(list);

    byte[] bytes = null;

    using (MemoryStream ms = new MemoryStream()) 
    {
        using (ZipArchive zip = new ZipArchive(ms, ZipArchiveMode.Create, true)) 
        {
            foreach(SourceFile sf in sourceFile) 
            { 
                ZipArchiveEntry zipItem = zip.CreateEntry(sf.Name + "." + sd.Extension)

                using (MemoryStream fileMemoryStream = new MemoryStream(sf.FileBytes))
                {
                    using (Stream entryStream = zipItem.Open())
                    { 
                        fileMemoryStream.CopyTo(entryStream);
                    }
                }
            }
        }
    }

    return File(FileBytes, "application/zip", ZipArchiveTest.zip");
}

Sourcefile:

public IEnumerable<SourceFile> PreparaData(List<XXXData> data)
{
    List<SourceFile> result = new List<SourceFile>();
    string archiveName = "Test_";
  
    var mStream = new MemoryStream();
    int aux = 1;
    foreach(object item in data) 
    {
        var binFormatter = new BinaryFormatter();
        binFormatter.Serialize(mStream, item);
        aux++;
    }

    result.Add(new SourceFile { Name = archiveName + aux, Extension = "csv", FileBytes = mStream.toArray() });

    return result;
}

让我知道是否还需要其他东西...

	

public class SourceFile { public string Name { get; set; } public string Extension { get; set; } public Byte[] FileBytes { get; set; } }
c# .net csv
1个回答
0
投票
如果您的对象是简单的普通属性集合,则可以使用

CSVHelper

来帮助创建CSV文件。请勿写入中间文件,只需直接write到条目流

BinaryFormatter 如果您的对象更复杂,则可能应该考虑支持层次对象的序列化格式,例如JSON,XML,Protobuf等。

© www.soinside.com 2019 - 2024. All rights reserved.