java - JTable 将值传递到 excel(文本格式)

标签 java swing jtable jxl strikethrough

我使用您在下面看到的代码来删除 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>

而不是删除线中的一些文本。 关于如何解决此格式化问题有什么建议吗? 我使用循环从 jtable 中逐个单元地传递 excel 中的单元格。 谢谢!

最佳答案

JAVA代码:

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

仅适用于 JAVA UI。导出数据到excel后会显示原始文本。
您需要执行以下步骤:
1.导出前删除<html><strike></strike></html> 。保留原文。
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. 
         */
    }
  }
}

关于java - JTable 将值传递到 excel(文本格式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10282513/

相关文章:

Java Swing : Audible sound when altering hidden UI element on unselected panel of JTabbedPane

java - JFrame 中的窗口动画

java - 我应该如何刷新表格?

java - JPA/HQL - 查找具有一对多关系且包含一个或多个特定元素的行

java - 从链接读取生成的 HTML 文件

java - 使用sharedPreferences将值添加到字符串

java - 通过计时器在 JDialog 中设置动态 JLabel 文本

java - 如何使 JTable 中的单元格为空,直到单击为止?

java - 如何将 JTable 单元格中的值居中?

java - 如何在jtable中显示部分文本