在有些需求当中我们需要抓取字段并且填充到excel表格里面

在多少须求此中我们须要抓取字段并且填充到excel表格里面,最终将excel表格转变来pdf格式实行输出,笔者先是次接触那么些须要时,遭遇多少个比较棘手的标题,今后相继列出并且提供技术方案。

1:excel转pdf现身乱码:

    第二次excel转pdf是成功的,第四回始发后边都已乱码,是因为笔者的pdf转excel方法现身的主题材料,解决办法是利用java自个儿底层的法子(详见下方代码)。

 public static boolean getLicense()
{
        boolean result = false;
        try {
            InputStream is =
Thread.currentThread().getContextClassLoader()
                  
 .getResourceAsStream(“license.xml”); // 
license.xml应放在..WebRoot在有些需求当中我们需要抓取字段并且填充到excel表格里面。在有些需求当中我们需要抓取字段并且填充到excel表格里面。WEB-INFclasses路径下
            License aposeLic = new
License();
           
aposeLic.setLicense(is);
            result = true;
        } catch (Exception e)
{               
            e.printStackTrace();
        }
        return result;
    }
    
    
    public static void
excelTransferPdf(String excelPath,String pdfPath) {
        if (在有些需求当中我们需要抓取字段并且填充到excel表格里面。在有些需求当中我们需要抓取字段并且填充到excel表格里面。!getLicense()) {
            System.out.println(“license
faile”);
            return;
        }
澳门贵宾厅vip官网,        
        try {     
            Workbook wb = new
Workbook(excelPath);
            FileOutputStream fileOS = new
FileOutputStream(new File(pdfPath));
            wb.save(fileOS,
com.aspose.cells.SaveFormat.PDF);
            fileOS.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

2:excel转pdf现身折行。

  excel转pdf现身折行的事态万分普遍,因为在程序运营进程中许多字段是抓取的,你十分小概推断你的excel转成pdf会有几页,所以当时你就毫无轻松设置excel的预览格式,将excel的单元格式设置自动换行。

3:抓取字段显示结果不完全:。

  当您未安装单元格大小而又未有安装单元格自动换行,举例您的A18单元格里面包车型大巴字段超越了单元格的长度你还从未设置单元格大小而又从未安装单元格自动换行,就将抓取的字段填充在B18单元格里面,那么打印出来的pdf文件A18单元格超过单元非常的始末是不予显示的,这个时候你照旧将抓取字段填充在C18单元格内要么将官和校官订A18单元格格式

4:excel转PDF字段内容无故中间有个别换行:

  那是本身赶过的最坑的四个地点,此时你只须求在excel单元格里面安装自动换行就能够,没有必要代码强行自动换行(强行换行有希望只现出多行数据只显示豆蔻梢头行)。同有时间你要求如下代码:

/**
     *
得到二个字符串的尺寸,呈现的尺寸,多个汉字或日罗马尼亚语长度为1,保加利亚共和国语字符长度为0.5
     *
     * @param String
     *            s 必要获得长度的字符串
     * @return int 得到的字符串长度
     */
    public static double getLength(String s) {
        double valueLength = 0;
        if (s == null) {
            return 0;
        }
        String chinese = “[u4e00-u9fa5]”;
        //
获取字段值的长度,如若含普通话字符,则每一个普通话字符长度为2,不然为1
        for (int i = 0; i < s.length(); i++) {
            // 获取三个字符
            String temp = s.substring(i, i + 1);
            // 推断是不是为华语字符
            if (temp.matches(chinese)) {
                // 粤语字符长度为2
                valueLength += 2;
            } else {
                // 别的字符长度为1
                valueLength += 1;
            }
        }
        // 进位取整
        return Math.ceil(valueLength);
    }

    /**
     * 依照字符串长度获取行高
     *
     * @param str
     * @return
     */
    public static Float getRowHeight(String str) {

        Integer lineCount = (int) (getLength(str) / 64) + 1;
        if (str.contains(“n”)) {
            Integer tempLineCount = 1;
            String[] lines = str.split(“n”);
            for (String line : lines) {
                Integer everyLineCount = (int) (getLength(line) / 64) +
1;
                tempLineCount += everyLineCount;
            }
            lineCount = lineCount >= tempLineCount ? lineCount :
tempLineCount;
        }
        Float rowHeight = (float) (lineCount * 20);
        return rowHeight;
    }

你须求先得到抓取的字符串的长度,然后通过那几个办法计算行高,再将excel需求填写的该行用Java代码设置行高(行高单位是像素),可是意气风发旦现身本人下边说的字段内容无故中间部分换行,那么您得到的行高就能够相差,这时候你要求更换那一个地点—–>>>>Float rowHeight = (float卡塔尔(قطر‎ (lineCount * X卡塔尔; 
x的值一定要设置的大学一年级行,防止现身这种情状!

 

You may also like...

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图