使用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室