2009-12-02 12 views
6

Tôi đang sử dụng JExcelApi để tạo các tệp XLS. Từ jxl.format.Colour, tôi thấy cách lấy bất kỳ màu nào trong "bảng màu Excel chuẩn", nhưng không phải cách tạo màu mới (ví dụ, cho RGB).Tạo các màu mới trong JExcelApi

Nhưng trong Excel, tôi có thể chọn bất kỳ màu nào.

Tôi chỉ thiếu nó? Có cách nào trong JExcelApi để chọn một màu tùy ý? Tôi đang sử dụng một phương pháp đơn giản-gần-chuẩn-màu đơn giản ngay bây giờ, đó là OK nhưng không tuyệt vời.

Trả lời

3

Phiên bản Excel trước năm 2007 có bảng màu chuẩn và do API bạn đang sử dụng không hỗ trợ định dạng 2007, bạn có thể bị mắc kẹt với điều đó. Lý do bạn có thể chọn bất kỳ màu nào bạn muốn có lẽ là vì bạn đang sử dụng phiên bản Excel mới.

Xem this information on the Microsoft site.

Tôi không thấy cách bạn có thể ghi đè bảng màu tiêu chuẩn trong API bạn đang sử dụng, nhưng trong Apache POI (cũng cho phép bạn viết tệp Excel), bạn có thể: xem this link. Về cơ bản, những gì bạn cần làm là: gán một số màu tiêu chuẩn (màu xanh lá cây, vv) cho các tế bào của bạn; sau đó ghi đè các màu này với bất kỳ màu tùy chỉnh nào bạn cần.

+0

Đây là một khởi đầu tuyệt vời, cảm ơn. Tôi sẽ kiểm tra nguồn Apache POI để xem việc thay đổi bảng màu tiêu chuẩn có khó khăn không. – Ken

+0

Thật không may đây không phải là câu trả lời nhưng tôi không còn được phép đổi ý vì lý do nào đó - nếu bạn đang tìm kiếm giải pháp thực tế, hãy xem câu trả lời "Damien B" bên dưới (setColourRGB). – Ken

15

Cách để ghi đè lên một chỉ số bảng trong JExcel API là sử dụng phương pháp này [setColourRGB] [1] trên sổ làm việc có thể ghi. Ví dụ:

myWorkbook.setColourRGB(Colour.LIGHT_TURQUOISE2, 14, 67, 89); 

nếu bạn muốn thay đổi giá trị màu trong mục bảng màu có mặc định là màu xanh lam thứ hai. Hoặc, một cách dễ dàng hơn trong một số trường hợp, trực tiếp với chỉ số bảng:

myWorkbook.setColourRGB(Colour.getInternalColour(myPaletteIdx), 14, 67, 89); 

Một bản cập nhật nhỏ: chỉ các chỉ số 8-64 có thể được tùy chỉnh theo một lời nhận xét bên trong mã nguồn của jxl.biff.PaletteRecord.

[1]: http://jexcelapi.sourceforge.net/resources/javadocs/current/docs/jxl/write/WritableWorkbook.html#setColourRGB(jxl.format.Colour, int, int, int)

+0

Điều này có vẻ hoàn hảo! Cảm ơn! (Thật không may SO sẽ không cho phép tôi đánh dấu câu trả lời này là "đúng".) – Ken

+0

Bạn vẫn có thể có câu trả lời :-) Tôi đã thêm ghi chú: nếu chỉ mục được yêu cầu dưới 8, cuộc gọi đến setColourRGB được bỏ qua âm thầm. –

5
WritableCellFormat cellFormat = new WritableCellFormat(); 

Colour customColor = new Colour(10000, "1", 255, 0, 0){  
}; 

cellFormat.setBackground(customColor); 
writableCell.setCellFormat(cellFormat);