快速业务通道

在SWT中使用OLE操作Excel(三)——设置单元格背景色 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16

在SWT中使用OLE操作Excel(三)——设置单元格背景色

时间:2011-07-06

packagecom.jrkui.example.excel;

import org.eclipse.swt.SWT;import org.eclipse.swt.layout.FillLayout;import org.eclipse.swt.ole.win32.OLE;import org.eclipse.swt.ole.win32.OleAutomation;import org.eclipse.swt.ole.win32.OleClientSite;import org.eclipse.swt.ole.win32.OleFrame;import org.eclipse.swt.ole.win32.Variant;import org.eclipse.swt.widgets.Display;import org.eclipse.swt.widgets.Shell;public class ColorRangeShell {    public static void main(String[] args) {        new ColorRangeShell().open();    }    public void open()    {        Display display = Display.getDefault();        Shell shell = new Shell();        shell.setText("Color Range Shell");        shell.setSize(400, 300);        shell.setLayout(new FillLayout());        createExcelPart(shell);        shell.open();        while(!shell.isDisposed())            if(!display.readAndDispatch())                display.sleep();        display.dispose();    }    private static final int SHEET_ID = 0x000001e5;    private static final int CELL_ID =  0x000000c5;    private void createExcelPart(Shell shell)    {        OleFrame frame = new OleFrame(shell,SWT.NONE);        OleClientSite clientSite = new OleClientSite(frame,SWT.NONE,"Excel.Sheet");        clientSite.doVerb(OLE.OLEIVERB_SHOW);        OleAutomation workbook = new OleAutomation(clientSite);        OleAutomation worksheet = workbook.getProperty(SHEET_ID, new Variant[]{new Variant(1)}).getAutomation();        //获得单元格        OleAutomation cellA1 = worksheet.getProperty(CELL_ID, new Variant[]{new Variant("A1")}).getAutomation();        OleAutomation cellD1 = worksheet.getProperty(CELL_ID, new Variant[]{new Variant("D1")}).getAutomation();        //获得单元格区域        OleAutomation areaA3D5 = worksheet.getProperty(CELL_ID,new Variant[]{new Variant("A3"),new Variant("D5")}).getAutomation();        colorRangeByRed(cellA1);        colorRangeByRed(cellD1);        colorRangeByRed(areaA3D5);    }    /**     * 获得interior的方法在Range中的Id     */    private static final int INTERIOR = 0x00000081;    /**     * 为ColorIndex赋值的方法在interior中的Id     */    private static final int COLOR_INDEX = 0x00000061;    /**     * 红色在Excel的Index为3     */    private static final int RED = 3;     /**     * 用红色作为Range的背景色     * @param automation     */    private void colorRangeByRed(OleAutomation automation)    {        //获得interior        OleAutomation interior = automation.getProperty(INTERIOR).getAutomation();        //设置颜色        interior.setProperty(COLOR_INDEX, new Variant(RED));    }}

在SWT中使用OLE操作Excel(三)——设置单元格背景色(2)

时间:2011-07-06

运行效果:

在SWT中使用OLE操作Excel(三)——设置单元格背景色 - 编程入门网

原理:

为Range设置背景色是通过Range的interior属性

interior也是一个对象,为它的ColorIndex属性赋值可设置其颜色

Excel里的颜色设置是通过其序列号设定的(不是通过RGB),红色的index是3。获得所有颜色的index的方法还没找到,可以一个个试,从0开始的整数。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号