`
guhanjie
  • 浏览: 301002 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

jxl自动设置列宽

 
阅读更多
网上看到有这样的说法:
jxl中有自动设置行高的方法,jxl的API中有这样的方法:
引用
setRowView
void setRowView(int row,
                boolean collapsed)
                throws jxl.write.biff.RowsExceededExceptionSets the properties of the specified row

Parameters:
row - the row to be formatted
collapsed - indicates whether the row is collapsed
Throws:
jxl.write.biff.RowsExceededException

setRowView
void setRowView(int row,
                CellView view)
                throws jxl.write.biff.RowsExceededExceptionSets the view for this column

Parameters:
row - the column on which to set the view
view - the view to set
Throws:
jxl.write.biff.RowsExceededException


我们只需要如下调用即可将行高自动根据字体大小进行调整:
... ...
//设置字体为Arial,30号,加粗
WritableFont font = new  WritableFont(WritableFont.ARIAL, 30 ,WritableFont.BOLD);
				WritableCellFormat format = new  WritableCellFormat(font);
				//第一行第一列
				jxl.write.Label label = new jxl.write.Label(0, 0, "Hello", format);
				sheet.addCell(label);
sheet.setRowView(0,false);//第0行,行高自动扩展   
... ... 



但是,我测试发现这绝对是谬论,该方法实际效果是:设置行高为409.5,并设置为隐藏,即将该行隐藏,而且这个方法貌似有bug,第二个参数无论你设置true还是false,实际效果都隐藏该行。


但是,jxl中并没有提供类似setRowView(int row, boolean collapsed)的自动设置列宽的方法
但是,我们可以通过它的其他API来实现这样的效果:
方法一:
jxl的API中有这样的方法:
引用
setColumnView
void setColumnView(int col,
                   CellView view)Sets the view for this column

Parameters:
col - the column on which to set the view
view - the view to set


而在API中查找到CellView 有这个方法:

引用
setAutosize
public void setAutosize(boolean a)Sets the autosize flag. Currently, this only works for column views

Parameters:
a - autosize


于是,我试着这样用:
... ...
//设置字体为Arial,30号,加粗
CellView cellView = new CellView();
cellView.setAutosize(true); //设置自动大小
sheet.setColumnView(1, cellView);//根据内容自动设置列宽
label = new Label(1, 0, "zzzzzzzzzzzzzzzzzzzzzz");
sheet.addCell(label);
... ... 

发现效果确实是实现了自动调整列宽。

方法二:
jxl的API中有与上面同名的方法:
引用
setColumnView
void setColumnView(int col,
                   int width)Sets the width of the column on this sheet, in characters. This causes Excel to resize

the entire column. If the columns specified already has view information associated with it, then it is replaced by

the new data

Parameters:
col - the column to be formatted
width - the width of the column

方法的第二个参数就是自己设置列宽
因此,我们可以先计算我们写入的字符串的长度,然后以这个长度作为列宽来设置,同样达到自动调整列宽的效果!
jxl中列宽值是以字符来算的,也就是列宽为1,则是一个字符的长度

于是,我试着这样用:
... ...
//设置字体为Arial,30号,加粗
label = new Label(1, 0, "zzzzzzzzzzzzzzzzzzzzzz");
sheet.addCell(label);
sheet.setColumnView(1, new String("zzzzzzzzzzzzzzzzzzzzzz").length());
... ... 

发现效果同样实现了自动调整列宽。
分享到:
评论
6 楼 zzulb1234 2017-08-03  
安静听歌 写道
请问那个自动隐藏的BUG应该怎样解决呢,如果有这个bug,那么sheet.setRowView(rowsNum,cellView);  这个自动设置行高就不能用了

不是bug Excel行高10的话这里要设置200
5 楼 安静听歌 2016-06-20  
请问那个自动隐藏的BUG应该怎样解决呢,如果有这个bug,那么sheet.setRowView(rowsNum,cellView);  这个自动设置行高就不能用了
4 楼 一碗单炒饭 2015-11-10  
不错,谢谢
3 楼 minyongcheng 2015-11-10  
sheet.setColumnView(1, new String("zzzzzzzzzzzzzzzzzzzzzz").length());
汉字的话,然并卵
2 楼 cuqing 2015-07-02  
setColumnView
void setColumnView(int col,
                   CellView view)Sets the view for this column
上述方法调用得比较多吧
1 楼 Lixh1986 2013-04-09  
“jxl中有自动设置行高的方法”

“发现效果确实是实现了自动调整列宽。”

相关推荐

    Java使用jxl包写Excel文件适合列宽实现

    jxl是Java的一个开源库,用于创建和修改Microsoft Excel文件,但遗憾的是它本身并不提供自动调整列宽以适应内容的功能。为了在使用jxl库写入Excel文件时实现列宽自适应,我们不得不手动计算每列的数据长度,并据此...

    java jxl创建Excel

    在本例中,我们将探讨如何使用JXL库来创建一个Excel文件,并对其进行各种定制,如合并单元格、设置列和单元格的属性,包括字体、宽度、高度、边框样式、背景颜色、自动换行以及对齐方式。 首先,我们需要引入JXL库...

    通过java操作excel表格的工具类库jxl

     //设置自动换行  format1.setWrap(true);  二、单元格操作  Excel中很重要的一部分是对单元格的操作,比如行高、列宽、单元格合并等,所幸jExcelAPI提供了这些支持。这些操作相对比较简单,下面只介绍一下相关...

    数据导入导出xls(jxl)

    3. **写入数据**:在创建了工作表后,我们可以使用Sheet类的setColumnWidth()方法设置列宽,然后通过Cell类和Row类的构造函数创建单元格和行。接着,使用Cell的setCellValue()方法写入文本、数字或日期等数据。 4. ...

    利用jxl实现excel解析

    总结来说,"利用jxl实现excel解析"涉及的关键知识点包括:jxl库的使用、Excel文件的读取与写入、工作簿和工作表的操作、单元格的访问与样式设置,以及数据处理逻辑的实现。掌握这些技能对于进行Java中的Excel操作至...

    jxl读写excel常见操作搜集整理

    - **行高和列宽**:可以调整行高和列宽以适应数据。 - **条件格式化**:通过`ConditionalFormat`类实现基于特定条件的格式化。 在实际应用中,根据需求,可以结合这些方法和类构建更复杂的Excel处理逻辑。`jxl`库...

    Excel数据操纵-jar包-jxl.jar

     //设置自动换行  format1.setWrap(true);  二、单元格操作  Excel中很重要的一部分是对单元格的操作,比如行高、列宽、单元格合并等,所幸jExcelAPI提供了这些支持。这些操作相对比较简单,下面只介绍一下...

    Desktop.rar

    其他操作,如设置列宽、行高、数据等 workbook.write(); workbook.close(); } } ``` 而`test.java`文件可能是测试`JxlExcel`类的驱动程序,用于调用`createExcel`方法并验证导出功能是否正常工作。一个简单的...

    jxl 导出数据到excel的实例讲解

    创建`WritableSheet`表示工作表,然后设置单元格的宽度和自动大小。接着,可以通过`CellView`和`setColumnView`方法调整列宽,确保数据能正确显示。最后,将数据逐行写入工作表,并关闭工作簿。 **总结** 虽然`jxl`...

    java对于excel的操作

    Excel 是一种广泛应用于办公自动化的电子表格软件,而 Java 是一种广泛应用于开发企业级应用程序的编程语言。因此,学习 Java 对于 Excel 的操作是非常重要的。 在 Java 中,对于 Excel 的操作可以使用多种库,包括...

    程序员实习总结.doc

    这种模式易于理解和使用,同时提供了强大的界面校验功能,如Numberfield组件自动防止非数字输入。 4. **组件功能的多样性**: - Grid组件尤其强大,支持多种交互功能,如单选、多选、行排序、列宽调整、行号生成、...

Global site tag (gtag.js) - Google Analytics