网站框架搭建设计,南京模板网站建设企业,公司网站建设 阜阳,学院网站建设作用人生如梦 荣华富贵 如木槿之花 朝荣夕逝 需求
导出#xff1a; 能够将库表内的数据导出多个Excel表#xff0c;并且生成一个压缩包#xff0c;提供用户下载导入#xff1a; 能够将一个压缩包内的多个Excel表解压#xff0c;并获取表内的所有数据 FileUtils 工具类
publi… 人生如梦 荣华富贵 如木槿之花 朝荣夕逝 需求
导出 能够将库表内的数据导出多个Excel表并且生成一个压缩包提供用户下载导入 能够将一个压缩包内的多个Excel表解压并获取表内的所有数据 FileUtils 工具类
public class UnitFileUtils {/*** Description: 导入文件(返回文件全部数据)*/public static MapString, ListListString importCsv(File file) throws IOException {String tableName file.getName().replace(.csv, );MapString, ListListString result new HashMap();ListListString dataList new ArrayList();BufferedReader br null;try {br new BufferedReader(new FileReader(file));String line;while ((line br.readLine()) ! null) {String[] data line.split(,);ListString list new ArrayList();for (int i 0; i data.length; i) {list.add(data[i]);}dataList.add(list);}} catch (Exception e) {throw new RuntimeException(e);} finally {br.close();}result.put(tableName, dataList);return result;}/*** Description: 导出文件*/public static void exportCsv(ListListString listData, String tableName, String path) {path path File.separator tableName .csv;try (FileWriter writer new FileWriter(path)) {for (ListString list : listData) {StringBuilder rowData new StringBuilder();for (int i 0; i list.size(); i) {if (i list.size()) {rowData.append(list.get(i));} else {rowData.append(list.get(i)).append(,);}}writer.write(rowData.toString());writer.write(System.lineSeparator());}} catch (IOException ex) {throw new RuntimeException(ex);}}
}Impl 实现类 /*** Description: 文件导入* multipartFile 文件*/Overridepublic void importCsv(MultipartFile multipartFile) throws IOException, SQLException {// 获取导入文件数据ListMapString, ListListString fileDataList transformImportCsv(multipartFile);.../*** Description: 文件数据解析*/public ListMapString, ListListString transformImportCsv(MultipartFile multipartFile) throws IOException, SQLException {// 获取临时文件夹对象File tempDir new File(tempPath);// 如果文件夹不存在则抛出异常if (!tempDir.exists()) {tempDir.mkdirs();}//生成临时文件名称String fileName UUID.randomUUID().toString().replace(-, );//通过multipartFile将压缩文件保存到临时路径String temp FileUtils.saveZipFile(multipartFile, tempPath);//解压zipFileUtils.unzip(temp, tempPath fileName);//读取解压文件File folder new File(tempPath fileName);File[] files folder.listFiles();ListMapString, ListListString fileList new ArrayList();MapString, ListListString fileData null;for (File file : files) {//遍历zip中的csv文件fileData UnitFileUtils.importCsv(file);fileList.add(fileData);}//删除临时文件夹以及压缩文件FileUtils.deleteFileOrDir(temp);FileUtils.deleteFileOrDir(tempPath fileName);return fileList;}/*** Description: 导出文件*/public void exportCsv(HttpServletResponse response, ListString tableNames) {String dirName tempPath File.separator UUID.randomUUID().toString().replace(-, );// 获取临时文件夹对象File tempDir new File(dirName);// 如果文件夹不存在则创建if (!tempDir.exists()) {tempDir.mkdirs();}//导出csv文件到指定文件夹for (String tableName : tableNames) {try {ListListString listData new ArrayList();...UnitFileUtils.exportCsv(listData, unit_sharding_version, path);} catch (Exception e) {throw new RuntimeException(导出表【 tableName 】失败!,e);}}//将文件夹压缩为压缩包FileUtils.zip(dirName, dirName .zip);//通过流返回FileUtils.doGet(dirName .zip, response);//删除临时文件夹以及压缩文件FileUtils.deleteFileOrDir(dirName);FileUtils.deleteFileOrDir(dirName .zip);}