提炼公共方法 String fileName = TestFileUtil.getPath() + "demo" + File.separator + "demo.xlsx"; // 这里 需要指定读用哪个class去读,然后读取第一个sheet 同步读取会自动finish List<DemoData> list = EasyExcel.read(fileName).head(DemoData.class).sheet().doReadSync(); for (DemoData data : list) { log.info("读取到数据:{}", JSON.toJSONString(data)); }
时间: 2024-02-24 17:54:07 浏览: 191
将读取 Excel 文件的代码封装成一个公共方法,可以提高代码的复用性和可维护性,示例代码如下:
```java
public static <T> List<T> readExcel(String filePath, Class<T> clazz) {
String fullPath = TestFileUtil.getPath() + filePath;
List<T> list = EasyExcel.read(fullPath).head(clazz).sheet().doReadSync();
return list;
}
```
使用示例:
```java
List<DemoData> list = readExcel("demo/demo.xlsx", DemoData.class);
for (DemoData data : list) {
log.info("读取到数据:{}", JSON.toJSONString(data));
}
```
这样,每次读取 Excel 文件时只需要调用 `readExcel` 方法,传入文件路径和要读取的类即可。
相关问题
TestFileUtil.getPath() + "demo" + File.separator + "fill" + File.separator + "list.xlsx";
根据您提供的代码片段 `TestFileUtil.getPath() + "demo" + File.separator + "fill" + File.separator + "list.xlsx"`,它是在构建一个文件路径字符串。
假设 `TestFileUtil.getPath()` 返回的是一个有效的路径字符串(例如:`/path/to`),`demo`、`fill` 和 `list.xlsx` 是文件夹和文件的名称。
在这种情况下,使用 `File.separator` 是一个良好的实践,它会根据操作系统自动选择正确的路径分隔符(例如:在 Windows 上是反斜杠 `\`,在 Linux 上是正斜杠 `/`)。
最终的文件路径将是类似于 `/path/to/demo/fill/list.xlsx` 的形式。
您可以使用此文件路径来进行后续的文件操作,例如读取、写入或传递给 EasyExcel 等库。
希望这能帮到您!如果有任何进一步的问题,请随时提问。
//File file=new File(this.getClass().getResource("/").getPath()+"template"+File.separator+"receipt.xlsx"); // File file=new File(this.getClass().getResourceAsStream("/template/receipt.xlsx"); InputStream inputStream = this.getClass().getResourceAsStream("/template/receipt.xlsx"); File file = new File("路径/文件名.xlsx"); // 请替换为你想要保存的路径和文件名 response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); String fileName = URLEncoder.encode("电力收费系统报表 - 电费收据.xlsx", "utf-8"); response.setHeader("Content-disposition", "attachment; filename=" + new String(fileName.getBytes("UTF-8"), "ISO-8859-1")); out = response.getOutputStream(); bos = new BufferedOutputStream(out); //读取Excel ExcelWriter excelWriter = EasyExcel.write(bos).withTemplate(file.getPath()).build(); WriteSheet writeSheet = EasyExcel.writerSheet().build(); // 写入Excel数据 //excelWriter.fill(exporChargeUsers, writeSheet); excelWriter.fill(map, writeSheet); excelWriter.finish(); bos.flush();服务器导出没数据
根据你提供的代码,问题可能出在以下几个地方:
1. 数据填充问题:你使用了 EasyExcel 库来进行数据填充。请确保 `map` 对象中存储了正确的数据,并且模板文件中的字段与 `map` 中的键名相匹配。如果你使用了 `excelWriter.fill(exporChargeUsers, writeSheet)` 方法,那么请确保 `exporChargeUsers` 对象中存储了正确的数据。
2. 路径问题:请确保你将 `"路径/文件名.xlsx"` 替换为实际的导出路径和文件名,确保路径正确,并且你有写入该路径的权限。
3. 模板文件问题:请确保模板文件 `receipt.xlsx` 存在于 `/template/` 目录下,并且该目录位于你的类路径下。
4. 输出流问题:请确保 `bos` 对象和 `out` 对象正确地与服务器的输出流建立关联,并且在写入数据后调用了 `bos.flush()` 方法来刷新输出流。
如果你仍然遇到问题,建议逐步调试代码,打印相关变量和日志信息,以便更好地定位问题所在。
阅读全文