Gente, Estou achando que esse erro é por causa que estou usando o DefaultTableModel
import Auxiliar.NoteFileGen4;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import jxl.*;
import jxl.write.*;
import jxl.write.biff.RowsExceededException;
/**
*
* @author André
*/
public class ControleEscrita {
public View view;
public ControleEscrita(View v)
{
view = v;
}
public boolean escreverApenasNaTabela(String cpf,String parceiro,String dataHora,int row)
{
boolean errorHappened = false; //Informa se Ocorreu um Erro
view.setValueAt(cpf, row,0);
view.setValueAt(dataHora, row,1);
view.setValueAt(parceiro, row,2);
row = row + 1;
view.setLastRow(row);
return errorHappened;
}
public boolean criarArquivoExcel(JTable table) throws RowsExceededException, WriteException
{
boolean errorHappened = false; //Informa se Ocorreu um Erro
ControleDataHora controleDataHora = new ControleDataHora();
String nomeDoArquivo = controleDataHora.getApenasData();
nomeDoArquivo = nomeDoArquivo + ".xls";
System.out.println("" + nomeDoArquivo);
try {
File arquivo = new File(nomeDoArquivo);
WritableWorkbook workbook1 = Workbook.createWorkbook(arquivo);
WritableSheet sheet1 = workbook1.createSheet("First Sheet", 0);
TableModel model = table.getModel();
for (int i = 0; i < model.getColumnCount(); i++)
{
Label column = new Label(i, 0, model.getColumnName(i));
sheet1.addCell(column);
}
int j = 0;
for (int i = 0; i < model.getRowCount(); i++) {
for (j = 0; j < model.getColumnCount(); j++) {
Label row = new Label(j, i + 1,model.getValueAt(i, j).toString());
sheet1.addCell(row);
}
}
workbook1.write();
workbook1.close();
}catch (IOException ex) {
Logger.getLogger(ControleEscrita.class.getName()).log(Level.SEVERE, null, ex);
System.out.println("" + ex.getMessage());
}
return errorHappened;
}
public boolean arquivoExcelExiste()
{
boolean existe = false; //
NoteFileGen4 nfg = new NoteFileGen4();
ControleDataHora controleDataHora = new ControleDataHora();
String nomeDoArquivo = controleDataHora.getApenasData();
existe = nfg.TestFileExistence(nomeDoArquivo);
return existe;
}
}
Minha View que fiz no Netbeans:
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JTable;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
/**
*
* @author André
*/
public class View extends javax.swing.JFrame {
private int lastRow = 0;
public ControleDataHora controleDataHora = new ControleDataHora();
public ControleEscrita controleEscrita = new ControleEscrita(this);
public ControleLeitura controleLeitura = new ControleLeitura();
/**
* Creates new form View
*/
public View() {
initComponents();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
jTable_OC = new javax.swing.JTable();
jTextField_CPF = new javax.swing.JTextField();
jLabel_CPF = new javax.swing.JLabel();
jTextField_Parceiro = new javax.swing.JTextField();
jLabel_Parceiro = new javax.swing.JLabel();
jTextField_DataHora = new javax.swing.JTextField();
jButton_GerarDataHora = new javax.swing.JButton();
jButton_InserirCadastrar = new javax.swing.JButton();
jLabel_Author = new javax.swing.JLabel();
jSeparator1 = new javax.swing.JSeparator();
jButton_Salvar = new javax.swing.JButton();
jMenuBar1 = new javax.swing.JMenuBar();
jMenu1 = new javax.swing.JMenu();
jMenu2 = new javax.swing.JMenu();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jTable_OC.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
jTable_OC.setFont(new java.awt.Font("Times New Roman", 0, 14)); // NOI18N
jTable_OC.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"CPF", "Data/Hora", "Parceiro", "#ID"
}
) {
boolean[] canEdit = new boolean [] {
false, false, false, false
};
public boolean isCellEditable(int rowIndex, int columnIndex) {
return canEdit [columnIndex];
}
});
jTable_OC.setIntercellSpacing(new java.awt.Dimension(1, 2));
jTable_OC.setRowHeight(18);
jScrollPane1.setViewportView(jTable_OC);
jLabel_CPF.setText("CPF");
jLabel_Parceiro.setText("Parceiro");
jTextField_DataHora.setEditable(false);
jButton_GerarDataHora.setText("Gerar Data/Hora");
jButton_GerarDataHora.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton_GerarDataHoraActionPerformed(evt);
}
});
jButton_InserirCadastrar.setText("Inserir/Cadastrar ");
jButton_InserirCadastrar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton_InserirCadastrarActionPerformed(evt);
}
});
jLabel_Author.setText("NULL");
jButton_Salvar.setText("Salvar");
jButton_Salvar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton_SalvarActionPerformed(evt);
}
});
jMenu1.setText("File");
jMenuBar1.add(jMenu1);
jMenu2.setText("Edit");
jMenuBar1.add(jMenu2);
setJMenuBar(jMenuBar1);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 644, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addGroup(layout.createSequentialGroup()
.addComponent(jTextField_CPF, javax.swing.GroupLayout.PREFERRED_SIZE, 150, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(30, 30, 30)
.addComponent(jLabel_CPF, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addComponent(jTextField_Parceiro, javax.swing.GroupLayout.PREFERRED_SIZE, 150, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(30, 30, 30)
.addComponent(jLabel_Parceiro, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addComponent(jTextField_DataHora, javax.swing.GroupLayout.PREFERRED_SIZE, 150, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(jButton_GerarDataHora))
.addComponent(jSeparator1)
.addComponent(jButton_InserirCadastrar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel_Author, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 161, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(jButton_Salvar, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(0, 14, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jTextField_CPF, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel_CPF, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jTextField_Parceiro, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel_Parceiro, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jTextField_DataHora, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton_GerarDataHora, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(jButton_InserirCadastrar, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(65, 65, 65)
.addComponent(jButton_Salvar, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(71, 71, 71)
.addComponent(jLabel_Author, javax.swing.GroupLayout.PREFERRED_SIZE, 22, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 460, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(0, 9, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
private void jButton_GerarDataHoraActionPerformed(java.awt.event.ActionEvent evt) {
String gerarDataHora = controleDataHora.gerarDataHora();
jTextField_DataHora.setText(gerarDataHora);
}
private void jButton_InserirCadastrarActionPerformed(java.awt.event.ActionEvent evt) {
if(("".equals(jTextField_DataHora.getText()) ) || jTextField_DataHora.getText() == null)
{
String gerarDataHora = controleDataHora.gerarDataHora();
jTextField_DataHora.setText(gerarDataHora);
}
String cpf = jTextField_CPF.getText();
String dataHora = jTextField_DataHora.getText();
String parceiro = jTextField_Parceiro.getText();
// public boolean escreverApenasNaTabela(String cpf,String parceiro,String dataHora,int row)
controleEscrita.escreverApenasNaTabela(cpf,parceiro,dataHora,getLastRow());
}
private void jButton_SalvarActionPerformed(java.awt.event.ActionEvent evt) {
try {
final JTable j = jTable_OC;
controleEscrita.criarArquivoExcel(j);
} catch (RowsExceededException ex) {
System.out.println("" + ex.getMessage());
} catch (WriteException ex) {
System.out.println("" + ex.getMessage());
}
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(View.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(View.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(View.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(View.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new View().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton jButton_GerarDataHora;
private javax.swing.JButton jButton_InserirCadastrar;
private javax.swing.JButton jButton_Salvar;
private javax.swing.JLabel jLabel_Author;
private javax.swing.JLabel jLabel_CPF;
private javax.swing.JLabel jLabel_Parceiro;
private javax.swing.JMenu jMenu1;
private javax.swing.JMenu jMenu2;
private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JSeparator jSeparator1;
private javax.swing.JTable jTable_OC;
private javax.swing.JTextField jTextField_CPF;
private javax.swing.JTextField jTextField_DataHora;
private javax.swing.JTextField jTextField_Parceiro;
// End of variables declaration
public void setValueAt(String data,int row,int Column)
{
jTable_OC.setValueAt(data, row, Column);
}
public int getLastRow() {
return lastRow;
}
public void setLastRow(int lastRow) {
this.lastRow = lastRow;
}
}