【问题标题】:JTable passing values to excel (Text formating)JTable将值传递给excel(文本格式)
【发布时间】:2012-04-23 14:27:39
【问题描述】:

我使用您可以在下面看到的代码来删除 jtable 中的某些单元格。对我来说效果很好,使用 JTable.print() 方法的外观和打印效果都非常好。

public void strikeThrough()
{
   int rows=jTable.getRowCount();
   destroiedDocs=new ArrayList<>();
   for (int i = 0; i < rows; i++)      
     {
       String test=String.valueOf(jTable.getValueAt(i,5));
       if (test.equals("K"))
         {
          for (int j = 1; j < 5; j++)
            {
            String tostrike= String.valueOf(jTable.getValueAt(i, j));
            String striked=("<html><strike>".concat(tostrike).concat("</strike>       </html>"));
            jTable.setValueAt(striked, i, j);
            destroiedDocs.add(i);
            }
         } 
     }
 }

问题是,当我使用 jxl 类将结果导出到 excel 时,我得到了这些带有外观的删除单元格中的值

<html><strike>some text</strike></html>

而不是 some text 删除线。 有关如何解决此格式化问题的任何建议? 我通过循环从jtable中逐个单元格地传递excel单元格中的单元格。 谢谢!

【问题讨论】:

    标签: java swing jtable jxl strikethrough


    【解决方案1】:

    JAVA代码:

    String striked=("<html><strike>".concat(tostrike).concat("</strike>       </html>"));
    jTable.setValueAt(striked, i, j);
    

    仅适用于 JAVA UI。将数据导出到excel后会显示原始文本。
    您需要执行以下步骤:
    1. 导出前删除&lt;html&gt;&lt;strike&gt;&lt;/strike&gt;&lt;/html&gt;。保留原文。
    2. 使用以下代码删除单元格。

    使用jxl-2.6.10.jar运行以下代码

    import java.io.File;
    import jxl.Workbook;
    import jxl.write.Label;
    import jxl.write.WritableCell;
    import jxl.write.WritableCellFormat;
    import jxl.write.WritableFont;
    import jxl.write.WritableSheet;
    import jxl.write.WritableWorkbook;
    
    public class ExcelCreate {
    
      public static void main(String[] args) {
        try {
    
             WritableWorkbook workbook =
             Workbook.createWorkbook(new File("output.xls"));
             WritableSheet sheet = workbook.createSheet("Page1", 0);
    
             String Label[] = new String[4];
             Label[0] = "Emp ID";
             Label[1] = "Name";
             Label[2] = "Department";
             Label[3] = "Designation";
    
             WritableCellFormat cellFormat = new WritableCellFormat();
             WritableFont font = new WritableFont(WritableFont.ARIAL);
             font.setStruckout(true);
             cellFormat.setFont(font);
    
             for (int i = 0; i < Label.length; i++) {
                 Label label = new Label(i, 0, Label[i]);
                 sheet.addCell(label);
                 WritableCell cell = sheet.getWritableCell(i, 0);
                 cell.setCellFormat(cellFormat);
             }
    
             workbook.write();
             workbook.close();
    
        } catch (Exception e) {
            /* Write your logic to handle exception. 
             */
        }
      }
    }
    

    【讨论】:

      【解决方案2】:

      我认为在将每个单元格导出到 Excel 之前,您必须找到并替换或删除标签,例如

      <html> 
          and
      <strike>
      

      使用适当的函数来添加所需的格式..

      您使用哪个 API 将其导出为 Excel 格式? 我认为这将是您用来导出到 Excel 的特定的那个。

      【讨论】:

      • 我使用 jxl 库将结果导出到它。
      • 是的。这似乎很容易。以及如何在 Excel 上通过这个罢工,因为我需要它!谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多