gpt4 book ai didi

java - 在excel文件中导出Jtable

转载 作者:搜寻专家 更新时间:2023-10-31 19:55:20 25 4
gpt4 key购买 nike

嗨,我是 Java 编程的新手,但这是我的问题我正在设计进行一些计算的 GUI,需要在 J 表中显示输入和输出,然后将它们导出到 excel 文件中

代码工作起来很有魅力,但是当我打开 excel 文件时,我发现它是空的..

j表

import java.awt.Desktop;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import javax.swing.JFileChooser;


public class Export extends javax.swing.JFrame {


public Export() {
initComponents();
}


@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jScrollPane1 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();
jButton1 = new javax.swing.JButton();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{"Channel Model", global.channel_model, global.channel_model},
{"System Bandwidth (MHz)", global.band_width_index, global.band_width_index},
{"Cell Edge Rate (Kbps)", global.Rreq_UL, global.Rreq_DL},
{"Cell edge MCS", global.mcs, global.mcs},
{"Antenna Configuration", global.DL_antenna_config, global.DL_antenna_config},
{"Total RB Number", global.number_of_RB, global.number_of_RB},

{"Tx", "", null},
{"Max Power (dBm)", global.UE_Tx_power, global.UE_Tx_power},
{"Cable Loss (dB)", global.cable_loss, global.cable_loss},
{"Body Loss (dB)", global.body_loss, global.body_loss},
{"Antenna Gain (dB)", global.UE_antennaGain, global.UE_antennaGain},
{"EIRB (dB)", "", null},
{"Rx", null, null},
{"Antenna Gain (dB)", global.UE_antennaGain, global.UE_antennaGain},
{"Cable Loss (dB)", global.cable_loss, global.cable_loss},
{"Body Loss (dB)", global.body_loss, global.body_loss},
{"Noise Figure (dB)", global.UE_noiseFigure, global.UE_noiseFigure},
{"Thermal Noise (dB)", null, null},
{"Interference Margin (dB)", global.Biul, global.Bidl},
{"SINR (dB)", global.SINR, global.DL_SINR},
{"Reciver Sensitivty (dB)", "", null},
{"MAPL", null, null},
{"Diversity (dB)", global.Tx_diversity_gain, global.Tx_diversity_gain},

{"Shadow Fading Margin (dB)", global.shadow_margin, global.shadow_margin},
{"MAPL (dB)", null, null},
{"Cell Radius (Km)", global.R, global.R},
{"Area of Dimensioning (Km squar", global.site_area, global.site_area},
{"Site Type", global.type_of_site, global.type_of_site},
{"Number of Sites Due to Coverage", "", null}
},
new String [] {
"Summary", "Uplink", "Downlink"
}
));
jTable1.setName("Export");
jScrollPane1.setViewportView(jTable1);
jTable1.getAccessibleContext().setAccessibleName("\"Export\"");
jTable1.getAccessibleContext().setAccessibleDescription("");

jButton1.setText("Export");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap(562, Short.MAX_VALUE)
.addComponent(jButton1)
.addContainerGap())
.addComponent(jScrollPane1)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 455, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton1)
.addGap(0, 0, Short.MAX_VALUE))
);

pack();
}// </editor-fold>

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try{
JFileChooser fileChooser = new JFileChooser();
int retval = fileChooser.showSaveDialog(jButton1);

if (retval == JFileChooser.APPROVE_OPTION) {
File file = fileChooser.getSelectedFile();
if (file != null) {
if (!file.getName().toLowerCase().endsWith(".xls")) {
file = new File(file.getParentFile(), file.getName() + ".xls");



}

try {
ExcelExporter exp=new ExcelExporter();
exp.exportTable(jTable1, file);


Desktop.getDesktop().open(file);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();

} catch (FileNotFoundException e) {
e.printStackTrace();
System.out.println("not found");
} catch (IOException e) {
e.printStackTrace();
}
}
}


}catch(Exception e){
System.out.println("shit");
}

}

public static void main(String args[]) {
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(Export.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(Export.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(Export.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(Export.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 Export().setVisible(true);
}
});
}

// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable jTable1;
// End of variables declaration
}

excel生成器类

import java.io.*;
import javax.swing.table.TableModel;
import javax.swing.*;


public class ExcelExporter {
ExcelExporter(){}
public void exportTable(JTable jTable1,File file) throws IOException{
TableModel model=jTable1.getModel();
FileWriter out=new FileWriter(file);
BufferedWriter bw=new BufferedWriter(out);
for (int i=0;i<model.getColumnCount();i++){
bw.write(model.getColumnName(i)+"\t");
}
bw.write("\n");
for (int i=0;i<model.getRowCount();i++){
for (int j=0;j<model.getColumnCount();j++){
bw.write(model.getValueAt(i,j).toString()+"\t");
}
bw.write("\n");
}
bw.close();
System.out.print("Write out to"+file);


}
}

最佳答案

正如推荐的那样,Apache POI 是一个非常好的用于操作和创建 Excel 文档的 API。它是免费和开源的,因此易于使用。如果您尝试一下,那么这里是您可以创建文件的一种方法:

private static void writeToExcell(JTable table, Path path) throws FileNotFoundException, IOException {
new WorkbookFactory();
Workbook wb = new XSSFWorkbook(); //Excell workbook
Sheet sheet = wb.createSheet(); //WorkSheet
Row row = sheet.createRow(2); //Row created at line 3
TableModel model = table.getModel(); //Table model


Row headerRow = sheet.createRow(0); //Create row at line 0
for(int headings = 0; headings < model.getColumnCount(); headings++){ //For each column
headerRow.createCell(headings).setCellValue(model.getColumnName(headings));//Write column name
}

for(int rows = 0; rows < model.getRowCount(); rows++){ //For each table row
for(int cols = 0; cols < table.getColumnCount(); cols++){ //For each table column
row.createCell(cols).setCellValue(model.getValueAt(rows, cols).toString()); //Write value
}

//Set the row to the next one in the sequence
row = sheet.createRow((rows + 3));
}
wb.write(new FileOutputStream(path.toString()));//Save the file
}

另一种方法是学习 Microsoft Excel 文件规范,然后以这种方式手动创建 Excel 文件。您现在正在做的是将表中的数据写入文件,但不是以 Excel 应用程序可以理解的任何方式。

关于java - 在excel文件中导出Jtable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22560566/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com