Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中使用OpenPDF创建一个使用动态rowspan/colspan并放入单元格的表?_Java_Openpdf - Fatal编程技术网

如何在java中使用OpenPDF创建一个使用动态rowspan/colspan并放入单元格的表?

如何在java中使用OpenPDF创建一个使用动态rowspan/colspan并放入单元格的表?,java,openpdf,Java,Openpdf,所以我尝试使用OpenPDF创建一个时间表。我目前面临的一个问题是如何为单元格创建具有不同列间距和行间距(取决于计划的持续时间)的表。我已经搜索过了,没有发现任何与此类似的问题。我已经创建了一个将放置明细表的位置。我正在努力实现这样的目标。在尝试添加计划(行跨度为4的单元格)后,时间单元格(8:30-10:00,…)开始错位 以下是我编写的代码: Document document = new Document(); try { PdfWriter.getInstanc

所以我尝试使用OpenPDF创建一个时间表。我目前面临的一个问题是如何为单元格创建具有不同列间距和行间距(取决于计划的持续时间)的表。我已经搜索过了,没有发现任何与此类似的问题。我已经创建了一个将放置明细表的位置。我正在努力实现这样的目标。在尝试添加计划(行跨度为4的单元格)后,时间单元格(8:30-10:00,…)开始错位

以下是我编写的代码:

Document document = new Document();

    try {
        PdfWriter.getInstance(document, new FileOutputStream("TimeTable.pdf"));

        document.open();
        String[] times = new String[]{"7:00 - 8:30", "8:30 - 10:00", "10:00 - 11:30", 
        "11:30 - 13:00", "13:00 - 14:30", "14:30 - 16:00", 
        "16:00 - 17:30", "17:30 - 19:00", "19:00 - 20:30"};

        // 7 columns. 28 rows. 1st row is time, M, TH, T, F, W, S

        DMSchedule schedule = new DMSchedule(0, "M", "08:00", "10:00", 0, "S201", "CS101", 0);

        PdfPTable table = new PdfPTable(7);

        PdfPCell cell = new PdfPCell(new Paragraph("TIME"));
        cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
        table.addCell(cell);

        cell = new PdfPCell(new Paragraph("M"));
        cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
        table.addCell(cell);

        cell = new PdfPCell(new Paragraph("TH"));
        cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
        table.addCell(cell);

        cell = new PdfPCell(new Paragraph("T"));
        cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
        table.addCell(cell);

        cell = new PdfPCell(new Paragraph("F"));
        cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
        table.addCell(cell);

        cell = new PdfPCell(new Paragraph("W"));
        cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
        table.addCell(cell);

        cell = new PdfPCell(new Paragraph("S"));
        cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
        table.addCell(cell);

        int rowStartingPos = 4;
        int timeCounter = 0;

        for (int row = 2; row <= 28; row++) { // started at 2 because 1st row is already occupied by TIME, M, TH, T, F, W, S 
            limit = 6;
            for (int column = 1; column <= 6; column++) {

                if ((row == 2 || row == 5 || row == 8 || 
                    row == 11 || row == 14 || row == 17 || 
                    row == 20 || row == 23 || row == 26) && column == 1) {
                    cell = new PdfPCell(new Paragraph(times[timeCounter]));
                    cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
                    cell.setRowspan(3);
                    table.addCell(cell);
                    timeCounter++;
                }

                if (row == rowStartingPos) {
                    if (column == 1) {
                        cell = new PdfPCell(new Paragraph("CS101:\tnull(M)\t08:00 - 10:00"));
                        cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
                        cell.setRowspan(4);
                        table.addCell(cell);
                    }
                }

                table.addCell("\t");

            }
        }

        document.add(table);

    } catch (DocumentException | IOException de) {
        System.err.println(de.getMessage());
    }

    document.close();
Document Document=新文档();
试一试{
getInstance(文档,新文件outputStream(“timeline.pdf”);
document.open();
字符串[]次=新字符串[]{“7:00-8:30”,“8:30-10:00”,“10:00-11:30”,
"11:30 - 13:00", "13:00 - 14:30", "14:30 - 16:00", 
"16:00 - 17:30", "17:30 - 19:00", "19:00 - 20:30"};
//7列。28行。第一行是时间,M,TH,T,F,W,S
DMSchedule计划=新的DMSchedule(0,“M”,“08:00”,“10:00”,0,“S201”,“CS101”,0);
PdfPTable=新的PdfPTable(7);
PdfPCell=新的PdfPCell(新段落(“时间”));
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
表2.addCell(cell);
单元格=新的PdfPCell(新的段落(“M”));
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
表2.addCell(cell);
单元格=新的PdfPCell(新段落(“TH”);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
表2.addCell(cell);
单元格=新的PdfPCell(新的段落(“T”));
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
表2.addCell(cell);
单元格=新的PdfPCell(新的段落(“F”));
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
表2.addCell(cell);
单元格=新的PdfPCell(新的段落(“W”));
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
表2.addCell(cell);
单元格=新的PdfPCell(新的段落(“S”);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
表2.addCell(cell);
int rowStartingPos=4;
int时间计数器=0;
对于(int row=2;row