Hướng dẫn interop excel numberformat - định dạng số interop excel

Bỏ qua nội dung chính

Trình duyệt này không còn được hỗ trợ.

Nâng cấp lên Microsoft Edge để tận dụng các tính năng mới nhất, cập nhật bảo mật và hỗ trợ kỹ thuật.

CellFormat.NumberFormat Thuộc tính

  • Tài liệu tham khảo

Sự định nghĩa

Trong bài viết này

Trả về hoặc đặt mã định dạng cho đối tượng. Trả về null nếu tất cả các ô trong phạm vi được chỉ định không có cùng định dạng số.Null if all cells in the specified range don't have the same number format.

public:
 property System::Object ^ NumberFormat { System::Object ^ get[]; void set[System::Object ^ value]; };
public object NumberFormat { get; set; }
Public Property NumberFormat As Object

Giá trị tài sản

Sự vật

Nhận xét

Mã định dạng có cùng chuỗi với tùy chọn mã định dạng trong hộp thoại Định dạng ô. Hàm định dạng Visual Basic sử dụng các chuỗi mã định dạng khác nhau so với các thuộc tính NumberFormat và NumberFormatlocal.Format function uses different format code strings than do the NumberFormat and NumberFormatLocal properties.

Áp dụng cho

1 hữu ích 2 bình luận chia sẻ

Và nếu bạn muốn định dạng một cột cụ thể như cột "B" thành định dạng số, bạn có thể thực hiện theo cách này-

 rng = ws.get_Range["H" + 2, "S" + 2];
 rng.NumberFormat = numberFormat;

0 hữu ích 0 bình luận chia sẻ

Đăng nhập để trả lời câu hỏi

Tôi có một trang tính Excel được tạo bằng Epplus, tôi đang gặp một số điểm khó khăn và tôi muốn được hướng dẫn bởi một người đã giải quyết một thử thách tương tự.

Tôi cần áp dụng định dạng số cho một giá trị kép và tôi muốn trình bày nó trong Excel như thế này.

  • 8 → 8.0
  • 12 → 12.0
  • 14,54 → 14,5
  • 0 → 0,0

Đây là mã của tôi

ws.Cells[row, col].Style.Numberformat.Format = "##0.0";

Tệp Excel cuối cùng luôn thêm E + 0 vào cuối định dạng này và do đó thay vào đó trình bày các giá trị cuối cùng như thế này.

  • 8 → 8.0E + 0
  • 12 → 12.0E + 0
  • 14,54 → 14,5E + 0
  • 0 → 000.0E + 0

Khi tôi kiểm tra các ô định dạng của trang tính Excel đã tạo, tôi thấy rằng định dạng của tôi xuất hiện ##0.0E+2thay vì định dạng

public object NumberFormat { get; set; }
0tôi đã áp dụng.

Điều gì có thể sai?

  • c#
  • asp.net
  • .net
  • excel
  • epplus

75 hữu ích 1 bình luận 85k xem chia sẻ 1 bình luận 85k xem chia sẻ

answer

164

Dưới đây là một số tùy chọn định dạng số cho EPPlus:

//integer [not really needed unless you need to round numbers, Excel will use default cell properties]
ws.Cells["A1:A25"].Style.Numberformat.Format = "0";

//integer without displaying the number 0 in the cell
ws.Cells["A1:A25"].Style.Numberformat.Format = "#";

//number with 1 decimal place
ws.Cells["A1:A25"].Style.Numberformat.Format = "0.0";

//number with 2 decimal places
ws.Cells["A1:A25"].Style.Numberformat.Format = "0.00";

//number with 2 decimal places and thousand separator
ws.Cells["A1:A25"].Style.Numberformat.Format = "#,##0.00";

//number with 2 decimal places and thousand separator and money symbol
ws.Cells["A1:A25"].Style.Numberformat.Format = "€#,##0.00";

//percentage [1 = 100%, 0.01 = 1%]
ws.Cells["A1:A25"].Style.Numberformat.Format = "0%";

//accounting number format
ws.Cells["A1:A25"].Style.Numberformat.Format = "_-$* #,##0.00_-;-$* #,##0.00_-;_-$* \"-\"??_-;_-@_-";

Không thay đổi dấu phân cách thập phân và nghìn thành bản địa hóa của riêng bạn. Excel sẽ làm điều đó cho bạn.

Bằng cách yêu cầu một số tùy chọn định dạng DateTime.

//default DateTime pattern
worksheet.Cells["A1:A25"].Style.Numberformat.Format = DateTimeFormatInfo.CurrentInfo.ShortDatePattern;

//custom DateTime pattern
worksheet.Cells["A1:A25"].Style.Numberformat.Format = "dd-MM-yyyy HH:mm";

164 hữu ích 5 bình luận chia sẻ 5 bình luận chia sẻ

answer

2

Bổ sung vào Câu trả lời được Chấp nhận, vì giá trị Chấp nhận Đối tượng, bạn phải chuyển Số thành Giá trị Ví dụ nếu đầu vào của bạn ở dạng chuỗi:

var input = "5";    
ws.Cells["A1:A25"].Value = double.Parse[input];

2 hữu ích 0 bình luận chia sẻ 0 bình luận chia sẻ

answer

1

Một bổ sung khác cho câu trả lời được chấp nhận: bạn có thể sử dụng các giá trị nullable và tất cả định dạng đều có vẻ tốt NHƯNG nó kết thúc là một chuỗi trong Excel và bạn không thể SUM, AVG, v.v.

Vì vậy, hãy chắc chắn rằng bạn sử dụng thực tế

public object NumberFormat { get; set; }
1của nullable.

1 hữu ích 2 bình luận chia sẻ 2 bình luận chia sẻ

answer

0

Và nếu bạn muốn định dạng một cột cụ thể như cột "B" thành định dạng số, bạn có thể thực hiện theo cách này-

using [var package = new ExcelPackage[]]
{
  var worksheet = package.Workbook.Worksheets.Add["SHEET1"];
  worksheet.Cells["A1"].LoadFromDataTable[dataTable, PrintHeaders: true];
  for [var col = 1; col < dataTable.Columns.Count + 1; col++]
  {
    if [col == 2]//col number 2 is equivalent to column B
    {
      worksheet.Column[col].Style.Numberformat.Format = "#";//apply the number formatting you need
    }
    worksheet.Column[col].AutoFit[];
  }
  return File[package.GetAsByteArray[], XlsxContentType, "report.xlsx"];//downloads file
}

0 hữu ích 0 bình luận chia sẻ 0 bình luận chia sẻ

Đăng nhập để trả lời câu hỏi

Có thể bạn quan tâm

Bài Viết Liên Quan

Chủ Đề