combate de Java del sistema ama de llaves de facturación (6) - Importación y exportación de funciones para lograr

Esta cláusula general

Esta sección permitirá a los usuarios exportar registros de ingresos y gastos a la tabla Excel, también puede importar de ama de llaves para sobresalir en el sistema contable.

 

exportación

Exportación de registros de usuario a una tabla Excel, no es necesario para poner en práctica las funciones de interfaz de exportación, es un evento desencadenado por un elemento de menú, por lo que el código de la lógica función de exportación escrito en exportMenuItemEvent () puede ser.

    /**
     * “导出”菜单项的事件监听器
     *
     * @param actionEvent 事件
     */
    @FXML
    public void exportMenuItemEvent(ActionEvent actionEvent) {
        String exportPath = null;
        //实例化文件选择器
        FileChooser fileChooser = new FileChooser();
        //打开保存文件选择框
        fileChooser.setInitialFileName("Excel");
        File result = fileChooser.showSaveDialog(null);
        if(result!=null){
            exportPath = result.getAbsolutePath();
            //excel表格表头
            String[] title = {"序号", "类型", "金额", "分类", "备注", "日期"};
            // 获取当前用户的支出记录
            List<Record> recordList = recordDao.selectByUserId(Session.getUser().getUserId());
            // 将支出记录转换成二维数组
            String[][] tableData = new String[recordList.size()][6];
            int j = 0;
            for (Record record : recordList) {
                tableData[j][0] = String.valueOf(record.getRecordId());
                tableData[j][1] = record.getRecordType();
                tableData[j][2] = Float.toString(record.getRecordMoney());
                tableData[j][3] = record.getRecordClassification();
                tableData[j][4] = record.getRecordMemo();
                tableData[j][5] = record.getRecordDate();
                j++;
            }
            //导出路径
            String exportExcelFilePath = SimpleTools.exportExcel(title, tableData, exportPath);
            if (new File(exportExcelFilePath).exists()) {
                SimpleTools.informationDialog(Alert.AlertType.INFORMATION, "提示", "信息", "导出excel成功!");
            } else {
                SimpleTools.informationDialog(Alert.AlertType.ERROR, "提示", "错误", "导出excel失败!");
            }
        }
    }

Obtenido por FileChooser selector de archivos que desea guardar la ruta del archivo y el método para obtener todas las escrituras método de los ingresos y gastos registrados por el usuario RecordDao selectByUserId clase (), y luego llamar a la clase exportExcel SimpleTools () para sobresalir en. Dado que los tres parámetros exportExcel método primer argumento es la cabecera de datos es una matriz unidimensional; segundo parámetro se refiere a la tabla de contenidos, una matriz de dos dimensiones, es necesario convertir el contenido en una matriz de selectByUserId de dos dimensiones para obtener utilizar, en tercer parámetro se refiere ruta de exportación de archivos Excel.

Ejecutar las funciones del programa, de prueba y de exportación:

Abrir el archivo Excel para ver los registros exportados.

img

 

función de importación

función de importación también es manejado por un evento desencadenado por elemento de menú introducido en importMenuItemEvent MainPageController.java cambiará el código con el siguiente método:

    /**
     * “导入”菜单项的事件监听器
     *
     * @param actionEvent 事件
     */
    @FXML
    public void importMenuItemEvent(ActionEvent actionEvent) {
        //实例化文件选择器
        FileChooser fileChooser = new FileChooser();
        //设置默认文件过滤器
        fileChooser.setSelectedExtensionFilter(new FileChooser.ExtensionFilter("excel(*.xls)", "xls", "xlsx"));
        //打开文件选择框,并得到选中的文件
        File result = fileChooser.showOpenDialog(null);
        if(result!=null){
            // 获取绝对路径
            String importPath = result.getAbsolutePath();
            try {
                //读取excel表内容(不包括表头)
                String[][] content = SimpleTools.readExcelContentArray(new FileInputStream(importPath));
                boolean isSuccess = false;
                for (int i = 0; i < content.length; i++) {
                    Record record = new Record();
                    record.setUserId(Session.getUser().getUserId());
                    record.setRecordType(content[i][1]);
                    record.setRecordMoney(Float.parseFloat(content[i][2]));
                    record.setRecordClassification(content[i][3]);
                    record.setRecordMemo(content[i][4]);
                    record.setRecordDate(content[i][5]);
                    //添加数据到数据库
                    isSuccess = recordDao.addRecord(record);
                }
                // 判断是否导入成功
                if (isSuccess) {
                    SimpleTools.informationDialog(Alert.AlertType.INFORMATION, "提示", "信息", "导入excel数据成功");
                    // 刷新界面显示的数据
                    initialize();
                } else {
                    SimpleTools.informationDialog(Alert.AlertType.ERROR, "提示", "错误", "导入excel数据失败");
                }
            } catch (FileNotFoundException e1) {
                e1.printStackTrace();
            }
        }
    }

Utilice el control de FileChooser para abrir el Explorador para seleccionar el archivo que desea importar excel y leer su ruta absoluta, y luego llamar SimpleTools método de clase readExcelContentArray () para leer el contenido de la hoja de Excel, pero no lee el contenido de la cabecera, la lectura de los resultados es una matriz de dos dimensiones, que los bucles a través del paquete y se inserta en el registro de registro de la tabla de clases en la base de datos, el número de filas para insertar el número de registros, después de la función de llamada de inicialización introdujo con éxito initialize () de actualización de los datos de pantalla.

Ejecutar el programa, la función de prueba:

Para importar los datos de prueba de Excel:

Importar consejos de éxito:

cuadro rojo que se registra como datos importados sigue:

grabar datos en funciones de importación y exportación están relacionadas con el uso del paquete poi, como se define en métodos SimpleTools en la clase, si está interesado en la forma de lograr específica, se puede ver el código específico del método a llamar. Si está interesado en la lectura y la escritura, a continuación, puede sobresalir por su cuenta para encontrar información para sus propios métodos de encapsulación uso en Internet.

 

 

número de micro-canales públicos de búsqueda [ programa de ejemplo de Java ] o escanear el código Fanger Wei para obtener más atención del público.

Nota: Responder a [el fondo público número 20200319 ] se puede obtener el código fuente de este capítulo.

Publicados 500 artículos originales · ganado elogios 77 · vistas 160 000 +

Supongo que te gusta

Origin blog.csdn.net/cnds123321/article/details/104275273
Recomendado
Clasificación