所以我目前有这个代码经过一个while循环并从"结果集对象中读取以下字段" (JDBC的东西)。
要读取和填充的字段:eNumber,eName。
while (rs.next()) {
ArrayList<String> eRow = new ArrayList<String>();
String eNumber = rs.getString("ENTRYNUMBER");
String eventName = rs.getString("EVENTNAME");
//String
System.out.println("entryNumber: " + eNumber + "\t" + "eventName: " +eName );
eRow.add(eNumber);
eRow.add(eName);
}
我的问题 - 如何将两个变量写入同一行的两个不同单元格,然后在while循环中重复?然后导出到excel。我想我需要一个阵列,但在此之后我就陷入困境。
例如:
答案 0 :(得分:0)
这会有用吗?
eRow.add(eNumber+","+eName);
答案 1 :(得分:0)
您可能需要将两者都添加到同一索引中,可能使用分隔符:
eRow.add(eNumber + '#' + eName); // just chose '#' as unlikely to be used
然后,您可以使用eRow.toArray()
方法将数组转换为单个列,最后使用Text to Columns将数据再次拆分。
或者你可以循环播放arraylist(预警,我无用作为java,所以这可能实际上没有运行,但应该让你知道我的意思):
// ... your code
String[] splitVals;
for (int i = 1; i <= eRow.Count; i++){
splitVals = eRow[i].Split('#');
setCellValue(splitVals[0], i, 1);
setCellValue(splitVals[1], i, 2);
}
// ... some more code ...
public void setCellValue(String val, int row, int col) {
if (!this.isLoaded) {
return;
}
Dispatch cellRef = Dispatch.invoke(activeSheet, "Cells", Dispatch.Get, new Object[]{++row, ++col}, new int[1]).toDispatch();
Dispatch.put(cellRef, "Value", val);
}
答案 2 :(得分:0)
您可能需要重新编写代码,如下所示。
ArrayList<HashMap<String, String>> eRow = new ArrayList<HashMap<String, String>>();
while (rs.next()) {
String eNumber = rs.getString("ENTRYNUMBER");
String eName = rs.getString("EVENTNAME");
//String
System.out.println("entryNumber: " + eNumber + "\t" + "eventName: " +eName );
HashMap<String, String> row = new HashMap<String, String>();
row.put(eNumber, eName);
eRow.add(row);
}
编辑1: 您可以遍历您的eRow并将值写入cvs文件,如下所示
FileWriter fw = new FileWriter("file.csv");
for (HashMap<String, String> map : eRow)
{
for (Entry<String, String> entry : map.entrySet())
{
fw.write(entry.getKey() + "," + entry.getValue() + " \n");