javacsv操作实例(java操作csv文件)

发布时间:2022-11-16

本文目录一览:

1、JAVA导入txt、CSV的例子
2、如何用java解析CSV文件
3、java操作csv文件
4、java怎么读写创建csv文件
5、java处理csv文件
6、java对操作csv文件

JAVA导入txt、CSV的例子

导入文件若为二进制格式的csv或xls文件需要用jxl.jar包来解析,若文件为文本格式逗号分隔的csv文件则需要用opencsv.jar包来解析。下面为导入两种格式文件的代码示例:

  1. 导入文本格式逗号分隔的csv文件
import au.com.bytecode.opencsv.CSVReader;
public void importCsvFile() {
    CSVReader csvReader = null;
    try {
        csvReader = new CSVReader(new FileReader(importFile), ','); // importFile为要导入的文本格式逗号分隔的csv文件,提供getXX/setXX方法
        if (csvReader != null) {
            // first row is title, so past
            csvReader.readNext();
            String[] csvRow = null; // row
            while ((csvRow = csvReader.readNext()) != null) {
                for (int i = 0; i < csvRow.length; i++) {
                    String temp = csvRow[i];
                    switch (i) {
                        case 0:
                            if (StringUtils.isNotEmpty(temp)) {
                                linkman.setLinkmanName(temp);
                            }
                            break;
                        case 1:
                            if (StringUtils.isNotEmpty(temp)) {
                                linkman.setLinkmanEmail(temp);
                            }
                            break;
                        default:
                            break;
                    }
                }
                // 保存linkman到数据库
                if (linkman.getLinkmanName() != null && linkman.getLinkmanEmail() != null) {
                    EmailLinkmanAPI.insertLinkman(linkman);
                }
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}
  1. 二进制格式的csv或xls文件
import jxl.Sheet;
import jxl.Workbook;
public void importXlsFile() {
    Workbook book = null;
    try {
        book = Workbook.getWorkbook(importFile); // importFile为要导入的xls文件,或二进制的csv文件,提供getXX/setXX方法
    } catch (Exception e) {
        e.printStackTrace();
    }
    if (book != null) {
        int sheetNo = book.getNumberOfSheets();
        for (int i = 0; i < sheetNo; i++) {
            Sheet sheet = book.getSheet(i);
            int rowNum = sheet.getRows();
            int colNum = sheet.getColumns();
            // first row is title, so past
            for (int r = 1; r < rowNum; r++) { // 行
                for (int c = 0; c < colNum; c++) { // 列
                    String temp = sheet.getCell(c, r).getContents();
                    switch (c) {
                        case 0:
                            if (StringUtils.isNotEmpty(temp)) {
                                linkman.setLinkmanName(temp);
                            }
                            break;
                        case 1:
                            if (StringUtils.isNotEmpty(temp)) {
                                linkman.setLinkmanEmail(temp);
                            }
                            break;
                        default:
                            break;
                    }
                }
                // 保存linkman到数据库
                if (linkman.getLinkmanName() != null && linkman.getLinkmanEmail() != null) {
                    EmailLinkmanAPI.insertLinkman(linkman);
                }
            }
        }
    }
}

如何用java解析CSV文件

思想:先获取csv文件的路径,通过BufferedReader类去读该路径中的文件,使用readLine方法进行逐行读取。 注意:使用readLine方法后会自动转到下一行。因此在判断是否为空后得先将读取到的内容赋值给一变量,在循环中使用该变量即可。

public static void main(String[] args) {
    File csv = new File("C:\\Users\\chenxumin\\Desktop\\Result.csv"); // CSV文件路径
    BufferedReader br = null;
    try {
        br = new BufferedReader(new FileReader(csv));
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    String line = "";
    String everyLine = "";
    try {
        List<String> allString = new ArrayList<>();
        while ((line = br.readLine()) != null) { // 读取到的内容给line变量
            everyLine = line;
            System.out.println(everyLine);
            allString.add(everyLine);
        }
        System.out.println("csv表格中所有行数:" + allString.size());
    } catch (IOException e) {
        e.printStackTrace();
    }
}

java操作csv文件

看楼主比较懂,参阅RandomAccessFile类 先用seek(long pos)把指针指向文件最后 然后视你的数据用

  • writeBytes(String s) //有汉字什么的
  • writeChars(String s) //一般的字符串
  • writeUTF(String str) //有UTF-8的字符 写入数据

java怎么读写创建csv文件

一、使用第三方库的方法。 目前的第三方库主要有opencsv、javacsv,貌似还有个叫supercsv,不过都大同小异。 二、使用FileWriter的方法。 这是我最终使用的方法,很好用,也不用添加库,加一个示例代码,与大家分享。

import java.io.FileWriter;
import java.io.IOException;
public class javacsv {
    /**
     * 写csv文件
     */
    public static void main(String[] args) {
        try {
            // 示例代码
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

java处理csv文件

我来说一下大致的实现步骤,具体实现需要你自己去写了

  1. 检索数据,检索到的数据假定为一个list
  2. 你需要自己写一个objectToString之类的方法来把检索到的数据转化为一个String或StringBuffer,就是往各字段间插",",往个记录间插"\r\n",如此这类的转换,假定转换好的字符串为strResult。
  3. 然后用下面的代码写在后台来控制下载,文件名那里你可以把时间格式控制好,或者用前台传过来的参数做名字。
response.setContentType("application/download;charset=UTF-8");
response.setHeader("Content-disposition", "attachment;filename=\"" + new Date() + ".csv\"");
OutputStream o = response.getOutputStream();
byte b[] = strResult.getBytes();
try {
    o.write(b);
} catch (IOException e) {
    e.printStackTrace();
} finally {
    o.close();
}

java对操作csv文件

import java.io.BufferedReader;
import java.io.FileReader;
public class Test {
    public void test(int row, int col) {
        try {
            BufferedReader reader = new BufferedReader(new FileReader("C:\\a.csv")); // 换成你的文件名
            String line = null;
            int index = 0;
            while ((line = reader.readLine()) != null) {
                String item[] = line.split(","); // CSV格式文件为逗号分隔符文件,这里根据逗号切分
                if (index == row - 1) {
                    if (item.length >= col - 1) {
                        String last = item[col - 1]; // 这就是你要的数据了
                        System.out.println(last);
                    }
                }
                index++;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        Test test = new Test();
        test.test(3, 2);
    }
}

你的数据格式有问题,空格的个数不确定,没法每行用空格分隔。以下是我调整后的数据格式每行的数据以一个空格分隔,test方法传入的参数一次是,行,列:

1 电机12WBS23PID34CP5社供出6原価実绩7社供WC8外注费9直材费10自家制品11直経费12その他13注残14注残