找回密码
 立即注册

QQ登录

只需一步,快速开始

avicdev

中级会员

69

主题

203

帖子

752

积分

中级会员

积分
752
avicdev
中级会员   /  发表于:2024-8-14 16:57  /   查看:907  /  回复:5
Workbook workbook = new Workbook();
workbook.fromJson(data);
File f= new File(path);
if (f.exists()) {
   f.delete();
}
List<PageInfo> pages =new ArrayList<>();
PrintManager printManager = new PrintManager();for (IWorksheet worksheet : workbook.getWorksheets()) {
   List paginate =makeworksheet(printManager,worksheet,formId);
   pages.addAll(paginate) ;
}printManager.updatePageNumberAndPageSettings(pages);
printManager.savePageInfosToPDF(path, pages);

5 个回复

倒序浏览
avicdev
中级会员   /  发表于:2024-8-14 17:00:21
沙发
printManager.savePageInfosToPDF(path, pages);  这个方法报String index out of range: -1
  不知道是什么原因导致的  pages的值看着是正确的
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-8-14 17:52:17
板凳
您好!根据报错信息,可能跟path有关,您可以先排查下,也需要您提供一个能够复现问题的完整demo。
回复 使用道具 举报
avicdev
中级会员   /  发表于:2024-8-15 14:51:43
地板
private void cappSpreadjsExportPdf() throws Exception {
                        String data = params.get("data").toString();
               

                String path ="d:/test.pdf" ;
                try {
                        Workbook workbook = new Workbook();
                        workbook.fromJson(data);
                        File f= new File(path);
                        if (f.exists()) {
                                f.delete();
                        }
                        List<PageInfo> pages =new ArrayList<>();
                        PrintManager printManager = new PrintManager();
               
                        for (IWorksheet worksheet : workbook.getWorksheets()) {
                                List paginate =makeworksheet(printManager,worksheet);
                                pages.addAll(paginate) ;
                        }
                       
                        printManager.updatePageNumberAndPageSettings(pages);
                        printManager.savePageInfosToPDF(path, pages);

                                        } catch (Exception e) {
                        e.printStackTrace();
                }

        }
        public List makeworksheet (PrintManager printManager,IWorksheet worksheet){
                worksheet.getPageSetup().setPaperSize(PaperSize.A4);
                worksheet.getPageSetup().setPrintHeadings(false);
                worksheet.getPageSetup().setPrintGridlines(false);
                worksheet.getPageSetup().setIsPercentScale(false);
                worksheet.getPageSetup().setFitToPagesWide(1);
                worksheet.getPageSetup().setFitToPagesTall(0);
                worksheet.getPageSetup().getPrintTailRows();

                worksheet.getPageSetup().setRightHeader("共 &N 页 第 &P 页");
               
                List repeatSettings = new ArrayList();//要设置表头的区域集合 (多表头功能)
                if(worksheet.getTables().getCount()>0){
                        for (int i = 0; i <worksheet.getTables().getCount() ; i++) {
                                IRange iRange=worksheet.getTables().get(i).getRange();
                                int row=iRange.getRow();//起始行
                                int lastRow=iRange.getLastRow();//结束行
                                RepeatSetting repeatSetting = new RepeatSetting();
                                repeatSetting.setTitleRowStart(row-1);
                                repeatSetting.setTitleRowEnd(row-1);
                                repeatSetting.setRange(worksheet.getRange("B"+row+":H"+lastRow));
                                repeatSettings.add(repeatSetting);
                        }
                }
                List paginate = printManager.paginate(worksheet, null, repeatSettings);
                return paginate;
        }
回复 使用道具 举报
avicdev
中级会员   /  发表于:2024-8-15 14:55:45
5#
这个是前台传过来的数据   可以试试    看是不是数据有什么问题   因为有的数据可以  有的不行

data.rar

47.64 KB, 下载次数: 106

回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-8-15 17:41:41
6#
avicdev 发表于 2024-8-15 14:55
这个是前台传过来的数据   可以试试    看是不是数据有什么问题   因为有的数据可以  有的不行

您好!排查发现您提供的文件内部数据可能存在问题,您的文件在前端SpreadJS控件填报好数据导出为ssjson数据传到后端交给GcExcel处理的吗?需要您提供一份原始文件。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部