【发布时间】:2017-01-17 07:40:08
【问题描述】:
我正在导出一个 csv 文件并将日期字段和电话号码字段屏蔽,如下图所示。只有当我在 Microsoft Excel 中而不是在其他平台上打开导出的文件时才会出现此问题
我想要做的是取下面具并将出生日期和数字正确显示为:出生日期:“12/11/2016”和数字为“123456789”。
注意:出生日期是日期时间,手机或手机号码是字符串
我用来创建它的代码如下:
foreach (EmployeeDataExportObject item1 in _obj_distinct_company)
{
sb.Append(string.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12},{13},{14},{15},{16},{17},{18},{19},{20},{21}"
, item1.client_id
, item1.employee_number
, item1.employee_status_type
, item1.first_name.Replace(",", "")
, item1.middle_name.Replace(",", "")
, item1.last_name.Replace(",", "")
, '"' + item1.ssn.ToString() + '"'
, '"' + birth_date.ToString("MM-dd-yyyy") + '"' //problem is on this part
, Address.Replace(",", "")
, item1.address2.Replace(",", "")
, item1.city
, item1.state
, item1.zip_code
, item1.country
, '"' + item1.cell_phone.ToString().Replace("-", "").Replace("(", "").Replace(")", "").Replace(".", "").Replace(" ", "") + '"' //problem is on this part
, item1.pay_rate1
, item1.pay_rate_amount1.ToString("0.00")
, item1.pay_rate2
, item1.pay_rate_amount2.ToString("0.00")
, item1.employee_status_type
, item1.termination_reason.Replace(",", " ")
, item1.termination_date.ToString("MM-dd-yyyy"))
+ Environment.NewLine);
}
_fileName = item.company_name;
if (!Directory.Exists(paychex_folder))
Directory.CreateDirectory(paychex_folder);
filepath = paychex_folder + _fileName + ".csv";
File.WriteAllText(filepath, sb.ToString());
}
【问题讨论】:
-
您是否考虑过导出为 .XLS 或 .XLSX 而不是 .CSV?使用这种技术,您不仅可以导出数据,还可以对其进行格式化。
-
创建一个真实 Excel (XLSX) 文件而不是CSV。它实际上比创建 CSV 简单得多,并且生成的文件更小,因为它是压缩的。只需使用像 EPPlus 这样的库,它直接使用 Open XML 生成 XLSX 文件。就像
sheet.LoadFromCollection(_obj_distinct_company);EPPlus 使用正确的数据类型和格式一样简单,因此您不必担心日期和数字格式 -
这是要求,希望它仅适用于 csv。已经可以选择导出为 excel
标签: c# excel csv export-to-csv