精华内容
下载资源
问答
  • 主要为大家详细介绍了Javacsv实现Java读写csv文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 主要介绍了java读取csv文件示例,这个java解析csv文件的例子很简单,下面直接上代码,大家参考使用吧
  • java读取csv

    千次阅读 2014-02-28 18:50:48
    java读取csv文件
    import java.io.IOException;
    import java.nio.charset.Charset;
    import java.util.ArrayList;
    import com.csvreader.CsvReader;
    import com.csvreader.CsvWriter;
    /**
    * 读取CSV文件
    * 所谓“CSV”,是Comma Separated Value(逗号分隔值)的英文缩写,通常都是纯文本文件。 
    * 可以看成数据库程序与电子表格之间一种中间通信文件,数据库可以导出.csv格式,excel也可以导入并打开.csv文件
    * 文件格式例子如下:
    * sj_mino1001.jpg,715282,4FB55FE8, 
    * sj_mino1002.jpg,471289,93203C5C, 
    * sj_mino1003.jpg,451929,C4E80467, 
    * 
    */
    public class CSVDeal{
    	public static void main(String[] args) {
    		try {
    			String[] stringList;
    			String sourceFilePath = "C:\\Users\\Administrator\\Desktop\\20140227135936.csv"; //源文件
    			String destFilePath= "C:\\Users\\Administrator\\Desktop\\test.csv"; //目标文件
    			CsvReader reader = new CsvReader(sourceFilePath);		//默认是逗号分隔符,UTF-8编码		
    			CsvWriter writer = new CsvWriter(destFilePath);
    			/*
    			 * readRecord()判断是否还有记录,getValues()读取当前记录,然后指针下移
    			 */
    			reader.readRecord();
    			writer.writeRecord(reader.getValues()); //读取表头
    			/*
    			 * 逐行读取,以免文件太大
    			 * 处理表头后面的数据,这里是在第12列数据统一加前缀“V”
    			*/
    			while(reader.readRecord()){ 
    				stringList = reader.getValues();
    				stringList[11] = 'V' + stringList[11];
    				writer.writeRecord(stringList);
    			}
    			reader.close();
    			writer.close();
    		}catch(Exception ex){
    			System.out.println(ex);
    		}
    	}
    }
    

    展开全文
  • java读写csv

    2021-04-26 20:59:00
    一、使用JavaCSV APl来读取csv文件 二、使用步骤 1.添加 Maven 依赖 2.写文件 3.读文件


    一、使用JavaCSV APl来读取csv文件

    JavaCSV 官网地: https://sourceforge.net/projects/javacsv/

    JavaCSV API 说明文档http://javacsv.sourceforge.net/

    二、使用步骤

    1.添加 Maven 依赖

    <dependency>
        <groupId>net.sourceforge.javacsv</groupId>
        <artifactId>javacsv</artifactId>
        <version>2.0</version>
    </dependency>
    

    2.写文件

    要如何通过 javacsv生成 CSV 文件呢?参考下面的示例代码:

        public static void writeFile(String writeCsvFilePath) {
            // 创建 CSV Writer 对象, 参数说明(写入的文件路径,分隔符,编码格式)
            CsvWriter csvWriter = new CsvWriter(path ,',', Charset.forName("GBK"));
    
            try {
                // 定义 header 头
                String[] headers = {"实体", "实体名"};
                // 写入 header 头
                csvWriter.writeRecord(headers);
    
                // 写入一千条记录
                for (int i = 0; i < 1000; i++) {
                    String EName = "实体" + i;
                    String FullName= String.valueOf(i);
                    // 写入行
                    csvWriter.writeRecord((String[]) Arrays.asList(userName, payMoney).toArray());
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                csvWriter.close();
            }
        }
    
        public static void main(String[] args) {
          String path = "/clue/" + 1.csv;
            writeCsvFile(path);
        }
    }
    

    3.读文件

    说完了如何通过 javacsv来写 csv 文件,再来说说如何读取 csv 文件,就以上面生成的 csv 文件作为读取源,示例代码如下:

    public class ReadAndWriterCsvFlie {
        /**
         * 读取 csv 文件
         */
        public static void readCsvFile(String readCsvFilePath) {
            // 缓存读取的数据
            List<String[]> content = new ArrayList<>();
    
            try {
                // 创建 CSV Reader 对象, 参数说明(读取的文件路径,分隔符,编码格式)
                CsvReader csvReader = new CsvReader(readCsvFilePath, ',', Charset.forName("GBK"));
                // 跳过表头
                csvReader.readHeaders();
    
                // 读取除表头外的内容
                while (csvReader.readRecord()) {
                    // 读取一整行
                    String line = csvReader.getRawRecord();
                    System.out.println(line);
    
                    content.add(csvReader.getValues());
                }
                csvReader.close();
    
                for (int row = 0; row < content.size(); row++) {
                    // 读取第 row 行,第 0 列的数据
                    String EName = content.get(row)[0];
                    System.out.println("=== EName : " + EName );
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public static void main(String[] args) {
            // 需要写入的 csv 文件路径
         String path = "/clue/" + 1.csv;
            readCsvFile(path);
        }
    }
    

    总结

    本文介绍,如何通过第三方库 JavaCSV来对 csv 文件进行读写操作。

    展开全文
  • Java 读写csv

    千次阅读 2019-08-02 18:06:14
    工作中需要读写csv,由于csv 文件较大,数据比较多,所以需要选择一个速度快的csv 读取插件。经过比较选择opencsv 。官方解释:Opencsv是一个易于使用的CSV(逗号分隔值)解析器库。之所以开发它,是因为当时所有CSV...

    本文结构:

    • 废话
    • 动手读csv
    • 写csv

    工作中需要读写csv,由于csv 文件较大,数据比较多,所以需要选择一个速度快的csv 读取插件。经过比较选择opencsv 。官方解释:Opencsv是一个易于使用的CSV(逗号分隔值)解析器库。之所以开发它,是因为当时所有CSV解析器都没有商业友好的许可证。Java 7是目前支持的最小版本。

    Opencsv

    Opencsv支持您可能想要做的所有基本CSV类型的事情:

    • 每行的任意数量的值。

    • 忽略引用元素中的逗号。

    • 处理带有嵌入式回车的带引号的条目(即跨越多行的条目)。

    • 可配置的分隔符和引号字符(或使用合理的默认值)。

      所有这些事情都可以通过可塑性方法的表现来完成阅读和写作:

    • 往返于一个字符串数组。

    • 来自带注释的bean。

    • 来自数据库一次读取所有条目,或使用Iterator风格的模型

    废话不多说:官方文档[http://opencsv.sourceforge.net/]

    跟我一起做 读csv

    引入依赖

    <dependency>
                <groupId>com.opencsv</groupId>
                <artifactId>opencsv</artifactId>
                <version>4.2</version>
            </dependency>
    

    读取csv 映射为对象(此时会按照csv 的顺序进行映射全量,如果需要只取csv中的部分列则看下一部分)

     public  static <T> List<T> getCsvData(Class<T> clazz) {
            InputStreamReader in=null;
            try {
                in = new InputStreamReader(new FileInputStream("xxxx.csv"), "gbk");
            } catch (Exception e) {
    
            }
    
            System.out.println(System.currentTimeMillis());
            HeaderColumnNameMappingStrategy<T> strategy = new HeaderColumnNameMappingStrategy<>();
            strategy.setType(clazz);
    
            CsvToBean<T> csvToBean = new CsvToBeanBuilder<T>(in)
                    .withSeparator(',')
                    .withQuoteChar('\'')
                    .withMappingStrategy(strategy).build();
            List<T> list= csvToBean.parse();
            System.out.println(System.currentTimeMillis());
            System.out.println(list.size());
        return list;    
            }
    

    如果只需要取csv 中部分列的值映射到对象里,则只需要在对象中添加注解 @CsvBindByName即可

    (required = true ) 参数指csv 中该列的值不能为空

    public class Student {
        @CsvBindByName(column = "name", required = true)
        private String name;
        @CsvBindByName(column = "address", required = false)
        private String address;
        @CsvBindByName(column = "age", required = false)
        private Integer age;
        //不需要从csv中取值
    		private Integer sex;
    
    

    当然这样的取值还是不够自由,那么Opencsv还提供了更自由的方式

    读取csv 的任意行和列。而且csv很大的话,速度也很快哦,只要内存跟得上。

    minLine 为读取的起始行,当然你也可以再设置一个结束行的字段,每次判断行号。当然也需要自己设置一个行号,每次自增。

     private static Set<String> readCsv(int minLine,  String path) throws IOException {
            Integer lineNum = minLine;
            FileReader fReader = new FileReader(new File(path));
            CSVReader csvReader = new CSVReader(fReader);
            String[] values;
            Set<String> set = new HashSet<>();
            //跳过前方minLine 条数据
            csvReader.skip(minLine);
            while ((values = csvReader.readNext()) != null) {
                    // values 是一个数组,存储了csv当前行的所有元素,在此你可以将数组中的元素取出来放入你的对象中
                    set.add(StringUtils.join(values, Constants.CSV_SPLIT));
                lineNum++;
            }
            return set;
        }
    

    写csv

    	public static void main(String[] args) throws Exception {
    		File file = new File("xxx.csv");
    		Writer writer = new FileWriter(file);
        //分隔符默认为逗号
    		CSVWriter csvWriter = new CSVWriter(writer);
    		String[] strs = {"abc" , "abc" , "abc"};
    		csvWriter.writeNext(strs);
    		csvWriter.close();
    	}
    
    

    写 csv 方法2

    此方法不用引入其他依赖,jdk自身的就够了,目前我使用此方法

    controller 层

     @GetMapping("/csv")
        public void csv(HttpServletRequest request, HttpServletResponse response, String keyword) throws Exception{
           //查询数据库获取导出数据
            List<Student> list = xxxService.exportList(keyword);
            String fileName = ExportUtil.getFileName(request, "测试数据" + System.currentTimeMillis() + ".csv");
            response.setContentType(MediaType.APPLICATION_OCTET_STREAM.toString());
            response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\";");
    		// 表头
            LinkedHashMap<String, Object> header = new LinkedHashMap<>();
            header.put("1", "姓名");
            header.put("2", "年龄");
            header.put("3", "性别");
            header.put("4", "地址");
            List<LinkedHashMap<String, Object>> data = new ArrayList<>();
            data.add(header);
            list.forEach(x->{
                LinkedHashMap<String, Object> body = new LinkedHashMap<>();
                body.put("1", x.getName());
                body.put("2", x.getAge());
                body.put("3", x.getSex());
                body.put("4", x.getAddress());
                data.add(body);
            });
            FileCopyUtils.copy(ExportUtil.exportCSV(data), response.getOutputStream());
        }
    

    ExportUtil 工具类

    import javax.servlet.http.HttpServletRequest;
    import java.io.*;
    import java.nio.charset.StandardCharsets;
    import java.util.Iterator;
    import java.util.LinkedHashMap;
    import java.util.List;
    import java.util.Map;
    
    /**
     * @author yyb
     * @time 2020/3/9
     */
    public class ExportUtil {
        public static byte[] exportCSV(List<LinkedHashMap<String, Object>> exportData) {
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            BufferedWriter buffCvsWriter = null;
            try {
                buffCvsWriter = new BufferedWriter(new OutputStreamWriter(out, StandardCharsets.UTF_8));
                // 将body数据写入表格
                for (Iterator<LinkedHashMap<String, Object>> iterator = exportData.iterator(); iterator.hasNext(); ) {
                    fillDataToCsv(buffCvsWriter, iterator.next());
                    if (iterator.hasNext()) {
                        buffCvsWriter.newLine();
                    }
                }
                // 刷新缓冲
                buffCvsWriter.flush();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                // 释放资源
                if (buffCvsWriter != null) {
                    try {
                        buffCvsWriter.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
            return out.toByteArray();
        }
    
        private static void fillDataToCsv(BufferedWriter buffCvsWriter, LinkedHashMap row) throws IOException {
            Map.Entry propertyEntry;
            for (Iterator<Map.Entry> propertyIterator = row.entrySet().iterator(); propertyIterator.hasNext(); ) {
                propertyEntry = propertyIterator.next();
                buffCvsWriter.write("\"" + propertyEntry.getValue().toString() + "\"");
                if (propertyIterator.hasNext()) {
                    buffCvsWriter.write(",");
                }
            }
        }
    
        public static  String getFileName(HttpServletRequest request, String name) throws UnsupportedEncodingException {
            String userAgent = request.getHeader("USER-AGENT");
            return userAgent.contains("Mozilla") ? new String(name.getBytes(), "ISO8859-1") : name;
        }
    }
    

    好了,打完收工。

    展开全文
  • java读取csvjava 按顺序创建文件
  • Java读取csv

    2014-03-03 11:54:00
     java读取csv,代码:  import java.io.IOException;  import java.nio.charset.Charset;  import java.util.ArrayList;  import com.csvreader.CsvReader;  import com.csvreader.C...

        本文由广州疯狂软件java培训为你整理:

      java读取csv,代码:

      import java.io.IOException;

      import java.nio.charset.Charset;

      import java.util.ArrayList;

      import com.csvreader.CsvReader;

      import com.csvreader.CsvWriter;

      /**

      * 读取CSV文件

      * 所谓"CSV",是Comma Separated Value(逗号分隔值)的英文缩写,通常都是纯文本文件。

      * 可以看成数据库程序与电子表格之间一种中间通信文件,数据库可以导出。csv格式,excel也可以导入并打开。csv文件,例子如下

      * sj_mino1001.jpg,715282,4FB55FE8,

      * sj_mino1002.jpg,471289,93203C5C,

      * sj_mino1003.jpg,451929,C4E80467,

      *

      */

      public class CSVDeal{

      public static void main(String[] args) {

      try {

      String[] stringList;

      String csvFilePath = "C:\\Users\\Administrator\\Desktop\\20140227135936.csv";

      String sourceFileString= "C:\\Users\\Administrator\\Desktop\\test.csv";

      CsvReader reader = new CsvReader(csvFilePath); //默认是逗号分隔符,UTF-8编码

      CsvWriter writer = new CsvWriter(sourceFileString);

      /*

      * readRecord()判断是否还有记录,getValues()读取当前记录,然后指针下移

      */

      reader.readRecord();

      writer.writeRecord(reader.getValues()); //读取表头

      /*

      * 逐行读取,以免文件太大

      * 处理表头后面的数据,这里是在第12列数据统一加前缀"V"

      */

      while(reader.readRecord()){

      stringList = reader.getValues();

      stringList[11] = 'V' + stringList[11];

      writer.writeRecord(stringList);

      }

      reader.close();

      writer.close();

      }catch(Exception ex){

      System.out.println(ex);

      }

      }

      }

      学IT技术就学Java技术,疯狂软件Java培训机构,打造国内高级Java人才。

      疯狂软件Java培训优势

      1. Java是世界第一大编程语言,市场占有率达20%。

      2.广州最专业Java培训机构,多年教学经验。

      3.学员技术牛就业率最好,就业薪资都在5000以上。

      4.疯狂软件Java培训课程以项目实战带动教学,上课打破传统课堂模式,以实训项目贯穿教学,带领学生一起做企业真实项目。

      疯狂Java培训专注软件开发培训,提升学员就业能力,重点提升实践动手能力。高薪从IT名企请来项目经理为学员亲自授课,对学员进行实战教学,在疯狂java,通过大量全真经典企业级项目进行集中培训,学员通过数月培训都可获得1-2年的工作经验,进而在同类的求职者中脱颖而出。疯狂Java培训让你体会java编程的快乐,项目开发的兴奋,成就感,通过短短几个月的时间,让你在半年的时间内掌握8-10万的代码量,掌握Java核心技术,迅速成为技能型的现代化高端人才,迅速获得高薪就业!

      疯狂软件中心Java培训、iOS培训打造名企技术经理,成为中国软件产业的中流砥柱:全真企业需求,项目小组管理,大量实操项目的疯狂训练,企业全真案例教学,学成至少相当于两年工作经验“全真项目”教学,高强度的狂热训练,带领学生走近编程,感受编程,热爱编程,学完后产生凤凰涅槃般的重生。 “全真企业环境”模拟:以项目组形式管理,每个程序员(学员)对项目组长负责,组长向项目经理(老师)负责。以版本控制工具为引导,充分激发每个程序员对编程的激情 四个半月掌握近8~10万代码量,达到技术经理的代码掌握量。

     

    转载于:https://www.cnblogs.com/gojava/p/3578101.html

    展开全文
  • 今天跟大家分享一个利用外部Jar包来实现Java操作CSV文件一.资源下载1.直接下载Jar包:http://central.maven.org/maven2/net/sourceforge/javacsv/javacsv/2.0/javacsv-2.0.jar2.利用Maven下载Jar包:...
  • 主要介绍了JAVA对CSV格式文本数据处理后再保存成新CSV格式文本的模板,可以学习到java读取csv文件和写csv的方法,需要的朋友可以参考下
  • Java读写CSV文件

    2020-06-24 21:36:38
    Java读写CSV文件 文章目录Java读写CSV文件需要的依赖:javacsv写文件读文件 需要的依赖:javacsv <dependency> <groupId>net.sourceforge.javacsv</groupId> <artifactId>javacsv</...
  • java读写csv文件

    2013-10-08 23:31:39
    java读写csv文件
  • java 读写csv

    2017-02-28 20:36:00
    import java.io.IOException; import java.nio.charset.Charset; import com.csvreader.CsvReader; import com.csvreader.CsvWriter; public class CsvUtil { ... * 读取CSV文件 * @th...
  • Java读写CSV

    2019-07-15 10:47:04
    csv文件 是比较通用的表格文件,一般我们用的CSV都是用,号分隔的,如果CSV里面的每个格子的数据都不带回车,那可以直接按行读取然后用逗号分割,但如果每个格子的数据可能带些回车,那就没法按行读取了,比较方便的...
  • 主要介绍了java读取csv文件内容的示例,大家参考使用

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,258
精华内容 9,303
关键字:

java读写csv

java 订阅