JTable将值传递给excel(文本格式)

时间:2012-04-23 14:27:40

标签: 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类将resaults导出到excel时,我获得了带有外观的单元格中的值

<html><strike>some text</strike></html>
在删除线中

而不是一些文本。 关于如何解决这种格式问题的任何重新解释? 我通过带有循环的jtable中的单元格传递excel单元格中的单元格。 谢谢!

2 个答案:

答案 0 :(得分:1)

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. 
         */
    }
  }
}

答案 1 :(得分:0)

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

<html> 
    and
<strike>

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

您使用哪种API将其导出为Excel格式? 我认为这将是您用于导出到Excel的特定内容。