Tôi xuất một DataTable sang tệp Excel bằng cách sử dụng văn phòng interop. Vấn đề là, Excel không nhận ra ngày như vậy, nhưng thay vào đó nó hiển thị số. Trong trường hợp khác, tôi chuyển một chuỗi mà sau đó nó nhận ra là một ngày. Trong cả hai trường hợp, dữ liệu bị sai lệch.Cách tạo định dạng ngày chính xác khi ghi dữ liệu vào Excel
Tôi đã thử NumberFormat @ được cho là lưu trữ ô ở định dạng văn bản nhưng cũng không hoạt động.
Application app = new Application();
app.Visible = false;
app.ScreenUpdating = false;
app.DisplayAlerts = false;
app.EnableAnimations = false;
app.EnableAutoComplete = false;
app.EnableSound = false;
app.EnableTipWizard = false;
app.ErrorCheckingOptions.BackgroundChecking = false;
Workbook wb = app.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);
Worksheet ws = (Worksheet)wb.Worksheets[1];
for (int j = 0; j < dt.Rows.Count; j++)
{
for (int i = 0; i < dt.Columns.Count; i++)
{
Range rng = ws.Cells[j+2, i+1]as Range;
rng.Value2 = dt.Rows[j][i].ToString();
rng.NumberFormat = "@";
}
}
wb.SaveAs(filename, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
Missing.Value, XlSaveAsAccessMode.xlExclusive, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
wb.Close(false, Missing.Value, Missing.Value);
app.Workbooks.Close();
app.Application.Quit();
app.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(ws);
System.Runtime.InteropServices.Marshal.ReleaseComObject(wb);
System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
ws = null;
wb = null;
app = null;
GC.Collect();
Tại sao NumberFormat của tôi không hoạt động? Textformat có nên hiển thị mọi thứ giống như tôi đặt nó không?
Định dạng từng ô riêng biệt sẽ không khác nhau. Làm thế nào tôi có thể định dạng chính xác mọi thứ dưới dạng văn bản? – codymanix
Nếu bạn muốn Excel coi cột đó là cột ngày tháng, nó thực sự phải có định dạng ngày, nếu không thì những điều kỳ lạ sẽ xảy ra mà bạn đã trải qua. Tuy nhiên, bạn có thể tham khảo bản chỉnh sửa mới nhất của tôi để có cách giải quyết khác có thể. – dcp