我已经为此工作了好几天,但是当我尝试修改 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);
} }