JAVA操作Excel時文字自適應單元格的寬度設定方法
阿新 • • 發佈:2019-01-08
使用JAVA操作Excel通常都使用JXL,方法很簡單網上也有很多的教程,然後往往一些細節性的問題卻導致我們這些Programmer苦惱不已。這兩天幫一個朋友做一個Excel表格自動生成的小軟體,就遇到的類似的問題。
問題描述:通過Java向Excel的一個單元格中寫入大量的文字,即使在文字中使用 \n 符號進行換行操作,當開啟Excel表格的時候,發現文字不能按照我們預先設定的方法換行,而是顯示在一行裡面,導致整個Excel表格顯示都亂掉了。必須得通過滑鼠單擊一下這個單元格文字才能按照單元格的寬度和程式中的換行命令實現換行的顯示效果。
這就很不爽了,每次我開啟Excel的時候,還要把文字多的單元格全部用滑鼠單擊一下,才能按照我程式設定的顯示方式顯示。
不過,後來仔細想一下,其實就是需要文字按照單元格設定的寬度/高度顯示文字就行了,API中應該有相應的方法來實現的,只是我沒找到而已。功夫不負有心人,在Google的幫助下,終於在百花叢中發現了她。
如上例當中,雖然列寬設定的僅僅是10,而文字的長度遠遠的超過10,但是由於使用WritableCellFormat的設定選項: formatTitle.setWrap(true)。從而使得單元格的文字按照單元格的列寬來自動換行顯示。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);
有問題,歡迎郵件討論:[email protected]
阿科
2013年8月31日於北京郵電大學新科研樓302室