在线音乐网站开发php,邯郸研情网络科技有限公司,做设计网站的工作内容,网站可以制作iosJava实现Csv文件导入导出
什么是.csv文件#xff1f;
CSV#xff08;Comma-Separated Values#xff0c;逗号分隔的值#xff09;是一种简单、实用的文件格式#xff0c;用于存储和表示包括文本、数值等各种类型的数据。CSV 文件通常以 .csv 作为文件扩展名。这种文件格…Java实现Csv文件导入导出
什么是.csv文件
CSVComma-Separated Values逗号分隔的值是一种简单、实用的文件格式用于存储和表示包括文本、数值等各种类型的数据。CSV 文件通常以 .csv 作为文件扩展名。这种文件格式的一个显著特点是文件内的数据以逗号 , 分隔呈现一个表格形式。CSV 文件已广泛应用于存储、传输和编辑数据。
为什么使用CSV
简单易懂CSV 文件基于纯文本格式因此可以使用任何文本编辑器(如Notepad)轻松打开和编辑。数据兼容性CSV 文件中的数据可以很容易地跨平台进行传输和处理任何具有 CSV 处理功能的软件(如Microsoft Excel、Google Sheets、甚至编程语言库)都能处理该类型的文件。资源占用低CSV 文件以纯文本形式存储数据其体积相对较小便于节省存储空间。
CSV文件的结构
每行表示一条记录CSV 文件中的每一行代表一条记录相当于数据库中的一行数据。第一行是字段名。间隔符分隔每行数据中使用间隔符进行数据分隔默认一般使用 , 也可以使用空格等其他字符代表不同的数据。经过测试好像只有逗号分隔的csv文件才能在Excel中正常解析。引号包围当数据单元格中的内容含有逗号时为避免混淆需要引号 (单引号 或双引号 将这个数据包围起来防止误认为是两个不同数据。
例如
姓名,年龄,性别
张三,25,男
李四,28,男
王五,22,女Java实现csv文件的读写操作
1. 导入依赖 dependencygroupIdcom.univocity/groupIdartifactIdunivocity-parsers/artifactIdversion2.9.1/version/dependency2. 导出。拿来主义可以直接创建一个工具类使用把导入导出方法粘贴进去使用即可。 /*** csv文件导出** param data 导出数据* param file 导出目的文件* param separator 分割符* param clazz 导出对象* param T 数据对象泛型*/public static T void export(CollectionT data, File file, String separator, ClassT clazz) {try {CsvWriterSettings settings new CsvWriterSettings();//设置分隔符CsvFormat csvFormat new CsvFormat();csvFormat.setDelimiter(separator);settings.setFormat(csvFormat);settings.setHeaderWritingEnabled(false);settings.setRowWriterProcessor(new BeanWriterProcessor(clazz));CsvWriter writer new CsvWriter(Files.newOutputStream(file.toPath()), utf-8, settings);// 写入headerwriter.writeHeaders(settings.getHeaders());data.forEach(writer::processRecord);writer.close();} catch (Exception e) {log.error(export .csv file failed. message., e);}}测试 GetterSetterNoArgsConstructorAllArgsConstructorToStringpublic static class User implements Serializable {Parsedprivate String name;Parsedprivate Integer age;}public static void main(String[] args) {User user1 new User(张三, 18);User user2 new User(李四, 19);ListUser users Arrays.asList(user1, user2);File file new File(E:\\test.csv);CsvUtil.export(users, file, ,, User.class);}结果
Excel支持打开.csv文件 文本编辑器中打开 3. 导入 /*** 读取crv文件并转换成List** param separator crv文件分隔符* param file 待读取文件* return crv对象list*/public static T ListT read(String separator, File file, ClassT clazz) {ListT result Collections.emptyList();try {BeanListProcessorT rowProcessor new BeanListProcessor(clazz);//设置分隔符CsvFormat csvFormat new CsvFormat();csvFormat.setDelimiter(separator);CsvParserSettings parserSettings new CsvParserSettings();parserSettings.setProcessor(rowProcessor);parserSettings.setFormat(csvFormat);CsvParser parser new CsvParser(parserSettings);InputStream in Files.newInputStream(file.toPath());parser.parse(in);//逐行读取result rowProcessor.getBeans();} catch (Exception e) {log.error(Import csv file failed. message: , e);}return result;}测试 GetterSetterNoArgsConstructorAllArgsConstructorToStringpublic static class User implements Serializable {Parsedprivate String name;Parsedprivate Integer age;}public static void main(String[] args) {File file new File(E:\\test.csv);ListUser users CsvUtil.read(,, file, User.class);users.forEach(System.out::println);}结果 总结.csv文件导入导出比较简单需要注意的地方有
涉及到导入导出映射的对象属性上需要加上Parsed注解。分隔符如果是英文逗号分隔可以不用new CsvFormat()进行设置默认使用的就是英文逗号作为分隔符。