一个使用java代码导入导出csv文件的问题 Kettle简单,呵呵刚刚看的教程 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 或者就是字符操作,加jdbc private final static String ADD_GRTXL = "insert into t_app_grtxl(ID, F_NAME,F_EMAIL,F_HOMEADDR,F_HOMECODE,F_HOMEPHONE,F_OFFICEADDR, F_OFFICECODE,F_OFFICEPHONE, F_COMPANY,F_ZHIWU) values(?,?,?,?,?,?,?,?,?,?,?)"; public String csv2oa() throws FileNotFoundException,IOException { Context context = ContextFactory.getContext(); File file=null; BufferedReader br=null; String path="D:\\test.csv"; try { file=new File(path); br=new BufferedReader(new InputStreamReader( new FileInputStream(file))); String line=null; while ((line=br.readLine())!=null) {//读取一行 String[] parts=line.split(","); if(parts[0].equals("姓名")||parts[0].equalsIgnoreCase("name")) { continue; } String homeaddr=parts[6]+parts[5]+parts[3]+parts[2]; System.out.println(homeaddr); List paramlist=new ArrayList(); paramlist.add(Access.getUUID()); paramlist.add(parts[0]); paramlist.add(parts[1]); paramlist.add(parts[6]+parts[5]+parts[3]+parts[2]); paramlist.add(parts[4]); paramlist.add(parts[7]); paramlist.add(parts[12]+parts[11]+parts[9]+parts[8]); paramlist.add(parts[10]); paramlist.add(parts[13]); paramlist.add(parts[14]); paramlist.add(parts[15]); // LinkedHashMap paramap=new LinkedHashMap(); //paramap.put("t_app_grtxl", grtxl); boolean isOK=Access.executeUpdate(ADD_GRTXL, paramlist); if(!isOK) { //if(!Access.executeUpdate(ADD_GRTXL, paramlist)) { context.setMessage("通讯录保存失败,请再试一次"); return "error"; } } } finally { if (br != null) { br.close(); } } return "success"; }这是我的导入代码,如果csv的列没有空值,可以实现导入数据库功能,如果我需要csv文件中允许空值,应该怎么改呢 // 如果是字符串public String convertNullToBlank(String target) { if (target == null) { return " "; } return target;}// 如果是数字public String convertNullToZero(String target) { if (target == null) { return "0"; } return target;}// 写入的时候调用 paramlist.add(convertNullToBlank(parts[0])); paramlist.add(convertNullToBlank(parts[1])); paramlist.add(convertNullToBlank(parts[6])+convertNullToBlank(parts[5])+convertNullToBlank(parts[3])+convertNullToBlank(parts[2])); paramlist.add(convertNullToBlank(parts[4])); paramlist.add(convertNullToBlank(parts[7])); paramlist.add(convertNullToBlank(parts[12])+convertNullToBlank(parts[11])+convertNullToBlank(parts[9])+convertNullToBlank(parts[8])); paramlist.add(convertNullToBlank(parts[10])); paramlist.add(convertNullToBlank(parts[13])); paramlist.add(parts[14]); paramlist.add(parts[15]); 我觉得这样不行,对null值的处理应该在line.split()或者类似的处理方法里进行 Apache有个开源工具包,POI,看下好了 你现在是null变成了""造成你插入失败那把null专成" "就可以了 oracle里,null=='' // 如果是字符串public String convertNullToBlank(String target) { if (target == null || target.length == 0) { return " "; } return target;}// 如果是数字public String convertNullToZero(String target) { if (target == null || target.length == 0) { return "0"; } return target;} 导出到csv文件又该如何做呢,这个偶就不太会了 /** * 导出CSV文件 * * @param booklist */ private boolean exportCSV(Vector booklist) {// 说明:booklist为从数据库中取出的的数据集合,每一条记录为一个Vector对象,Vector对象以HashMap形式存放数据,key为数据库字段//(如:数据库字段为name,那么key就为name,值为数据库该字段的数据值) System.out.println(" ==== 导出CSV文件 开始 ==== ");//列举两个字段,其余自己添加 String row = "姓名,电子邮件地址"; FileWriter fileWriter = null; PrintWriter out = null; // 取得系统参数的路径String filePath = "C:book.csv"; try { fileWriter = new FileWriter(filePath); out = new PrintWriter(fileWriter); // 输出头文件 out.println(row); Hashtable book = null; for (int i = 0; i < booklist.size(); i++) { row = ""; book = (Hashtable) booklist.get(i); // 姓名, // email邮箱 row += book.get("name") + ","; row += book.get("email") + ","; // 输出数据文件 out.println(row); out.flush(); } out.close(); fileWriter.close(); } catch (IOException e) { System.out.println(" 文件路径不正确 当前目录:" + filePath); e.printStackTrace(); return false; } System.out.println(" ==== 导出CSV文件 结束 ==== "); return true; } 还是有些地方 不懂???有源码没给我发一份[email protected] 新人求助关于this的使用 java 构造器的疑问! java打包问题 请教一个JAVA获得系统信息的问题? 求 naive bayes 算法代码 就剩一分了,看那个大侠能得到 内部类的简单问题! 谁有JCREATOR的注册机啊?急需~ [基础] java动态代理,求解释 求高手相助,点拨一段代码的执行故障原因。 Color中的getColor(string)怎么用啊 服务器端Socket连接close后,客户端Socket.isClosed()为何还是false
字符操作,加jdbc
private final static String ADD_GRTXL = "insert into t_app_grtxl(ID, F_NAME,F_EMAIL,F_HOMEADDR,F_HOMECODE,F_HOMEPHONE,F_OFFICEADDR, F_OFFICECODE,F_OFFICEPHONE, F_COMPANY,F_ZHIWU) values(?,?,?,?,?,?,?,?,?,?,?)";
public String csv2oa() throws FileNotFoundException,IOException {
Context context = ContextFactory.getContext();
File file=null;
BufferedReader br=null;
String path="D:\\test.csv";
try {
file=new File(path);
br=new BufferedReader(new InputStreamReader(
new FileInputStream(file)));
String line=null;
while ((line=br.readLine())!=null) {//读取一行
String[] parts=line.split(",");
if(parts[0].equals("姓名")||parts[0].equalsIgnoreCase("name")) {
continue;
}
String homeaddr=parts[6]+parts[5]+parts[3]+parts[2];
System.out.println(homeaddr);
List paramlist=new ArrayList();
paramlist.add(Access.getUUID());
paramlist.add(parts[0]);
paramlist.add(parts[1]);
paramlist.add(parts[6]+parts[5]+parts[3]+parts[2]);
paramlist.add(parts[4]);
paramlist.add(parts[7]);
paramlist.add(parts[12]+parts[11]+parts[9]+parts[8]);
paramlist.add(parts[10]);
paramlist.add(parts[13]);
paramlist.add(parts[14]);
paramlist.add(parts[15]);
// LinkedHashMap paramap=new LinkedHashMap();
//paramap.put("t_app_grtxl", grtxl);
boolean isOK=Access.executeUpdate(ADD_GRTXL, paramlist);
if(!isOK) {
//if(!Access.executeUpdate(ADD_GRTXL, paramlist)) {
context.setMessage("通讯录保存失败,请再试一次");
return "error";
}
}
}
finally {
if (br != null) {
br.close();
}
}
return "success";
}这是我的导入代码,如果csv的列没有空值,可以实现导入数据库功能,如果我需要csv文件中允许空值,应该怎么改呢
public String convertNullToBlank(String target) {
if (target == null) {
return " ";
}
return target;
}
// 如果是数字
public String convertNullToZero(String target) {
if (target == null) {
return "0";
}
return target;
}// 写入的时候调用
paramlist.add(convertNullToBlank(parts[0]));
paramlist.add(convertNullToBlank(parts[1]));
paramlist.add(convertNullToBlank(parts[6])+convertNullToBlank(parts[5])+convertNullToBlank(parts[3])+convertNullToBlank(parts[2]));
paramlist.add(convertNullToBlank(parts[4]));
paramlist.add(convertNullToBlank(parts[7]));
paramlist.add(convertNullToBlank(parts[12])+convertNullToBlank(parts[11])+convertNullToBlank(parts[9])+convertNullToBlank(parts[8]));
paramlist.add(convertNullToBlank(parts[10]));
paramlist.add(convertNullToBlank(parts[13]));
paramlist.add(parts[14]);
paramlist.add(parts[15]);
那把null专成" "就可以了
oracle里,null==''
public String convertNullToBlank(String target) {
if (target == null || target.length == 0) {
return " ";
}
return target;
}
// 如果是数字
public String convertNullToZero(String target) {
if (target == null || target.length == 0) {
return "0";
}
return target;
}
* 导出CSV文件
*
* @param booklist
*/
private boolean exportCSV(Vector booklist)
{// 说明:booklist为从数据库中取出的的数据集合,每一条记录为一个Vector对象,Vector对象以HashMap形式存放数据,key为数据库字段
//(如:数据库字段为name,那么key就为name,值为数据库该字段的数据值)
System.out.println(" ==== 导出CSV文件 开始 ==== ");
//列举两个字段,其余自己添加
String row = "姓名,电子邮件地址";
FileWriter fileWriter = null;
PrintWriter out = null; // 取得系统参数的路径
String filePath = "C:book.csv";
try
{
fileWriter = new FileWriter(filePath); out = new PrintWriter(fileWriter);
// 输出头文件
out.println(row);
Hashtable book = null;
for (int i = 0; i < booklist.size(); i++)
{
row = "";
book = (Hashtable) booklist.get(i);
// 姓名,
// email邮箱
row += book.get("name") + ",";
row += book.get("email") + ","; // 输出数据文件
out.println(row);
out.flush();
}
out.close();
fileWriter.close(); }
catch (IOException e)
{
System.out.println(" 文件路径不正确 当前目录:" + filePath);
e.printStackTrace();
return false;
} System.out.println(" ==== 导出CSV文件 结束 ==== ");
return true; }
有源码没给我发一份
[email protected]