如何在将值加载到 csv 文件时修改默认分隔符
How to modify default delimiter while loading values to csv file
我的要求是将数据库中的值写入 .csv 文件并通过电子邮件发送。使用以下代码从数据库中获取值,并通过 createFile(testFile) 方法创建文件并存储在服务器位置,然后通过电子邮件发送相同的文件。
//示例输入数据:
SRT678,Textile STS Secure Limited,OMD,第一,最后
问题是 SRT678 转到 column1,Textile STS Secure Limited - column2,OMD - column3 但我需要“Textile STS Secure Limited,OMD”到 column2。我没有将任何分隔符设置为“,”,但我相信默认情况下“,”被视为分隔符。
Excel 使用系统区域设置 - 列表分隔符来确定哪个默认分隔符 use.is 有什么办法可以通过代码进行更改?我如何在 Textile STS Secure Limited, OMD 中跳过“,”并将其放入 excel 中的同一列。
public Object extractData(ResultSet rs) {
List list1 = new ArrayList();
TestFileInfo testFile = new TestFileInfo();
String base_name="UsersInfo";
String file_name=base_name + ".csv";
testFile.setFileName(file_name);
String header_row="empid,empName,firstName,lastName\r\n";
list1.add(header_row);
boolean valid = true;
int total = 0;
while (rs.next()) {
if (valid) {
total ++;
String row = rs.getString("empid")
+ "," + rs.getString("empName")
+ "," + rs.getString("firstName")
+ "," + rs.getString("lastName")
+ "\r\n" ;
list1.add(row);
}
else {
break;
}
}
if (valid)
{
testFile.setTotalRecords(total);
testFile.setRowList(list1);
}
else
{
testFile = null;
}
return testFile;
}
// 创建文件(测试文件);
static public void createFile( TestFileInfo testFile){
List rowList = file.getRowList();
File testFile = new File(location,file.getFileName());
if (!testFile.exists()) {
testFile.createNewFile();
}
FileWriter fstream = new FileWriter(testFile);
BufferedWriter out = new BufferedWriter (fstream);
for (Iterator row = rowList.iterator(); row.hasNext();) {
out.write((String) row.next());
}
out.close();
file.setCsvFile(testFile);
return ;
}
感谢您的帮助!
谢谢!
您的文件以逗号分隔。因此,只要它看到逗号,就会将其视为新的列条目。
To skip doing this, we add the entry in a double-quotes ("a, b, c").
此处 a、b、c 现在位于同一列中。
为此,我们使用 .contains()
方法并检查其中是否有逗号。
String x = rs.getString("emid");
if(x.contains("\""))
x = x.replace("\"", "\"\"");
if(x.contains(","))
x = "\"" + x + "\"";
我的要求是将数据库中的值写入 .csv 文件并通过电子邮件发送。使用以下代码从数据库中获取值,并通过 createFile(testFile) 方法创建文件并存储在服务器位置,然后通过电子邮件发送相同的文件。
//示例输入数据:
SRT678,Textile STS Secure Limited,OMD,第一,最后
问题是 SRT678 转到 column1,Textile STS Secure Limited - column2,OMD - column3 但我需要“Textile STS Secure Limited,OMD”到 column2。我没有将任何分隔符设置为“,”,但我相信默认情况下“,”被视为分隔符。
Excel 使用系统区域设置 - 列表分隔符来确定哪个默认分隔符 use.is 有什么办法可以通过代码进行更改?我如何在 Textile STS Secure Limited, OMD 中跳过“,”并将其放入 excel 中的同一列。
public Object extractData(ResultSet rs) {
List list1 = new ArrayList();
TestFileInfo testFile = new TestFileInfo();
String base_name="UsersInfo";
String file_name=base_name + ".csv";
testFile.setFileName(file_name);
String header_row="empid,empName,firstName,lastName\r\n";
list1.add(header_row);
boolean valid = true;
int total = 0;
while (rs.next()) {
if (valid) {
total ++;
String row = rs.getString("empid")
+ "," + rs.getString("empName")
+ "," + rs.getString("firstName")
+ "," + rs.getString("lastName")
+ "\r\n" ;
list1.add(row);
}
else {
break;
}
}
if (valid)
{
testFile.setTotalRecords(total);
testFile.setRowList(list1);
}
else
{
testFile = null;
}
return testFile;
}
// 创建文件(测试文件);
static public void createFile( TestFileInfo testFile){
List rowList = file.getRowList();
File testFile = new File(location,file.getFileName());
if (!testFile.exists()) {
testFile.createNewFile();
}
FileWriter fstream = new FileWriter(testFile);
BufferedWriter out = new BufferedWriter (fstream);
for (Iterator row = rowList.iterator(); row.hasNext();) {
out.write((String) row.next());
}
out.close();
file.setCsvFile(testFile);
return ;
}
感谢您的帮助! 谢谢!
您的文件以逗号分隔。因此,只要它看到逗号,就会将其视为新的列条目。
To skip doing this, we add the entry in a double-quotes ("a, b, c").
此处 a、b、c 现在位于同一列中。
为此,我们使用 .contains()
方法并检查其中是否有逗号。
String x = rs.getString("emid");
if(x.contains("\""))
x = x.replace("\"", "\"\"");
if(x.contains(","))
x = "\"" + x + "\"";