急求:java 如何控制HSSFWorkbook 打印自定义纸张大小 如果我在打印机设置里自定义了一种纸张格式,请问如何通过java poi类来控制打印Excel时,自动选择我新定义的纸张格式.急救! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 POI无解,JCOM的话好象可以,直接调COM的接口 HSSFWorkbook肯定是没有的,你自己用Excel试一下就知道了,文件>页面设置>打印纸张只对当前sheet有效。HSSFPrintSetupHSSFPrintSetup ps = sheet.getPrintSetup();//以下对应的是页面设置里面的一些内容,比如 ps.setHeaderMargin((double) 0.44); // 页边距 ps.setFooterMargin((double) 0.2); ps.setLandscape(false); // 打印方向 ps.setPaperSize(HSSFPrintSetup.A4_PAPERSIZE); ps.setFitWidth((short)1); // 缩放 ps.setFitHeight((short)1000); HSSFPrintSetup 只能定义一般的纸张,不能使用自定义类型的. to:hellwindy(夜神·月) 有没有JCOM相关的简称,或者例子了.谢谢! 自认为任何API都无解(包括MS的API),除非你的代码运行在固定客户端,否则每台打印机上面都可以自定义N个不同的paper的,或者一个自定义的也没有。如果是针对特定环境,你可以这样,现用Excel建立一个.xls,并设置paper,然后通过POI的pageSetup读出来,看看是多少。以后程序就用这个了。反正我认为,怎么个实现都是治标不治本的方式,主要是Excel存储格式当初定义的太差,耦合度太高。最恶心的例子,就是列宽。保存在.xls里面的数字的含义是“以整个workbook里面第一种字体显示'0'的时候的宽度的1/256,作为一个单位时候的大小” JCOM做过打印但没设置纸张 public boolean print(int from, int to, int copys, boolean isPreview) throws ReportPrintException { boolean success = false; if (filename != null) { ReleaseManager rm = new ReleaseManager(); try { ExcelApplication excel = new ExcelApplication(rm); ExcelWorkbooks xlBooks = excel.Workbooks(); ExcelWorkbook xlBook = xlBooks.Open(filename); ExcelWorksheet xlSheet = excel.ActiveSheet(); excel.Visible(true); xlSheet.PrintOut(from, to, copys, isPreview); xlBook.Close(false, null, false); excel.Quit(); success = true; } catch (Exception e) { e.printStackTrace(); throw new ReportPrintException(e.getMessage()); } finally { rm.release(); } } return success; } public void printPreview() throws ReportPrintException { if (filename != null) { ReleaseManager rm = new ReleaseManager(); try { ExcelApplication excel = new ExcelApplication(rm); ExcelWorkbooks xlBooks = excel.Workbooks(); ExcelWorkbook xlBook = xlBooks.Open(filename); ExcelWorksheet xlSheet = excel.ActiveSheet(); excel.Visible(true); xlSheet.method("PrintPreview", null); xlBook.Close(false, null, false); excel.Quit(); } catch (Exception e) { e.printStackTrace(); throw new ReportPrintException(e.getMessage()); } finally { rm.release(); } } }其中,xlSheet.method("PrintPreview", null);就是直接调用COM的打印预览方法,这个要知道COM里定义的方法名字叫什么,就跟JNI一样,最好询问一下COM编程的人设置页面的方法和参数格式。 如何给HTTP添加响应头部信息? HTTP Status 500 - 错误 求一个JS时钟.. 做过有关RFID项目的朋友进来帮帮忙! 怎么将客户端的ACCES库中的数据导入到服务器上的ORACLE表中? 用javascript进行登录验证的问题!! 在spring中添加AOP后,IOC容器却不能找到已声明的bean 为什么会这样啊???在线等待 请教各位高手,谁能给我一个生成目录树底javabean? jsp有没有办法直接引用jar文件里的class 怎么没人回呀,是不是嫌分少呀,帮我解决了我多给还不行吗 用JSP显示EXCEL的代码,谁能给解释下?
//以下对应的是页面设置里面的一些内容,比如
ps.setHeaderMargin((double) 0.44); // 页边距
ps.setFooterMargin((double) 0.2);
ps.setLandscape(false); // 打印方向
ps.setPaperSize(HSSFPrintSetup.A4_PAPERSIZE);
ps.setFitWidth((short)1); // 缩放
ps.setFitHeight((short)1000);
to:hellwindy(夜神·月) 有没有JCOM相关的简称,或者例子了.谢谢!
throws ReportPrintException {
boolean success = false;
if (filename != null) {
ReleaseManager rm = new ReleaseManager();
try {
ExcelApplication excel = new ExcelApplication(rm); ExcelWorkbooks xlBooks = excel.Workbooks();
ExcelWorkbook xlBook = xlBooks.Open(filename);
ExcelWorksheet xlSheet = excel.ActiveSheet();
excel.Visible(true);
xlSheet.PrintOut(from, to, copys, isPreview);
xlBook.Close(false, null, false);
excel.Quit(); success = true;
} catch (Exception e) {
e.printStackTrace();
throw new ReportPrintException(e.getMessage());
} finally {
rm.release();
}
}
return success;
}
public void printPreview() throws ReportPrintException {
if (filename != null) {
ReleaseManager rm = new ReleaseManager();
try {
ExcelApplication excel = new ExcelApplication(rm); ExcelWorkbooks xlBooks = excel.Workbooks();
ExcelWorkbook xlBook = xlBooks.Open(filename);
ExcelWorksheet xlSheet = excel.ActiveSheet();
excel.Visible(true);
xlSheet.method("PrintPreview", null);
xlBook.Close(false, null, false);
excel.Quit();
} catch (Exception e) {
e.printStackTrace();
throw new ReportPrintException(e.getMessage());
} finally {
rm.release();
}
}
}其中,xlSheet.method("PrintPreview", null);就是直接调用COM的打印预览方法,这个要知道COM里定义的方法名字叫什么,就跟JNI一样,最好询问一下COM编程的人设置页面的方法和参数格式。