我基本上是从我的数据库中获取行并将它们作为行粘贴到我的excel文件中。它有点简单,因为没有任何数据转换。这是我的代码(最重要的部分):
XSSFSheet chart1_sheet = wb.createSheet("Chart1");
String strss_chart[] = {"dataa", "inn", "closed", "application"};
hed_row = chart1_sheet.createRow(0);
for_each_header(hed_row, strss_chart);
sql = "select dataa, inn, closed, application from Chart1";
statement = conn.prepareStatement(sql);
resultSet = statement.executeQuery();
row = 1;
while(resultSet.next())
{
Row dataRow = chart1_sheet.createRow(row);
for_each_row_func(dataRow, resultSet, strss_chart);
row = row + 1;
}
我的两个职能:
public static void for_each_row_func(Row dataRow, ResultSet resultSet, String [] strs) throws Exception
{
int i = 0;
for(String str : strs)
{
dataRow.createCell(i).setCellValue(resultSet.getString(str));
i += 1;
}
}
public static void for_each_header(Row dataRow, String [] strs) throws Exception
{
int i = 0;
for(String str : strs)
{
//dataRow.createCell(i).setCellValue(resultSet.getString(str));
dataRow.createCell(i).setCellValue(str);
i += 1;
}
}
我的最终目标是根据这些数据创建图表,但要做到这一点,我需要数据 NOT ,如下所示:
Column1 Column2 Column3
Data1 Data2 Data3
Data4 Data5 Data6
但是像这样:
Column1 Data1 Data4
Column2 Data2 Data5
Column3 Data3 Data6
在Java Poi中有没有办法做到这一点?
答案 0 :(得分:2)
我记得在POI中你需要创建第一行,而不是列作为单元格。 所以 - 在你的情况下,你需要创建3行实例
Row row1 = chart1_sheet.createRow(1);
Row row2 = chart1_sheet.createRow(2);
Row row3 = chart1_sheet.createRow(3);
比填充标题
row1.createCell(1).setCellValue(str[0]);
row2.createCell(1).setCellValue(str[1]);
row3.createCell(1).setCellValue(str[2]);
而不是n次迭代填充数据
rownum = 2;
while(resultSet.next())
{
row1.createCell(rownum).setCellValue(resultSet.getString(1));
row2.createCell(rownum).setCellValue(resultSet.getString(2));
row3.createCell(rownum).setCellValue(resultSet.getString(3));
rownum++;
}
您可以将所有行放入集合中 附:抱歉,我的电脑上没有任何Java IDE - 可能在语法上有些错误。试图描述算法