Browse Source

!124 功能迭代-Excel报表导出PDF-增加样式-2(加删除线、水平对齐、垂直对齐)
Merge pull request !124 from 陈旭光/dev

Foming 2 years ago
parent
commit
d38bfb4270

+ 81 - 8
report-core/src/main/java/com/anjiplus/template/gaea/business/modules/reportexcel/service/impl/ReportExcelServiceImpl.java

@@ -243,7 +243,7 @@ public class ReportExcelServiceImpl implements ReportExcelService {
                 ReportExcelStyleDto reportExcelStyleDto = reportExcelStyleList.get(0).get(i);
                 ReportExcelStyleDto reportExcelStyleDto = reportExcelStyleList.get(0).get(i);
                 if(!Objects.isNull(reportExcelStyleDto))
                 if(!Objects.isNull(reportExcelStyleDto))
                 {
                 {
-                    processCellStyle(reportExcelStyleDto,tableCell);
+                    processCellStyle(reportExcelStyleDto,tableCell,font);
                 }
                 }
                 table.addCell(tableCell);
                 table.addCell(tableCell);
             }
             }
@@ -265,7 +265,7 @@ public class ReportExcelServiceImpl implements ReportExcelService {
                     ReportExcelStyleDto reportExcelStyleDto = reportExcelStyleList.get(i).get(j);
                     ReportExcelStyleDto reportExcelStyleDto = reportExcelStyleList.get(i).get(j);
                     if(!Objects.isNull(reportExcelStyleDto))
                     if(!Objects.isNull(reportExcelStyleDto))
                     {
                     {
-                        processCellStyle(reportExcelStyleDto,tableCell);
+                        processCellStyle(reportExcelStyleDto,tableCell,font);
                     }
                     }
                     table.addCell(tableCell);
                     table.addCell(tableCell);
                 }
                 }
@@ -293,27 +293,31 @@ public class ReportExcelServiceImpl implements ReportExcelService {
      * 处理导出pdf文件样式
      * 处理导出pdf文件样式
      * @param tableCell
      * @param tableCell
      */
      */
-    public void processCellStyle(ReportExcelStyleDto reportExcelStyleDto,PdfPCell tableCell)
+    public void processCellStyle(ReportExcelStyleDto reportExcelStyleDto,PdfPCell tableCell,Font font)
     {
     {
-        //处理单元格背景颜色
+        // 处理单元格背景颜色
         String bg = reportExcelStyleDto.getBg();
         String bg = reportExcelStyleDto.getBg();
         java.awt.Color color = null;
         java.awt.Color color = null;
         if(!Objects.isNull(bg))
         if(!Objects.isNull(bg))
         {
         {
-            color = java.awt.Color.decode(bg);
+            color = parseRGB(bg);
             tableCell.setBackgroundColor(new BaseColor(color.getRed(), color.getGreen(), color.getBlue()));
             tableCell.setBackgroundColor(new BaseColor(color.getRed(), color.getGreen(), color.getBlue()));
         }
         }
-        //处理字体
+        // 处理字体
         String fc = reportExcelStyleDto.getFc();
         String fc = reportExcelStyleDto.getFc();
         Integer fs = reportExcelStyleDto.getFs();
         Integer fs = reportExcelStyleDto.getFs();
         String ff = reportExcelStyleDto.getFf();
         String ff = reportExcelStyleDto.getFf();
         Boolean bl = reportExcelStyleDto.isBl();
         Boolean bl = reportExcelStyleDto.isBl();
         Boolean it = reportExcelStyleDto.isIt();
         Boolean it = reportExcelStyleDto.isIt();
-        Font font = new Font();
+        Boolean cl = reportExcelStyleDto.isCl();
+        Integer ht = reportExcelStyleDto.getHt();
+        Integer vt = reportExcelStyleDto.getVt();
+
+
         // 设置字体颜色
         // 设置字体颜色
         if(!Objects.isNull(fc))
         if(!Objects.isNull(fc))
         {
         {
-            color = java.awt.Color.decode(fc);
+            color = parseRGB(fc);
             font.setColor(new BaseColor(color.getRed(), color.getGreen(), color.getBlue()));
             font.setColor(new BaseColor(color.getRed(), color.getGreen(), color.getBlue()));
         }
         }
         // 设置字体
         // 设置字体
@@ -341,6 +345,61 @@ public class ReportExcelServiceImpl implements ReportExcelService {
         {
         {
             font.setStyle(Font.BOLDITALIC);
             font.setStyle(Font.BOLDITALIC);
         }
         }
+        // 是否删除线
+        if(Objects.equals(Boolean.TRUE,cl))
+        {
+            // 如果是粗体且斜体
+            if (font.getStyle() == Font.BOLDITALIC)
+            {
+                font.setStyle(Font.BOLDITALIC | Font.STRIKETHRU);
+            }
+            // 如果是粗体
+            else if(font.getStyle() == Font.BOLD)
+            {
+                font.setStyle(Font.BOLD | Font.STRIKETHRU);
+            }
+            // 如果是斜体
+            else if(font.getStyle() == Font.ITALIC)
+            {
+                font.setStyle(Font.ITALIC | Font.STRIKETHRU);
+            }
+            else
+            {
+                font.setStyle(Font.STRIKETHRU);
+            }
+        }
+        // 水平对齐
+        if(!Objects.isNull(ht))
+        {
+            if(Objects.equals(ht,0))
+            {
+                tableCell.setHorizontalAlignment(Element.ALIGN_CENTER);
+            }
+            else if(Objects.equals(ht,1))
+            {
+                tableCell.setHorizontalAlignment(Element.ALIGN_LEFT);
+            }
+            else if(Objects.equals(ht,2))
+            {
+                tableCell.setHorizontalAlignment(Element.ALIGN_RIGHT);
+            }
+        }
+        // 垂直对齐
+        if(!Objects.isNull(vt))
+        {
+            if(Objects.equals(ht,0))
+            {
+                tableCell.setVerticalAlignment(com.itextpdf.text.Element.ALIGN_MIDDLE);
+            }
+            else if(Objects.equals(ht,1))
+            {
+                tableCell.setVerticalAlignment(Element.ALIGN_TOP);
+            }
+            else if(Objects.equals(ht,2))
+            {
+                tableCell.setVerticalAlignment(Element.ALIGN_BOTTOM);
+            }
+        }
         Phrase phrase = tableCell.getPhrase();
         Phrase phrase = tableCell.getPhrase();
         tableCell.setPhrase(new Paragraph(phrase.getContent(), font));
         tableCell.setPhrase(new Paragraph(phrase.getContent(), font));
         //处理字体
         //处理字体
@@ -348,6 +407,20 @@ public class ReportExcelServiceImpl implements ReportExcelService {
 
 
     }
     }
 
 
+        public static java.awt.Color parseRGB(String rgb) {
+            try {
+                String[] components = rgb.substring(rgb.indexOf("(") + 1, rgb.indexOf(")")).split(",");
+                int red = Integer.parseInt(components[0].trim());
+                int green = Integer.parseInt(components[1].trim());
+                int blue = Integer.parseInt(components[2].trim());
+
+                return new java.awt.Color(red, green, blue);
+            } catch (Exception e) {
+                e.printStackTrace();
+                return null; // 解析失败,返回null
+            }
+        }
+
     private String getStringValue(Cell cell) {
     private String getStringValue(Cell cell) {
         if (cell == null)
         if (cell == null)
             return "";
             return "";