2012-05-23 61 views
6

Tôi hiện đang viết một ứng dụng (C#) để tạo báo cáo trong một tệp excel, dựa trên các báo cáo khác.Làm cách nào để thay đổi định dạng văn bản của một ô Excel bằng C#?

Vấn đề là, khi nhận được một số từ một trang tính nhất định và sao chép sang một số khác, ô đích không được định dạng chính xác và số không hiển thị chính xác.

E.g : 
Number from source : 14.34 
Number on destination : 14.345661 

Làm cách nào để định dạng ô đích để bắt buộc số tạo thành giống với ô nguồn.

Cảm ơn!

+0

ví dụ khác nhau ở đây "# ##.": Https://support.office.com/ vi/chúng tôi/bài viết/Tạo-hoặc-xóa-một-tùy-số-định dạng-2d450d95-2630-43b8-bf06-ccee7cbe6864? ui = vi-US & rs = vi-US & ad = US –

Trả lời

4

Định dạng của ô/dải ô đã cho có thể được đặt qua mã.

public void SetCustomFormat(string format, int r, int c) 
{ 
    ((Excel.Range)xlWks.Cells[r, c]).NumberFormat = format; 
} 

Trong trường hợp cụ thể của bạn, tôi tin rằng bạn sẽ cần phải sử dụng định dạng "# .00" hoặc

+0

Tôi sẽ thử. –

+0

Không thể thấy để tìm biến xlWks này. Đây có phải là Bảng tính không? –

+0

Vâng, đó là biến bảng tính. Tôi có nó được định nghĩa trong nội bộ mã của riêng tôi bằng cách sử dụng biến xlWks. – Nevyn

3

Đây là đoạn trích từ một số mã tôi đã sử dụng, để hiển thị cho bạn mẫu chung cho các ô định dạng. Rõ ràng, có một số biến được khai báo, nhưng nó sẽ cho bạn thấy những gì bạn cần.

sheet.get_Range("A" + CurrentRowIndex.ToString(), ColPrefix + CurrentRowIndex.ToString()).Font.Bold = true; 
sheet.get_Range("A" + CurrentRowIndex.ToString(), ColPrefix + CurrentRowIndex.ToString()).Interior.Color = Color.Silver.ToArgb(); 
sheet.get_Range("A" + CurrentRowIndex.ToString(), ColPrefix + CurrentRowIndex.ToString()).BorderAround(Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous, Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin, Microsoft.Office.Interop.Excel.XlColorIndex.xlColorIndexAutomatic, null); 
sheet.get_Range("A" + CompetencyStartRowIndex.ToString(), ColPrefix + CurrentRowIndex.ToString()).BorderAround(Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous, Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin, Microsoft.Office.Interop.Excel.XlColorIndex.xlColorIndexAutomatic, null); 

Đó dòng đầu tiên, giả sử CurrentRowIndex = 1 và ColPrefix = "B", thay thế các biến với các giá trị kết quả sẽ chuyển thành

sheet.get_Range("A1", "B1").Font.Bold = true; 

Dù sao đi nữa, bạn muốn thiết lập các NumberFormat. (Đến ..)

sheet.Cells[Row, Column].NumberFormat = "0.00" 
+0

Cảm ơn sự giúp đỡ, nhưng đây là không phải những gì tôi đang tìm kiếm. Tôi đang tìm cách định dạng văn bản bên trong ô, chứ không phải chính ô giống như nền hoặc định dạng phông chữ. Tôi muốn văn bản được diễn giải theo cách khác –

+0

Dòng cuối cùng trong câu trả lời của tôi dường như trả lời những gì bạn đang tìm kiếm. Có lẽ tôi nên xóa phần còn lại, vì nó không liên quan. Đôi khi tôi ngu ngốc cố gắng hoàn thành khi tôi nên súc tích. ;-) – David

+0

Có, dòng cuối cùng giải quyết được vấn đề của tôi. Cảm ơn: D –

Các vấn đề liên quan