shenger0204 2008-11-18 10:13
浏览 172
已采纳

POI高手看过来...

想在后台利用JAVA写Excel文件以后,对生成的EXCEL文件加个读取密码,可以通过什么方法实现吗?
请各位高手给点提示...
[b]问题补充:[/b]
想在后台利用JAVA写Excel文件以后,对生成的EXCEL文件加个读取密码,可以通过什么方法实现吗?
请各位高手给点提示...

----------------2008/11/19添加

看了看各位提供的关于jxl的添加读取密码的方法,十分的感谢.

现在又有一个新的问题,如果抛开POI用JXL实现读写EXCEL的话,JXL可以实现在后台自动调用打印机打印生成的EXCEL文件么?

在下菜鸟级别,请各位不吝赐教...

  • 写回答

4条回答 默认 最新

  • langhua9527 2008-11-19 11:51
    关注

    http://blog.csdn.net/qiudawei115/archive/2008/09/11/2911881.aspx
    [code="java"]
    //获取原Sheet页的设置

    SheetSettings sheetSetting=sheet.getSettings();

    //将原sheet页的打印设置设置到当前Sheet页中

    sheet=new MjJxlExcelCopyPrintSetting().copySheetSettingToSheet(sheet, sheetSetting);
    下面是MjJxlExcelCopyPrintSetting的代码:

    import jxl.HeaderFooter;
    import jxl.Range;
    import jxl.SheetSettings;
    import jxl.format.PageOrientation;
    import jxl.format.PaperSize;
    import jxl.write.WritableSheet;

    /**

    • 读取Jxl方法并设置

    • @author 邱大为

    • @version 1.0
      /
      public class MjJxlExcelCopyPrintSetting {
      /
      *

      • 该方法将setting设置到sheet中
      • @param sheet 需要设置的sheet
      • @param setting 被设置的属性
      • @return
        */
        public WritableSheet copySheetSettingToSheet(WritableSheet sheet,SheetSettings setting){
        // 设置原Sheet打印属性到新Sheet页
        SheetSettings sheetSettings= sheet.getSettings();

        sheetSettings.setAutomaticFormulaCalculation(setting.getAutomaticFormulaCalculation());
        sheetSettings.setBottomMargin(setting.getBottomMargin());
        sheetSettings.setCopies(setting.getCopies());
        sheetSettings.setDefaultColumnWidth(setting.getDefaultColumnWidth());
        sheetSettings.setDefaultRowHeight(setting.getDefaultRowHeight());
        sheetSettings.setDisplayZeroValues(setting.getDisplayZeroValues());
        sheetSettings.setFitHeight(setting.getFitHeight());
        sheetSettings.setFitToPages(setting.getFitToPages());
        sheetSettings.setFitWidth(setting.getFitWidth());

        HeaderFooter footer=setting.getFooter();
        if(footer!=null){
        sheetSettings.setFooter(footer);
        }
        sheetSettings.setFooterMargin(setting.getFooterMargin());
        HeaderFooter header=setting.getHeader();
        if(header!=null){
        sheetSettings.setHeader(header);
        }
        sheetSettings.setHeaderMargin(setting.getHeaderMargin());
        sheetSettings.setHidden(setting.isHidden());
        sheetSettings.setHorizontalCentre(setting.isHorizontalCentre());
        sheetSettings.setHorizontalFreeze(setting.getHorizontalFreeze());
        sheetSettings.setHorizontalPrintResolution(setting.getHorizontalPrintResolution());
        sheetSettings.setLeftMargin(setting.getLeftMargin());
        sheetSettings.setNormalMagnification(setting.getNormalMagnification());
        PageOrientation pageOrientation=setting.getOrientation();
        if(pageOrientation!=null){
        sheetSettings.setOrientation(pageOrientation);
        }
        sheetSettings.setPageBreakPreviewMagnification(setting.getPageBreakPreviewMagnification());
        sheetSettings.setPageBreakPreviewMode(setting.getPageBreakPreviewMode());
        sheetSettings.setPageStart(setting.getPageStart());
        PaperSize paperSize=setting.getPaperSize();
        if(paperSize!=null){
        sheetSettings.setPaperSize(setting.getPaperSize());
        }

        sheetSettings.setPassword(setting.getPassword());
        sheetSettings.setPasswordHash(setting.getPasswordHash());
        Range printArea=setting.getPrintArea();
        if(printArea!=null){
        sheetSettings.setPrintArea(printArea.getTopLeft()==null?0:printArea.getTopLeft().getColumn(),

        printArea.getTopLeft()==null?0:printArea.getTopLeft().getRow(),

        printArea.getBottomRight()==null?0:printArea.getBottomRight().getColumn(),

        printArea.getBottomRight()==null?0:printArea.getBottomRight().getRow());
        }

        sheetSettings.setPrintGridLines(setting.getPrintGridLines());
        sheetSettings.setPrintHeaders(setting.getPrintHeaders());

        Range printTitlesCol=setting.getPrintTitlesCol();
        if(printTitlesCol!=null){
        sheetSettings.setPrintTitlesCol(printTitlesCol.getTopLeft()==null?0:printTitlesCol.getTopLeft().getColumn(),

        printTitlesCol.getBottomRight()==null?0:printTitlesCol.getBottomRight().getColumn());
        }
        Range printTitlesRow=setting.getPrintTitlesRow();
        if(printTitlesRow!=null){
        sheetSettings.setPrintTitlesRow(printTitlesRow.getTopLeft()==null?0:printTitlesRow.getTopLeft().getRow(),

        printTitlesRow.getBottomRight()==null?0:printTitlesRow.getBottomRight().getRow());
        }

        sheetSettings.setProtected(setting.isProtected());
        sheetSettings.setRecalculateFormulasBeforeSave(setting.getRecalculateFormulasBeforeSave());
        sheetSettings.setRightMargin(setting.getRightMargin());
        sheetSettings.setScaleFactor(setting.getScaleFactor());
        sheetSettings.setSelected(setting.isSelected());
        sheetSettings.setShowGridLines(setting.getShowGridLines());
        sheetSettings.setTopMargin(setting.getTopMargin());
        sheetSettings.setVerticalCentre(setting.isVerticalCentre());
        sheetSettings.setVerticalFreeze(setting.getVerticalFreeze());
        sheetSettings.setVerticalPrintResolution(setting.getVerticalPrintResolution());
        sheetSettings.setZoomFactor(setting.getZoomFactor());
        return sheet;
        }
        }

    关于POI的打印设置:

    转自http://bbs.club.sina.com.cn/tableforum/App/view.php?bbsid=343&subid=0&fid=5477&tbid=8182特此感谢

    1.页面
    1.1方向
    1.1.1纵向(T)HSSFPrintSetup#setLandscape(false); [默认状态]
    1.1.2横向(L)HSSFPrintSetup#setLandscape(true);

    1.2缩放
    1.2.1缩放比例(A)HSSFPrintSetup#setScale((short) 100);[默认状态]
    1.2.2调整(F)
    页宽 HSSFPrintSetup#setFitWidth((short) 1);
    页高 HSSFPrintSetup#setFitHeight((short) 0);

    1.3纸张大小(Z)HSSFPrintSetup#setPageSize(HSSFPrintSetup.LETTER_PAPERSIZE);
    纸张大小的定义说明:
    public static final short LETTER_PAPERSIZE = 1;
    public static final short LEGAL_PAPERSIZE = 5;
    public static final short EXECUTIVE_PAPERSIZE = 7;
    public static final short A4_PAPERSIZE = 9;
    public static final short A5_PAPERSIZE = 11;
    public static final short ENVELOPE_10_PAPERSIZE = 20;
    public static final short ENVELOPE_DL_PAPERSIZE = 27;
    public static final short ENVELOPE_CS_PAPERSIZE = 28;
    public static final short ENVELOPE_MONARCH_PAPERSIZE = 37;

    1.4打印质量(Q)HSSFPrintSetup#setVResolution((short) 300)
    1.5起始页码(R)HSSFPrintSetup#setPageStrart((short) 0);[默认状态]

    2页面距
    2.1上(T)HSSFSheet#setMargin(HSSFSheet.TopMargin,(short)0.6);
    2.2下(B)HSSFSheet#setMargin(HSSFSheet.BottomMargin,(short)0.6);
    2.3左(L)HSSFSheet#setMargin(HSSFSheet.LeftMargin,(short)0.6);
    2.4右(R)HSSFSheet#setMargin(HSSFSheet.RightMargin,(short)0.2);
    2.5页眉(A)HSSFPrintSetup#setHeaderMargin((double)0.2);
    2.6页脚(F)HSSFPrintSetup#setFooterMargin((double)0.6);
    2.7居中方式
    2.7.1水平(Z)HSSFSheet#setHorizontallyCenter(false);
    2.7.2垂直(V)HSSFSheet#setVerticallyCenter(false);

    3页眉/页脚
    3.1页眉HSSFHeader#setLeft(HSSFHeader.date();
    说明:
    首先获得HSSFHeader对象
    确定页眉的显示位置(如,左边显示页眉HSSFHeader#setLeft(显示内容))
    可使用HSSFHeader#setLeft,setCenter,setRight

    3.2页脚HSSFFotter#setLeft(HSSFFotter.page()+”/”+HSSFFotter.numPages());
    说明同3.1
    首先获得HSSFFotter对象
    确定页眉的显示位置(如,左边显示页眉HSSFFotter#setLeft(显示内容))
    可使用HSSFFotter#setLeft,setCenter,setRight

    4工作表
    4.1打印区域
    HSSFWorkbook#setPrintArea(intsheetIndex,
    intstartColumn,
    intendColumn,
    intstartRow,
    intendRow);
    参数的说明
    sheetIndex–从0开始的sheet的索引编号
    startColumn-打印区域的开始列号
    endColumn-打印区域的结束列号
    startRow-打印区域的开始行号
    endRow-打印区域的结束行号

    4.2打印标题
    HSSFWorkbook#setRepeatingRowsAndColumns(intsheetIndex,
    intstartColumn,
    intendColumn,
    intstartRow,
    intendRow);
    参数说明同4.1
    使用说明:
    仅仅设置左端标题列:
    workbook.setRepeatingRowsAndColumns(0,0,1,-1-1);

    仅仅设置顶端标题行:
    workbook.setRepeatingRowsAndColumns(0,-1,-1,0,4);

    同时设置左端和顶端标题:
    workbook.setRepeatingRowsAndColumns(0,-1,-1,-1,-1);

    4.3打印
    网格线(G):HSSFSheet#setPrintGridlines(false);
    单色打印(B)HSSFPrintSetup#setNoColor(false);
    按草稿方式(Q):HSSFPrintSetup#setDraft(false);
    行号列标(L):(很抱歉,还没有找到)
    批注(M):(很抱歉,还没有找到)
    错误单元格打印为(E):(很抱歉,还没有找到)

    4.4打印顺序

    HSSFPrintSetup#setLeftToRight(false);

    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办