如何使用jxl api自動調整單元格中的內容?JXL單元格格式化
回答
從JExcelApi的FAQ
我該怎麼做Excel的 「格式/列/自動調整選擇」 的equivilent?
沒有API函數可以爲您做到這一點。您需要編寫代碼掃描每列中的單元格,計算最大長度,然後相應地調用setColumnView()。這會讓你接近Excel的功能,但不完全一樣。由於大多數字體具有可變寬度字符,要獲得完全相同的值,您需要使用FontMetrics來計算列中每個字符串的最大寬度。沒有人發佈過關於如何執行此操作的代碼。隨意將代碼發佈到Yahoo!組或直接發送到本頁底部列出的常見問題解答作者。
FontMetrics推測是指java.awt.FontMetrics。你應該可以用getLineMetrics(String,Graphics)方法解決問題。
我知道這是一個古老的問題在這一點上,但我一直在尋找解決方案,並認爲我會張貼它,以防其他人需要它。
我不知道爲什麼FAQ沒有提到這一點,因爲它很清楚的文檔存在。
我的代碼看起來像下面這樣:
for(int x=0;x<c;x++)
{
cell=sheet.getColumnView(x);
cell.setAutosize(true);
sheet.setColumnView(x, cell);
}
c
商店列數創建
細胞僅僅是返回CellView
對象
片臨時佔位符是我WriteableSheet
對象
Api警告說這是一個處理器密集型功能,所以它可能不適合大文件。但對於像我這樣的小文件(< 100行),它沒有花費很多時間。
希望這可以幫助別人。
CellView的自動調整方法不爲我工作的所有時間。我這樣做的方式是通過編程設置的列的大小(寬度)的基礎上的數據列中的最高長度。然後執行一些數學運算。
CellView cv = excelSheet.getColumnView(0);
cv.setSize((highest + ((highest/2) + (highest/4))) * 256);
其中highest
是一個int,它保存列中數據的最長長度。
for(int x=0;x<c;x++)
{
cell=sheet.getColumnView(x);
cell.setAutosize(true);
sheet.setColumnView(x, cell);
}
這很好,而不是掃描所有的列。將列作爲參數傳遞。
void display(column)
{
Cell = sheet.getColumnView(column);
cell.setAutosize(true);
sheet.setColumnView(column, cell);
}
所以,當你將顯示你的文字,你可以設置特定的長度。可以是有益的巨大的Excel文件。如果您的電池有超過255個字符
setAutosize()方法將不起作用。這與Excel 2003最大列寬規範相關:http://office.microsoft.com/en-us/excel-help/excel-specifications-and-limits-HP005199291.aspx
您需要編寫自己的autosize方法來處理這種情況。
的方法是自我解釋和評論:
private void sheetAutoFitColumns(WritableSheet sheet) {
for (int i = 0; i < sheet.getColumns(); i++) {
Cell[] cells = sheet.getColumn(i);
int longestStrLen = -1;
if (cells.length == 0)
continue;
/* Find the widest cell in the column. */
for (int j = 0; j < cells.length; j++) {
if (cells[j].getContents().length() > longestStrLen) {
String str = cells[j].getContents();
if (str == null || str.isEmpty())
continue;
longestStrLen = str.trim().length();
}
}
/* If not found, skip the column. */
if (longestStrLen == -1)
continue;
/* If wider than the max width, crop width */
if (longestStrLen > 255)
longestStrLen = 255;
CellView cv = sheet.getColumnView(i);
cv.setSize(longestStrLen * 256 + 100); /* Every character is 256 units wide, so scale it. */
sheet.setColumnView(i, cv);
}
}
試試這個爲例:
expandColumns(sheet, 3);
workbook.write();
workbook.close();
private void expandColumn(WritableSheet sheet, int amountOfColumns){
int c = amountOfColumns;
for(int x=0;x<c;x++)
{
CellView cell = sheet.getColumnView(x);
cell.setAutosize(true);
sheet.setColumnView(x, cell);
}
}
- 1. Jxl和格式化單元格的最大數目
- 2. Excel使用JXL格式化
- 3. microsoft.interop.excel格式化單元格
- 4. Excel格式化單元格
- 5. JXL數字格式和單元格類型
- 6. 爲java指定使用jxl的WritableHyperlink的單元格格式
- 7. 更改JXL單元格的maxFractionDigit
- 8. 如果公式格式化單元格
- 9. 單元測試$格式化
- 10. 格式化excell單元
- 11. 以百分比格式化單元格
- 12. 在WPF DataGrid中格式化單元格
- 13. 在Datagridview中格式化單元格
- 14. 格式化Excel中的單元格
- 15. 格式化iPhone中的UITableView單元格
- 16. 單元格格式化 - horizontalAlignment
- 17. 宏來格式化單元格寬度
- 18. 在DataGridViewColumn中格式化單元格
- 19. excel表格中使用jxl的單元格的不同顏色
- 20. 單元格格式
- 21. 格式化Excel單元格(自定義格式)
- 22. 將單元格值格式化爲電話號碼格式
- 23. 在單元格內的公式中使用單元格名稱時單元格的條件格式化
- 24. 如何使用OpenXML SDK應用格式化(格式化的單元格值)來獲取單元格值
- 25. 垂直對齊格式爲表格單元格的文本以格式化爲表格單元格
- 26. 按條件格式化單個公式的許多單元格
- 27. 如何格式化除選定的單元格外的所有tableview單元格
- 28. Excel單元格格式
- 29. 單元格格式問題
- 30. SSRS單元格格式
大......這是工作... –
非常感謝你!你可以添加單元格的類型嗎?那是CellView? – sboda