如何修改从excel导入的jtable中的数据,然后保存在同一个excel文件中?

问题描述 投票:0回答:0

我已经为此工作了好几天,但是当我尝试修改 JTable 上的数据时,它并没有保存在同一个 excel 文件中。

我试图修改已从 excel 文件导出到 Jtable 的数据,我期望修改后的数据将在 excel 文件上更新。但是,当我运行程序时,已修改的数据不会保存。

代码可能有什么问题?

    import java.awt.Color;
    import java.awt.Component;
    import java.awt.Font;
    import java.awt.Frame;
    import java.awt.event.*;
    import java.awt.image.BufferedImage;
    import java.io.ByteArrayInputStream;
    import java.io.File;
    import java.io.InputStream;
    import java.util.Vector;

    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.table.DefaultTableCellRenderer;
    import javax.swing.table.DefaultTableModel;


    import jxl.Cell;
    import jxl.Sheet;
    import jxl.Workbook;
    import jxl.write.WritableCell;
    import jxl.write.WritableSheet;
    import jxl.write.WritableWorkbook;


    public class modify extends JFrame

    {
        JButton MOD ;
    Vector headers = new Vector();
    Vector data = new Vector();
    
          
public static void main(String[] args)
{
    new  modify();          
}

public modify()

{
JFrame frame = new JFrame();
frame.setLayout(null); 

frame.setSize(3200, 2000);  
frame.setLocation(-8,0); 
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
frame.setTitle("Classroom Attendance");
frame.setResizable(true);


File file = new File("C:\\Sampledata.xls");

try 

{
     
Workbook workbook = Workbook.getWorkbook(new File(file.getAbsolutePath()));
WritableWorkbook workbookCopy = Workbook.createWorkbook(new File("C:\\Sampledata.xls"), workbook);
WritableSheet sheet = workbookCopy.getSheet(0); //to get sheet on excel


headers.clear();

    for (int i = 0; i < sheet.getColumns(); i++) 
    {
        WritableCell cell1 = (WritableCell) sheet.getCell(i, 0);
        headers.add(cell1.getContents());
    }
    
    data.clear();
    
    for (int j = 1; j < sheet.getRows(); j++) 
    {
        Vector d = new Vector();
        
        for (int i = 0; i < sheet.getColumns(); i++) 
        {
        WritableCell cell = (WritableCell) sheet.getCell(i, j);
        d.add(cell.getContents());
        
        }
        
    d.add("\n");
    data.add(d);
    
    }   
    
     workbookCopy.write();
     workbookCopy.close();
     workbook.close();
}

catch (Exception e)
{
e.printStackTrace();
}

JTable table = new JTable();

    DefaultTableModel model = new DefaultTableModel(data,headers);
    table.setAutoCreateRowSorter(true); 
    table.setModel(model);
    
     

JScrollPane scroll = new JScrollPane(table);

scroll.setBounds(500,200,1200,700);
scroll.getViewport().setBackground(Color.WHITE);

MOD = new JButton("MODIFY");
MOD.setFont(new Font("Times new Roman", Font.BOLD, 26));
MOD.setForeground(Color.WHITE);
MOD.setBackground(Color.RED);
MOD.setBorderPainted(true);


MOD.setBounds(1710,800,160,30);


frame.add(scroll);

frame.add(MOD);




frame.setVisible(true);  

} }

java excel jtable xls jxl
© www.soinside.com 2019 - 2024. All rights reserved.