在实际应用中,常常会遇到单元格的值比较长而被遮住,用户不得不手动调整宽度,如果能通过程序就自动调整宽度就会很方便了。实际上在通过OleView.exe这个工具查询得知Range有AutoFit的方法,它的Id是0x000000ed,那么如果获得了Range的引用,只要调用AutoFit这个方法,就可以自动调整宽度了。下面请看代码与示例效果:

packagecom.jrkui.example.excel;

importorg.eclipse.swt.SWT;

importorg.eclipse.swt.layout.FillLayout;

importorg.eclipse.swt.ole.win32.OLE;

importorg.eclipse.swt.ole.win32.OleAutomation;

importorg.eclipse.swt.ole.win32.OleClientSite;

importorg.eclipse.swt.ole.win32.OleFrame;

importorg.eclipse.swt.ole.win32.Variant;

importorg.eclipse.swt.widgets.Display;

importorg.eclipse.swt.widgets.Shell;

publicclassAutofitShell {

publicstaticvoidmain(String[] args) {

newAutofitShell().open();

}

publicvoidopen()

{

Display display = Display.getDefault();

Shell shell =newShell();

shell.setText("Auto Fit");

shell.setSize(700, 300);

shell.setLayout(newFillLayout());

createExcelPart(shell);

shell.open();

while(!shell.isDisposed())

if(!display.readAndDispatch())

display.sleep();

display.dispose();

}

privatestaticfinalintSHEET_ID= 0x000001e5;

privatestaticfinalintCELL_ID= 0x000000c5;

privatestaticfinalintCELL_VALUE_ID= 0x00000006;

privatevoidcreateExcelPart(Shell shell)

{

OleFrame frame =newOleFrame(shell,SWT.NONE);

OleClientSite clientSite =newOleClientSite(frame,SWT.NONE,"Excel.Sheet");

clientSite.doVerb(OLE.OLEIVERB_SHOW);

OleAutomation workbook =newOleAutomation(clientSite);

OleAutomation worksheet = workbook.getProperty(SHEET_ID,newVariant[]{newVariant(1)}).getAutomation();

OleAutomation cellA3 = worksheet.getProperty(CELL_ID,newVariant[]{newVariant("A3")}).getAutomation();

cellA3.setProperty(CELL_VALUE_ID,newVariant("if you don't fit the width of the cell, you couldn't see all."));

autoFitWidth(cellA3);

//      autoFitWidth(getColumnOfCell(cellA3));

}

publicstaticfinalintAUTO_FIT_RANGE= 0x000000ed;

/**

*自适应宽度

*@paramautomation

*/

privatevoidautoFitWidth(OleAutomation automation)

{

//如果使用automation.getProperty(AUTO_FIT_RANGE)也是同样的效果

automation.invoke(AUTO_FIT_RANGE);

}

publicstaticfinalintCOLUMN_OF_CELL= 0x000000f6;

/**

*获得单元格所在的列

*@paramcell

*@return

*/

privateOleAutomation getColumnOfCell(OleAutomation cell)

{

returncell.getProperty(COLUMN_OF_CELL).getAutomation();

}

}

运行效果(自动调整A3单元格的宽度):

运行效果(去掉createExcelPart()方法中的autoFitWidth(getColumnOfCell(cellA3));的注释,自动调整A3单元格所在列的列宽)

说明:

调整列宽在本例中是通过autoFitWidth(OleAutomation automation)方法

在autoFitWidth(OleAutomation automation)中调用了OleAutomation的invoke()方法,参数是所代表ole对象的方法的id,意思是调用该方法,用  automation.getProperty(AUTO_FIT_RANGE)也是同样的效果

autoFitWidth(OleAutomation automation)的参数是一个Range对象,可以是一个单元格,也可以是一个单元格的区域,在本例中示范了两种效果(单元格、列)

获得一个单元格区域的的所在列的方法在Range中是Range* EntireColumn(),其id是0x000000f6

linux调整列显示宽度,使单元格或列自动调整宽度 - 在SWT中使用OLE操纵Excel_Linux编程_Linux公社-Linux系统门户网站...相关推荐

  1. 使用poi调整字体格式、添加单元格注释、自动调整列宽

    1 创建新的工作铺 import java.io.FileOutputStream;import org.apache.poi.hssf.usermodel.HSSFCell; import org. ...

  2. 显示驱动包含在Linux内核层,驱动程序层(上) - Linux内核--网络栈实现分析_Linux编程_Linux公社-Linux系统门户网站...

    经过前面两篇博文的分析,已经对Linux的内核网络栈的结构有了一个模糊的认识,这里我们开始从底层开始详细分析Linux内核网络栈的实现.由于这是早期版本,代码的层次隔离做的还不是很好,这里说是从底层分 ...

  3. linux通过信号回调函数,信号机制的管理结构 - Linux内核中的信号机制_Linux编程_Linux公社-Linux系统门户网站...

    信号只是一个数字,数字为0-31表示不同的信号,如下表所示. 编号 信号名 默认动作 说明 1 SIGHUP 进程终止 终端断开连接 2 SIGINT 进程终止 用户在键盘上按下CTRL+C 3 SI ...

  4. linux车机系统怎么进工厂模式,工厂方法模式 - 跟JBPM学习设计模式_Linux编程_Linux公社-Linux系统门户网站...

    模式简介 工厂方法模式,定义一个用于创建对象的接口,让子类决定实例化那个类,其使一个类的实例化延迟到其子类中. 前边我们学习了简单工厂模式,简单工厂模式的最大优势在于工厂类中包含了必要逻辑判断,根据客 ...

  5. 嵌入式linux编程,嵌入式Linux学习笔记 - 嵌入式Linux基础知识和开发环境的构建_Linux编程_Linux公社-Linux系统门户网站...

    注:所有内容基于友善之臂Mini2440开发板 一.嵌入式Linux开发环境的构建 嵌入式开发一般分为三个步骤: 1.编译bootloader,烧到开发板 2.编译嵌入式Linux内核,烧到开发板 3 ...

  6. s5pv210 linux内核移植,简单根文件系统制作 - S5PV210 Linux3.8.3内核移植_Linux编程_Linux公社-Linux系统门户网站...

    1.这里为什么选nfs文件系统呢? 在产品开发阶段,因为nfs根文件系统并不需要编译进内核,方便调试. 2.制作根文件系统需要用到BusyBox 解压进入busybox目录: root@linuxid ...

  7. 给linux内核传递数组,数组与指针 - Linux C编程实战之路_Linux编程_Linux公社-Linux系统门户网站...

    谈到C语言编程,数组和指针是很多人的心头大石,总觉得它们是重点难点,重点是没错的,但绝不是什么难点,要说C语言的难点,客观地讲应该是带参宏,而数组和指针,概念浅显易懂,操作简洁方便,根本不是很多初学者 ...

  8. android 编译 sdl,SDL编译 - Android本地视频播放器开发_Linux编程_Linux公社-Linux系统门户网站...

    在上一章  Android本地视频播放器开发--ffmpeg解码视频文件中的音频(2)[http://www.linuxidc.com/Linux/2013-06/85955p5.htm]中使用Ope ...

  9. linux在开发板LCD上显,W35型LCD驱动移植 - linux-2.6.32在mini2440开发板上移植_Linux编程_Linux公社-Linux系统门户网站...

    编者注:本移植主要步骤还是按照手册来,里面讲解了一些有用的基础知识.但书册上提供了集中屏幕的方案,我们这里主要就用一种,也就是开发板自带的W35型号.液晶驱动的源程序在src/drivers/vide ...

  10. linux内核添加usb键盘驱动,配置USB外设 - linux-2.6.32在mini2440开发板上移植_Linux编程_Linux公社-Linux系统门户网站...

    linux-2.6.32在mini2440开发板上移植 配置USB外设 [日期:2013-04-08] 来源:Linux社区 作者:ssdsafsdsd [字体:大 中 小] 编者:因为LINUX内核 ...

最新文章

  1. 用 Python 写一个天天酷跑,在线摸鱼不烦恼
  2. RANSAC算法原理与实现
  3. WSS 3.0 在默认的情况下不存在IRM的protector.
  4. MM模块操作流程及相关建议代码
  5. Scala2.11.7学习笔记(二)函数定义
  6. 前魅族李楠创办“怒喵科技”,网友:看半天不知道公司干嘛的
  7. JSON.toJSONString 首字母不小写
  8. 液晶电视发出“嘭”的一声,然后就无法开机了,是什么原因,好不好修?
  9. qpython3 获取手机gps接口
  10. VC++ excel 写入与写出数据
  11. 苹果手机直播怎么投屏 苹果手机投影电脑屏幕
  12. js layui跳转页面_Layui数据表格跳转到指定页的实现方法
  13. 虚拟服务器IP地址创建,虚拟服务器的ip地址
  14. write字符串python_Python-write()与writelines()和连接字符串
  15. 教学目标四个维度_基于物理学科核心素养的教学设计
  16. 【190319】VC++ C/S结构视频聊天软件源码源代码
  17. 带桌面推送Ai智能客服系统在线客服源码
  18. Hi,这有一份风控体系建设干货
  19. ios应用相关的性能优化及参考文档
  20. 商业模式到底是什么?(转载)

热门文章

  1. Android 贝塞尔曲线的魅力
  2. 计算机公共基础知识论文,公共基础知识学术论文.docx
  3. 【专家视点】公域流量的尽头:数字营销回归商业本质(20页精品PPT下载)
  4. 下厨房(istringstream的使用)----网易2017内推笔试编程题合集
  5. Python经典编程习题100例:第56例:画图,学用circle画圆形
  6. Object Tracking Benchmark
  7. 红米note3全网通(kenzo)非官方解锁
  8. 笔记本安装系统不认硬盘?
  9. 2021年4月4日腾讯笔试
  10. 世界上都有哪些常用的聊天软件?