excel 전환 pdf 방안

3063 단어
오늘 사용자가 파일을 수정하지 않도록 내보낸 excel을 pdf 형식으로 바꾸기를 희망합니다. 다음은 이번 수정 방안을 간단하게 정리합니다.
1 excel 전환 pdf 방법 참조 예:https://github.com/caryyu/excel2pdf.git그것의 원리도 모두가 가장 직관적인 생각이다. excel을 획득한 다음에 그것을 pdf로 전환한다. 실제 핵심 코드는 다음과 같다. 코드는 excel에서 값을 얻은 다음에 pdf에 넣어야 하기 때문에 논리가 비교적 복잡하다.
` protected PdfPTable toParseContent(Sheet sheet) throws BadElementException, MalformedURLException, IOException{ int rows = sheet.getPhysicalNumberOfRows();
    List cells = new ArrayList();
    float[] widths = null;
    float mw = 0;
    for (int i = 0; i < rows; i++) {
        Row row = sheet.getRow(i);
        int columns = row.getLastCellNum();

        float[] cws = new float[columns];
        for (int j = 0; j < columns; j++) {
            Cell cell = row.getCell(j);
            if (cell == null) cell = row.createCell(j);

            float cw = getPOIColumnWidth(cell);
            cws[cell.getColumnIndex()] = cw;

            cell.setCellType(Cell.CELL_TYPE_STRING);
            CellRangeAddress range = getColspanRowspanByExcel(row.getRowNum(), cell.getColumnIndex());

            int rowspan = 1;
            int colspan = 1;
            if (range != null) {
                rowspan = range.getLastRow() - range.getFirstRow() + 1;
                colspan = range.getLastColumn() - range.getFirstColumn() + 1;
            }

            PdfPCell pdfpCell = new PdfPCell();
            pdfpCell.setBackgroundColor(new BaseColor(POIUtil.getRGB(
                    cell.getCellStyle().getFillForegroundColorColor())));
            pdfpCell.setColspan(colspan);
            pdfpCell.setRowspan(rowspan);
            pdfpCell.setVerticalAlignment(getVAlignByExcel(cell.getCellStyle().getVerticalAlignment()));
            pdfpCell.setHorizontalAlignment(getHAlignByExcel(cell.getCellStyle().getAlignment()));
            pdfpCell.setPhrase(getPhrase(cell));

            if (sheet.getDefaultRowHeightInPoints() != row.getHeightInPoints()) {
                pdfpCell.setFixedHeight(this.getPixelHeight(row.getHeightInPoints()));
            }

            addBorderByExcel(pdfpCell, cell.getCellStyle());
            addImageByPOICell(pdfpCell , cell , cw);

            cells.add(pdfpCell);
            j += colspan - 1;
        }

        float rw = 0;
        for (int j = 0; j < cws.length; j++) {
            rw += cws[j];
        }
        if (rw > mw ||  mw == 0) {
            widths = cws;
            mw = rw;
        }
    }

    PdfPTable table = new PdfPTable(widths);
    table.setWidthPercentage(100);
    for (PdfPCell pdfpCell : cells) {
        table.addCell(pdfpCell);
    }
    return table;
}`

2 pdf 템플릿을 통해 pdf 직접 생성
예제 문서:https://blog.csdn.net/weixin_41187876/article/details/79156969?tdsourcetag=s_pcqq_aiomsg
절차는: pdf 템플릿 가져오기->데이터 가져오기->pdf 파일 생성
이런 방식은 감각이 더욱 직관적이고 전환 조작도 적어서 성능이 더욱 좋다
3 나의 이번 요구에 맞추어 사용자가 excel 파일을 수정하는 것을 방지하기 위해
사실 excel에는 암호화 기능이 있어서 코드 한 줄로 해결할 수 있다sheet.protectSheet(UUID.randomUUID().toString());

좋은 웹페이지 즐겨찾기