0
linqを使用して、csvファイルをspeicifcの場所にダウンロードさせます。csvhelperを使用して特定の場所にファイルをダウンロードする
私はインターネットから何かを学び、csvhelperを学びます。 私は以下のように動作し、特定の場所(D:\ export.csv)にダウンロードするものを書きます。
public ActionResult YRecordReport()
{
using (var sw = new StreamWriter(@"d:\export.csv", true, Encoding.GetEncoding("big5")))
using (var writer = new CsvWriter(sw))
{
var abc = from t in db.TRecordDBSet
join s in db.SInfoDBSet on t.SId equals s.SId
orderby s.sId, t.StartToEndDate
select new TRecord()
{
StaffId = t.SId,
Date = t.StartToEndDate,
Name = s.Cname,
CourseName = t.Tname,
Organizer = t.Organizer,
Hour = t.Hour,
Score = t.Score
};
var source = abc.ToList();
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<TRecord, TRecord_Data>();
});
config.AssertConfigurationIsValid();
Mapper.Initialize(cfg => cfg.CreateMap<TRecord, TRecord_Data>());
writer.Configuration.Encoding = Encoding.GetEncoding("big5");
var mapper = config.CreateMapper();
List<TRecord_Data> records = Mapper.Map<List<TRecord>, List<TRecord_Data>>(source);
foreach (var item in records)
{
writer.WriteRecord(item);
}
}
}
私は彼らの特定の場所にファイルをダウンロードするには、ユーザーを聞かせしたいので、私は以下のようにコードを変更し、それがOKで実行され、たExport.csvファイルが空です。私は何も書いていないのですか?ユーザーがファイル名をダウンロードして使用できるようにするにはどうすればよいですか?
[MyAuthFilter(Auth = "Admin")]
public ActionResult YearTrainingRecordReport()
{
var memoryStream = new MemoryStream();
var stream = new StreamWriter(memoryStream);
var writer = new CsvWriter(stream);
var abc = from t in db.TRecordDBSet
join s in db.SInfoDBSet on t.SId equals s.SId
orderby s.SId, t.StartToEndDate
select new TRecord()
{
Sd = t.SId,
Date = t.StartToEndDate,
Name = s.Cname,
CourseName = t.Tname,
Organizer = t.Organizer,
Hour = t.Hour,
Score = t.Score
};
var source = abc.ToList();
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<TRecord, TRecord_Data>();
});
config.AssertConfigurationIsValid();
Mapper.Initialize(cfg => cfg.CreateMap<TRecord, TRecord_Data>());
writer.Configuration.Encoding = Encoding.GetEncoding("big5");
var mapper = config.CreateMapper();
List<TRecord_Data> records = Mapper.Map<List<TRecord>, List<TRecord_Data>>(source);
foreach (var item in records)
{
writer.WriteRecord(item);
}
return File(memoryStream, "text/csv", "export.csv");
}