是否可以向 CSV 文件添加新行,而不是覆盖最后一行?
这是我想添加新行时调用的方法:
private static void writeWithCsvMapWriter() throws Exception
{
final String[] header = new String[] { "Engineer", "Time/Date", "Project", "Test ID", "Data Centre", "Data Hall", "Row", "Grille", "I/S" };
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd_HH:mm:ss");
String currentDateandTime = sdf.format(new Date());
final Map<String, Object> NewRow = new HashMap<String, Object>();
NewRow.put(header[0], Name.getText().toString());
NewRow.put(header[1], currentDateandTime);
NewRow.put(header[2], "Expect");
NewRow.put(header[3], TestID.getText());
NewRow.put(header[4], DataCentre.getText());
NewRow.put(header[5], DataHall.getText());
NewRow.put(header[6], Row.getText());
NewRow.put(header[7], Grille.getText());
NewRow.put(header[8], IS.getText());
ICsvMapWriter mapWriter = null;
try
{
mapWriter = new CsvMapWriter(new FileWriter("data/data/" + PACKAGE_NAME …Run Code Online (Sandbox Code Playgroud) 我正在使用SuperCSV将CSV记录解析为Object.我的CSV文件最后有额外的列,我只想处理前X列.所以我String[]为前X列和CellProcessor[]相同大小定义了映射.但它似乎不起作用,并抛出异常,即单元格数量的处理器应与列数完全相同.
有人可以告诉我,如果我错过了什么.即使我不想要它们,我是否需要定义映射数组以具有与五个完全相同的列?
public CsvToBeanParser(Reader reader, Class<T> type, CsvPreference preference, CellProcessor[] cellProcessors, String[] mapping, boolean skipHeader)
throws IOException {
this.beanReader = new CsvBeanReader(reader, preference);
this.mapping = mapping;
if (skipHeader) {
beanReader.getHeader(true);
}
this.cellProcessors = cellProcessors;
this.type = type;
}
/**
* Parse and return record.
*
* @return
* @throws Exception
* if there is any parsing error
*/
public T getItem() throws Exception {
try {
return (T) beanReader.read(type, mapping, cellProcessors);
} catch (Exception e) { …Run Code Online (Sandbox Code Playgroud) 有没有办法配置 SuperCSV 期望如何处理 NULL 值?这有时被处理为:
,,
Run Code Online (Sandbox Code Playgroud)
或作为:
,NULL,
Run Code Online (Sandbox Code Playgroud)
或作为:
,null,
Run Code Online (Sandbox Code Playgroud)
但是我似乎找不到一种方法来配置 SuperCSV 期望如何处理这些,尤其是对于数字列。
如何验证CSV文件的数据包含标题?我正在使用supercsv和Java。我的csv文件包含;
ACCOUNT,NAME,PHONE(标头)<---需要验证,所有标头都必须显示Checking,John,1122222222(数据)
Saving,Carl,1234567891(数据)
谢谢您的帮助。
我想将十进制值格式化为货币值:1234.56d应变为"1.234,56"(此格式在某些欧洲国家/地区使用).我使用以下模式格式化十进制值:
final DecimalFormat df = new DecimalFormat("###.###.###,00");
final String formatted = df.format(1234.56d);
System.out.println(formatted);
Run Code Online (Sandbox Code Playgroud)
事实上我正在使用SuperCSV的类FmtNumber,但这没关系,因为模式语法是相同的:new FmtNumber("###.###.###,00");
我得到的是IllegalArgumentException,消息"模式中有多个小数分隔符".
我知道只能有一个小数分隔符.但就我而言,它应该是","的标志.并且","在我的模式中只出现一次.
我搜索了Web和StackOverflow这个异常消息,但我没有找到有用的答案.
我的错误是什么?
我正在尝试使用包含两个字段(制表符分隔)的超级CSV和未加引号的字符串来解析CSV文件.
occugroup_code occugroup_name
110000 Management Occupations
130000 Business and Financial Operations Occupations
150000 Computer and Mathematical Occupations
我很难弄清楚如何配置CsvPreference以便能够为每两个返回一个Map.有人遇到过这个问题吗?