javafx导出Tableview为excel文件按照文件路径保存
时间: 2023-09-21 10:13:41 浏览: 188
好的,你可以使用Apache POI库来生成Excel文件,并使用JavaFX的TableView组件来获取表格数据,然后将数据写入Excel文件中。下面是一个示例代码,你可以参考一下:
```java
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import javafx.collections.ObservableList;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelExporter {
public static void exportTableToExcel(TableView<?> tableView, String filePath) throws IOException {
// 创建工作簿
XSSFWorkbook workbook = new XSSFWorkbook();
// 创建工作表
String sheetName = "Sheet1";
workbook.createSheet(sheetName);
// 获取表格数据
ObservableList<?> items = tableView.getItems();
// 获取表格列
List<TableColumn<?, ?>> columns = tableView.getColumns();
// 创建表头行
Row headerRow = workbook.getSheet(sheetName).createRow(0);
// 写入表头
for (int i = 0; i < columns.size(); i++) {
TableColumn<?, ?> column = columns.get(i);
String columnName = column.getText();
Cell cell = headerRow.createCell(i);
cell.setCellValue(columnName);
}
// 写入数据
for (int i = 0; i < items.size(); i++) {
Object item = items.get(i);
Row row = workbook.getSheet(sheetName).createRow(i + 1);
for (int j = 0; j < columns.size(); j++) {
TableColumn<?, ?> column = columns.get(j);
String propertyName = ((PropertyValueFactory<?, ?>) column.getCellValueFactory()).getProperty();
Object value = column.getCellData(item);
Cell cell = row.createCell(j);
if (value != null) {
if (value instanceof Number) {
cell.setCellType(CellType.NUMERIC);
cell.setCellValue(((Number) value).doubleValue());
} else {
cell.setCellType(CellType.STRING);
cell.setCellValue(value.toString());
}
}
}
}
// 保存文件
File file = new File(filePath);
file.getParentFile().mkdirs();
try (FileOutputStream outputStream = new FileOutputStream(file)) {
workbook.write(outputStream);
}
}
}
```
在上面的代码中,`exportTableToExcel`方法接受一个TableView和一个文件路径作为参数,然后将TableView中的数据写入Excel文件,并保存到指定的文件路径下。
你可以使用以下代码来调用这个方法并导出TableView:
```java
TableView<MyData> tableView = new TableView<>();
// 添加表格列和数据
// ...
String filePath = "path/to/excel/file.xlsx";
ExcelExporter.exportTableToExcel(tableView, filePath);
```
希望这个回答对你有所帮助!如果你有其他问题,可以随时问我。
阅读全文