使用JAVA操作Excel通常都使用JXL,方法很簡單網上也有很多的教程,然后往往一些細節性的問題卻導致我們這些Programmer苦惱不已。這兩天幫一個朋友做一個Excel表格自動生成的小軟件,就遇到的類似的問題。
問題描述:通過Java向Excel的一個單元格中寫入大量的文字,即使在文字中使用 \n 符號進行換行操作,當打開Excel表格的時候,發現文字不能按照我們預先設定的方法換行,而是顯示在一行里面,導致整個Excel表格顯示都亂掉了。必須得通過鼠標單擊一下這個單元格文字才能按照單元格的寬度和程序中的換行命令實現換行的顯示效果。
這就很不爽了,每次我打開Excel的時候,還要把文字多的單元格全部用鼠標單擊一下,才能按照我程序設定的顯示方式顯示。
不過,后來仔細想一下,其實就是需要文字按照單元格設定的寬度/高度顯示文本就行了,API中應該有相應的方法來實現的,只是我沒找到而已。功夫不負有心人,在Google的幫助下,終於在百花叢中發現了她。
WritableFont fontTitle = new WritableFont(WritableFont.TIMES, 9, WritableFont.NO_BOLD); fontTitle.setColour(jxl.format.Colour.RED); WritableCellFormat formatTitle = new WritableCellFormat(fontTitle); formatTitle.setWrap(true); /*-------------------------------------------------------------------------*/ WritableSheet m_sheet = null; m_sheet = m_writeBook.createSheet("第一頁", 0); m_sheet.setColumnView(0, 10); m_sheet.setRowView(0, 500); Label label = new Label(0, 0, "阿科是個不錯的小伙子阿科是個不錯" + "的小伙子阿科是個不錯的小伙子", format); //將定義好的單元格添加到工作表中 m_sheet.addCell(label);
如上例當中,雖然列寬設置的僅僅是10,而文字的長度遠遠的超過10,但是由於使用WritableCellFormat的設置選項: formatTitle.setWrap(true)。從而使得單元格的文字按照單元格的列寬來自動換行顯示。
有問題,歡迎郵件討論:qinpanke@gmail.com
阿科
2013年8月31日於北京郵電大學新科研樓302室