【发布时间】:2021-01-27 15:31:57
【问题描述】:
我正在研究从 DB 读取数据(从数组(String[] getPersons) 作为输入)并将其写入 excel 文件的要求。我遇到了一种情况,在 DB 中,我的 DepartmentID 值为 1、2、3 等。其中 1 代表 CSE,2 代表 ECE,3 代表 IT 等。
现在,下面的代码正在获取 DepartmentId 的号码,而我需要为这些号码设置相应的部门。
var container = db.GetContainer(containerId);
var q = container.GetItemLinqQueryable<Student>();
var requests = q.Where(p => getStudents.Contains(p.StudentName)).ToFeedIterator();
using (var ms = new MemoryStream())
{
TextWriter tw = new StreamWriter(ms);
foreach (var request in requests)
{
tw.WriteLine($"{request.DepartmentId},{request.StudentName}");
}
tw.Flush();
await ms.CopyToAsync(response.FileContent).ConfigureAwait(false);
}
请注意,DB 中没有 DepartmentName 字段(也无法添加),我需要以某种方式将 DepartmentId 转换为相应的 DepartmentNames,然后将其写入 excel。有没有办法做到这一点?我愿意接受建议。 提前致谢!!!
【问题讨论】:
-
Excel 文件不是文本,它们是包含 XML 文件的 ZIP 包。您不能使用
TextWriter写入任何二进制文件,而不仅仅是 Excel 文件。您可以使用 EPPlus 或 NPOI 等库从集合中创建 Excel 文件,例如sheet.Cells.LoadFromCollectioon(requests) -
似乎您需要详细说明 excel 部分。在我的回答中,您的代码将创建与以前相同的文件,但具有正确的部门名称。它仍然是逗号分隔(csv),可以通过 excel 打开。如果你希望它是一个 xls/xlsx 文件,它们是不同的格式(新的格式是 Panagiotis 提到的一个 zip 包),而不是旧的格式。请详细说明,我们可以为您提供更好的帮助。
标签: c# .net textwriter