Здравствуйте, в Java новичек, не могу никак записать вывод массива из данных(тот который благополучно отображается в JTable) в workbook1-sheet1
и еще если не затруднит как мне на sheet4 написать формулу для просчета 3 столбца на том самом sheet1 ? Заранее благодарен
PS и workbook1 и sheet1-4 создаются хорошо
вот код с описанием
Java |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
| package javaapplication2;
import java.awt.BorderLayout;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.TableColumn;
import jxl.*;
import jxl.read.biff.BiffException;
import jxl.write.*;
public class JTableResultSet {
//private static Object ColumnsAutoSizer;
//private static jxl.format.CellFormat headerCells;
public static void main(String[] args) throws IOException, BiffException, WriteException {
//тут я создаю документ и листы к ниму прилогающиеся
WritableWorkbook workbook1 = Workbook.createWorkbook(new File("/home/andrey/output2.xls"));
WritableSheet sheet1 = workbook1.createSheet("sheet1", 0);
WritableSheet sheet2 = workbook1.createSheet("sheet2", 0);
WritableSheet sheet3 = workbook1.createSheet("sheet3", 0);
WritableSheet sheet4 = workbook1.createSheet("sheet4", 0);
// это я просто создал тестовый вариант PrintWriter writer(никакого отношения к вопросу не имеет)
PrintWriter writer = new PrintWriter("/home/lexa/the-file-name.xls", "UTF-8");
workbook1.write();
workbook1.close();
System.out.println("File output complete");
//File file = new File("/home/andrey/the-file-name.xls");
//FileWriter output = new FileWriter(file);
Vector columnNames = new Vector();
Vector data = new Vector();
JPanel panel = new JPanel(); //
try {
Class.forName("org.postgresql.Driver").newInstance();
Connection con = DriverManager.getConnection("jdbc:postgresql://localhost:5432/users","postgres", "root");
String sql = "select * from table where column1="2012-2-10 10:10:00"";
Statement statement = con.createStatement();
ResultSet resultSet = statement.executeQuery(sql);
ResultSetMetaData metaData = resultSet.getMetaData();
int columns = metaData.getColumnCount();
for (int i = 1; i <= columns; i++) {
columnNames.addElement(metaData.getColumnName(i));
}
while (resultSet.next()) {
Vector row = new Vector(columns);
for (int i = 1; i <= columns; i++) {
row.addElement(resultSet.getObject(i));
}
// а вот в этом вся соль вопроса(writer.println(row) - отлично работает, но мне бы переместить этот массив на sheet1) (сутки уже парюсь с этим вопросом)
writer.println(row);
data.addElement(row);
}
resultSet.close();
statement.close();
writer.close();
//output.close();
} catch (Exception e) {
System.out.println(e);
}
JTable table = new JTable(data, columnNames);
table.setAutoResizeMode( JTable.AUTO_RESIZE_OFF);
table.getColumnModel().getColumn(0).setPreferredWidth(35);
table.getColumnModel().getColumn(1).setPreferredWidth(150);
table.getColumnModel().getColumn(2).setPreferredWidth(150);
table.getColumnModel().getColumn(3).setPreferredWidth(60);
table.getColumnModel().getColumn(4).setPreferredWidth(60);
table.getColumnModel().getColumn(5).setPreferredWidth(35);
table.getColumnModel().getColumn(6).setPreferredWidth(150);
table.getColumnModel().getColumn(7).setPreferredWidth(150);
table.getColumnModel().getColumn(8).setPreferredWidth(60);
TableColumn column;
for (int i = 0; i < table.getColumnCount(); i++) {
column = table.getColumnModel().getColumn(i);
//writer.println("1");
}
JScrollPane scrollPane = new JScrollPane(table);
panel.add(scrollPane);
JFrame frame = new JFrame();
frame.setLayout(new BorderLayout());
frame.add(scrollPane,BorderLayout.CENTER);
frame.setSize(1200, 800); //setting frame size
//
frame.setVisible(true); //setting visibility true
}
} |
|
и попутный вопрос, как мне добавить текстовое поле для ввода текста( String sql = "select * from table where column1="2012-2-10 10:10:00"";-что бы в текстовом поле было значение 2012-2-10 10:10:00 для запроса ), у меня весь фрейм занимает JTable...пробовал добавлять кнопки на фрейм но они не отображаются
заранее благодарен