本节概要
このセクションでは、また、会計システムに家政婦からExcelにインポートすることができ、Excelの表に収入と支出の輸出レコードにユーザーを可能にします。
輸出
Excelのテーブルにエクスポートユーザレコードは、エクスポートインタフェース機能を実装する必要はありませんexportMenuItemEventに書き込まれたエクスポート機能ロジックコード()メソッドができるように、それは、メニュー項目によってトリガーイベントです。
/**
* “导出”菜单项的事件监听器
*
* @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失败!");
}
}
}
)ユーザーRecordDaoクラスselectByUserId(によって記録されたすべての収入と支出を取得するためにファイルのパスとメソッドを保存したいファイルチューザファイルセレクタによって得られ、その後、exportExcel SimpleToolsクラスを呼び出す()メソッドは、でExcelに書き込みます。三つのパラメータexportExcel方法最初の引数は、データヘッダは、一次元アレイであるので、2番目のパラメータは、コンテンツのテーブルを参照して、二次元アレイは、得るために、二次元アレイselectByUserIdにコンテンツを変換する必要があります使用; 3番目のパラメータは、Excelファイルのエクスポート・パスを意味します。
プログラム、テストおよびエクスポート機能を実行します。
開いているExcelファイルには、エクスポートされたレコードを表示します。
インポート機能
インポート機能は、以下の方法にコードを変更しますimportMenuItemEvent MainPageController.javaで導入されたメニュー項目によってトリガイベントによって処理されます。
/**
* “导入”菜单项的事件监听器
*
* @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();
}
}
}
Excelをインポートし、その絶対パスを読み込みたいファイルを選択するために、エクスプローラを開き、Excelシートの内容を読み取ることが、ヘッダの内容を読んでいない、結果を読み込むSimpleToolsクラスreadExcelContentArray()メソッドの呼び出しに使用チューザコントロールコール初期化機能が正常に画面データの初期化()リフレッシュを導入した後、パッケージをループし、データベースにレコードクラステーブルレコードに挿入された二次元アレイは、行の数は、レコードの数を挿入することです。
プログラム、テスト関数を実行します。
Excelのテストデータをインポートするには:
インポート成功のヒント:
インポートされたデータを次のように記録されている赤いボックス:
クラスのSimpleToolsメソッドで定義されたメソッド呼び出しの特定のコードを表示することができ、特定の達成するためにどのように興味を持っている場合、インポートおよびエクスポート機能への記録データは、ポイパッケージの使用に関連しています。あなたは読み書きに興味がある場合は、インターネット上で独自に使用するカプセル化方式のための情報を見つけるために、自分で秀でることができます。
検索可能な公共のマイクロチャネル番号[ Javaの例のプログラム ]以上の世間の注目を得るためにFanger魏のコード番号をスキャンします。
注: [パブリック数の背景に返信20200319この章のソースコードを入手することができます]。