Database 如何将excel电子表格导入anylogic数据库,而无需在主启动时使用代码

Database 如何将excel电子表格导入anylogic数据库,而无需在主启动时使用代码,database,anylogic,Database,Anylogic,以前,我已经以常用方式导入了excel电子表格。现在我想通过在main中编写代码来自动获取信息。到目前为止,我已经编写了以下内容来获取单个单元格,但我想了解如何从多行多列中获取信息 insertInto(db_table).columns(db_table.db_column).value(data.getCellNumericValue(“Sheet1”,5,4)).execute()仅用于所有工作表(getNumberOfSheets())、所有列(getLastCellNum(行))和所有

以前,我已经以常用方式导入了excel电子表格。现在我想通过在main中编写代码来自动获取信息。到目前为止,我已经编写了以下内容来获取单个单元格,但我想了解如何从多行多列中获取信息


insertInto(db_table).columns(db_table.db_column).value(data.getCellNumericValue(“Sheet1”,5,4)).execute()

仅用于所有工作表(
getNumberOfSheets()
)、所有列(
getLastCellNum(行)
)和所有行(
getLastRowNum()
)之间的循环


API调用的详细信息,请参见(底部):)

如果您希望通过代码自动上载数据表,而不是依赖AnyLogic复选框,则可以使用以下选项(来自上一个项目的示例):

在上面的代码中,用户可以通过编辑框(ebFileName.getText())选择Excel文件名。模型中已经设置了一些数据库表,这会更新它们

我不得不这样做,因为表太大了,每次启动时只更新表需要30秒。实际上,我的客户确实不需要更改这些表,但希望有一种机制“以防万一”。我们在“实验”窗口中添加了一个按钮,以便他们在启动时根据需要上传


我请求AnyLogic添加一个table.upload()类型的命令来简化这个过程。他们说它在未来版本的开发列表中,但我还没有在他们的发行说明中看到它。

顺便说一句:如果没有具体原因,在模型开始时将整个xls手册加载到AL数据库中并使用SQL从数据库中查询会更简单、更优雅……如果excel电子表格有许多表,我想要一张特别的桌子。此外,当将其加载到数据库中时,列的名称是随机的,您可以选择要导入的图纸/表格。列名与工作表最上面一行中的列名相同。(您必须正确设置Excel格式,并确保第1行是列标题行,其中名称没有空格和非unicode字母),并且所有内容都在帮助中:)您好。你能举一个例子,说明所有的表、列和行的for循环吗
public void importTableDataOnStartup(java.sql.Connection internalDatabaseConnection) throws Exception {
    try (DatabaseDescriptorRegistry r = new DatabaseDescriptorRegistry()) {
        java.sql.Connection cachedSourceConnection;
        cachedSourceConnection = r.getConnection(DatabaseDescriptorFactory.createFileDescriptor( Utilities.findExistingFile("..\\ExcelData\\" + ebFileName.getText() + ".xlsx"), null, ""));
        UtilitiesDatabase.copyDatabaseTable(cachedSourceConnection, internalDatabaseConnection, "\"PhysicianTypes\"", "physician_types");
        UtilitiesDatabase.copyDatabaseTable(cachedSourceConnection, internalDatabaseConnection, "\"PatientFlow\"", "patient_flow");
        UtilitiesDatabase.copyDatabaseTable(cachedSourceConnection, internalDatabaseConnection, "\"Referrals\"", "referrals");
        UtilitiesDatabase.copyDatabaseTable(cachedSourceConnection, internalDatabaseConnection, "\"Incident Patient Rate\"", "incident_patient_rate");
        UtilitiesDatabase.copyDatabaseTable(cachedSourceConnection, internalDatabaseConnection, "\"PatientDeathRates\"", "patient_death_rates");
        traceln("Database import is complete.");
    }
}