import java.io.File;import jxl.CellView;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.format.*;
public class JxlSeniorOper { private Workbook book;
private WritableWorkbook wbook;
private WritableSheet wsheet;
private static final String EXCEL_PATH = "d:/excel/senior_oper.xls";
public static void main(String[] args) {
JxlSeniorOper oper = new JxlSeniorOper();
oper.doNumberFormat();

}
/**
 * 数据格式化
 * 包括字符串字体、字号、粗细等,数字的显示格式
 */
public void doNumberFormat() {

String contents = "this is a test!";

try {
wbook = Workbook.createWorkbook(new File(EXCEL_PATH));
wsheet = wbook.createSheet("sheet1", 0);

CellView view = new CellView();
view.setAutosize(true);
view.setSize(800);
wsheet.setRowView(0, view);
view.setSize(100000);
wsheet.setColumnView(0, view);

WritableFont wfont = new WritableFont(WritableFont.TIMES, 
  12, 
  WritableFont.NO_BOLD, 
  true,
  UnderlineStyle.NO_UNDERLINE, 
  Colour.RED, 
  ScriptStyle.NORMAL_SCRIPT);

WritableCellFormat wcf = new WritableCellFormat(wfont);
wcf.setAlignment(Alignment.CENTRE);
wcf.setVerticalAlignment(VerticalAlignment.CENTRE);
Label label = new Label(0, 0, contents, wcf);
wsheet.addCell(label); wbook.write();
wbook.close();

} catch (Exception e1) {
System.out.println(e1.getMessage());
}

}}代码中标红部分,设置单元格的行高和列宽其中view.setAutosize(true);自动改变行高和列宽
不过,这个设置貌似对行高没有影响,只会影响列宽并且view.setSize(int num)还必须存在,否则,setAutosize不会发生作用
求高人解答,这个是jxl的bug,还是我的使用方法不对不胜感激。。
(第一次发帖,貌似好像没分当做技术交流吧)

解决方案 »

  1.   


    额,没有红色的啊那我补上。
    CellView view = new CellView();
    view.setAutosize(true);
    view.setSize(800);
    wsheet.setRowView(0, view);
    view.setSize(100000);
    wsheet.setColumnView(0, view);介个是不是用法的问题
      
      

  2.   

    jxl的demo里面CellView的用法是这样的,可以参考一下。  1368       WritableFont wf = new WritableFont(WritableFont.ARIAL, 12);
     1369       wf.setItalic(true);
     1370   
     1371       WritableCellFormat wcf = new WritableCellFormat(wf);
     1372   
     1373       CellView cv = new CellView();
     1374       cv.setSize(25 * 256);
     1375       cv.setFormat(wcf);
                //WritableSheet ws
     1376       ws.setColumnView(0, cv);
     1377       ws.setColumnView(1, 15);
      

  3.   


    其实这个跟我的写法一样啊,还是没办法自动设置行高、列宽啊还是只对设置列宽有效,对行高无任何作用
    API中是这样描述的:
    setSize(int d)
    d-the width of the column in characters multiplied by 256, or the height of the row in 1/20ths of a point.
    额谁给解决一下。。
      

  4.   

    excel实际列宽=d*256 ,excel实际行高=d/20