hi , i have done a program that allows user to inout data through jtable and save it to excel file then read it again .. the problem is , when data is saved , the extension file is changed to excel file with text ( tab limited ) type , if i read it as it is it throughs an exceeption so i should save that file as ... excel 2.1 work sheet at first then read it back ..
Whats the solution ? i tried to make the default type 2.1 work sheet from excel tools but didnt work
import java.io.*; import java.awt.*; import javax.swing.*; import java.awt.event.*; import javax.swing.table.*; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFCell; public class JTableToExcel{ JTable table; JButton button; public static void main(String[] args) { new JTableToExcel(); } public JTableToExcel(){ JFrame frame = new JFrame("Getting Cell Values in JTable"); JPanel panel = new JPanel(); String data[][] = {{"Angelina","Mumbai"},{"Martina","Delhi"}}; String col[] = {"Name","Address"}; DefaultTableModel model = new DefaultTableModel(data, col); table = new JTable(model); JScrollPane pane = new JScrollPane(table); button=new JButton("Submit"); button.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent ae){ HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet("Excel Sheet"); int index=0; int count=table.getRowCount(); try{ for(int i=0;i<count;i++){ Object obj1 = GetData(table, i, 0); Object obj2 = GetData(table, i, 1); String value1=obj1.toString(); String value2=obj2.toString(); HSSFRow row = sheet.createRow((short)index); row.createCell((short) 0).setCellValue(value1); row.createCell((short) 1).setCellValue(value2); index++; } FileOutputStream fileOut = new FileOutputStream("c:\\Hello.xls"); wb.write(fileOut); fileOut.close(); Runtime rt = Runtime.getRuntime(); rt.exec("cmd.exe /C start C:\\Hello.xls"); } catch(Exception e){} } }); panel.add(pane); panel.add(button); frame.add(panel); frame.setSize(650,350); frame.setUndecorated(true); frame.getRootPane().setWindowDecorationStyle(JRootPane.PLAIN_DIALOG); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public Object GetData(JTable table, int row_index, int col_index){ return table.getModel().getValueAt(row_index, col_index); } }
Ads