public class SpreadsheetGenerator {
void dailyreport( Connection con) throws SQLException, IOException {
Statement statement = con.createStatement();
ResultSet resultSet = null;
try {
resultSet = statement.executeQuery("select * from ssa_msg_daily");
} catch (Exception e) {
} finally {
ResultSet resultSet = statement.executeQuery("select * from ssa_msg_daily");
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet spreadsheet = workbook.createSheet("employe db");
XSSFRow row = spreadsheet.createRow(1);
XSSFCell cell;
cell = row.createCell(1);
cell.setCellValue("id");
cell = row.createCell(2);
cell.setCellValue("Sender");
cell = row.createCell(3);
cell.setCellValue("Service");
cell = row.createCell(4);
cell.setCellValue("Message_identifier");
cell = row.createCell(5);
cell.setCellValue("Date");
cell = row.createCell(6);
cell.setCellValue("Incoming");
cell = row.createCell(7);
cell.setCellValue("Outgoing");
int i = 2;
while (resultSet.next()) {
row = spreadsheet.createRow(i);
cell = row.createCell(1);
cell.setCellValue(resultSet.getInt("id"));
cell = row.createCell(2);
cell.setCellValue(resultSet.getString("Sender"));
cell = row.createCell(3);
cell.setCellValue(resultSet.getString("Service"));
cell = row.createCell(4);
cell.setCellValue(resultSet.getString("Message_identifier"));
cell = row.createCell(5);
cell.setCellValue(resultSet.getDate("Date"));
cell = row.createCell(6);
cell.setCellValue(resultSet.getString("Incoming"));
cell = row.createCell(7);
cell.setCellValue(resultSet.getString("Outgoing"));
i++;
}
FileOutputStream out = new FileOutputStream(new File("exceldatabase.xlsx"));
workbook.write(out);
out.close();
System.out.println("exceldatabase.xlsx written successfully");
}
}
}
这里ssa_msg_daily在表中包含空值或空值,因此
在编译时,我得到的错误如下:
线程“main”java中出现异常。lang.NoSuchFieldError:返回_NULL_和_BLANK
在@XSSF工作簿=新建XSSF工作簿()时发生;我如何处理这种情况?我正在使用resultset使用ApachePOI转换为spreedsheet
也许你会用“try”和“catch”来尝试。
public class SpreadsheetGenerator {
void dailyreport( Connection con) throws SQLException, IOException {
Statement statement = con.createStatement();
ResultSet resultSet = null;
try {
resultSet = statement.executeQuery("select * from ssa_msg_daily");
} catch (Exception e) {
}
//ResultSet resultSet = statement.executeQuery("select * from ssa_msg_daily");
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet spreadsheet = workbook.createSheet("employe db");
XSSFRow row = spreadsheet.createRow(1);
XSSFCell cell;
cell = row.createCell(1);
cell.setCellValue("id");
cell = row.createCell(2);
cell.setCellValue("Sender");
cell = row.createCell(3);
cell.setCellValue("Service");
cell = row.createCell(4);
cell.setCellValue("Message_identifier");
cell = row.createCell(5);
cell.setCellValue("Date");
cell = row.createCell(6);
cell.setCellValue("Incoming");
cell = row.createCell(7);
cell.setCellValue("Outgoing");
int i = 2;
if(resultSet!=null){
while (resultSet.next()) {
row = spreadsheet.createRow(i);
cell = row.createCell(1);
cell.setCellValue(resultSet.getInt("id"));
cell = row.createCell(2);
cell.setCellValue(resultSet.getString("Sender"));
cell = row.createCell(3);
cell.setCellValue(resultSet.getString("Service"));
cell = row.createCell(4);
cell.setCellValue(resultSet.getString("Message_identifier"));
cell = row.createCell(5);
cell.setCellValue(resultSet.getDate("Date"));
cell = row.createCell(6);
cell.setCellValue(resultSet.getString("Incoming"));
cell = row.createCell(7);
cell.setCellValue(resultSet.getString("Outgoing"));
i++;
}}
FileOutputStream out = new FileOutputStream(new File("exceldatabase.xlsx"));
workbook.write(out);
out.close();
System.out.println("exceldatabase.xlsx written successfully");
}
}
}
您遇到了类路径问题。您的类路径上有Apache POI项目的混合版本。这种版本组合导致其中一个类的较新版本尝试与较旧版本之一通信,但它们不兼容。
解决方案是检查类路径(因此,如果您使用的是maven、gradle或其他依赖系统,那么就是依赖链),并对其进行修复。这可能很简单,就像在构建系统上运行“clean”命令一样。
NB:您的代码风格非常糟糕——不要在最终块中放置大量代码。此外,您的粘贴中有99.9%是转移注意力的。这一行已经会导致您的问题:
XSSFWorkbook workbook = new XSSFWorkbook();
其余的都无关紧要。
问题内容: 我正在尝试运行Java应用程序,但出现此错误: 冒号到达后,缺少该类的位置。但是,我知道该位置不存在,因为该类位于其他位置。如何更新该课程的路径?它与类路径有关吗? 问题答案: 类路径是要从中加载类的位置的列表。 这些“位置”可以是目录,也可以是jar文件。 对于目录,JVM将遵循预期的模式加载类。如果我的类路径中有目录C:/ myproject / classes,并且尝试加载类co
线程“main”java.lang.ArithmeticException中出现异常:/by zero at run.prg34.main(prg34.java:8) 如何在java中解决上述算法异常?
问题内容: 我正在尝试在Java程序中阅读标准输入。我期望一系列数字后跟换行符,例如: 当通过eclipse内置控制台提供输入时,一切都会顺利进行。但是,使用Windows命令行时,程序将输出: 我的代码是: 有什么线索吗? 问题答案: 得到a 表示相关对象已到达EOF(文件末尾),或者换句话说,它们无法再获得任何标准输入。现在,您的代码明显的问题是: 的每个方法调用都会创建一个 新的 。 每个这
首先,我看到有其他帖子也有这个问题,但没有人有和我一样的问题,即签名。verify()意外返回了false。 这是我的代码: 下面是我如何读入键(如果需要):
我正在尝试用Java解决一个ODE,到目前为止,我已经尝试了两个不同的库。我最信任的是Apache Commons Math,然而,即使是简单的问题,我似乎也得不到正确的解。 当我在Mathematica中求解系统时,我得到了这样的结果: 如果我用Apache Commons Math中的Dormand-Prince8(5,3)求解器求解,我会得到以下结果:
问题内容: 在Java中是否可以从方法返回两个或多个值到main?如果是这样,有可能吗?如果没有,我们怎么办? 问题答案: 你可以使用Java返回Class的对象。 如果要返回多个相关的值,则将它们封装到一个类中,然后返回该类的对象是有意义的。 如果要返回不相关的值,则可以使用Java的内置容器类(例如Map,List,Set等)。有关更多详细信息,请检查java.util包的JavaDoc。