Esta cláusula Overview
Esta seção permitirá que os usuários a registros de exportação de receitas e despesas para a tabela excel, você também pode importar de dona de casa para excel no sistema de contabilidade.
exportação
registros de usuário de exportação para a tabela excel, não precisa implementar funções de interface de exportação, é um evento disparado por um item de menu, de modo que o código da lógica função de exportação escrito em exportMenuItemEvent () método pode 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失败!");
}
}
}
Obtido pela seleção de arquivos FileChooser você deseja salvar o caminho do arquivo e método para obter todas as receitas e despesas registradas pelo usuário RecordDao selectByUserId classe (), então chamada classe exportExcel SimpleTools () escreve método para excel em. Uma vez que os três parâmetros exportExcel método primeiro argumento é o cabeçalho de dados é uma matriz unidimensional, o segundo parâmetro refere-se à tabela de conteúdos, uma matriz bi-dimensional, é necessária para converter o seu conteúdo num selectByUserId matriz bi-dimensional para se obter utilizar; terceiro parâmetro refere-se caminho de exportação de arquivo excel.
Execute o programa funciona, teste e exportação:
Abrir arquivo excel para exibir os registros exportados.
função de importação
recurso de importação também é tratado por um evento acionado por item de menu introduzido em importMenuItemEvent MainPageController.java irá alterar o código com o seguinte 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();
}
}
}
controle do uso FileChooser para abrir Explorer para selecionar o arquivo que deseja importar excel e ler seu caminho absoluto, e depois chamar classe readExcelContentArray método () SimpleTools para ler o conteúdo da folha de excel, mas não ler o conteúdo do cabeçalho, a leitura dos resultados é uma matriz bi-dimensional, que percorre o pacote e inserido na ficha tabela classe ficha na base de dados, o número de linhas para indicar o número de registos, depois da função de inicialização chamada introduzido com sucesso de inicialização () de actualização dos dados do ecrã.
Execute o, função de teste do programa:
Para importar os dados de teste do Excel:
Importar dicas de sucesso:
caixa vermelha que é registrado como segue dados importados:
Gravação de dados sobre as funções de importação e exportação estão relacionados com o uso do pacote poi, conforme definido no métodos SimpleTools na classe, se estiver interessado em como conseguir específico, pode visualizar o código específico do método de chamada. Se você estiver interessado em ler e escrever, então você pode se destacar por conta própria para encontrar informações para os seus próprios métodos de uso de encapsulamento na Internet.
número de micro-canal público pesquisável [ Java exemplo de programa ] ou digitalizar o número de código Fanger Wei para obter mais atenção do público.
Nota: Responder para [o fundo número público 20200319 ] pode obter o código fonte deste capítulo.