[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
文件那么大,不知道ADO能否胜任。结果保存在result.csv。
  1. @set @n=0//&cscript.exe -e:jscript "%~f0"&pause&exit/b
  2. file1 = "file1.xls";
  3. file2 = "file2.xls";
  4. strConnect = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source="' + file1
  5.     + '";Extended Properties="Excel 8.0;IMEX=1;HDR=yes;";';
  6. AdoCnn = new ActiveXObject("ADODB.Connection");
  7. AdoCnn.ConnectionString = strConnect;
  8. AdoCnn.Open();
  9. AdoRs = new ActiveXObject("ADODB.Recordset");
  10. AdoRs.Open("SELECT a.* from ["+file1+"].[Sheet1$] as a inner join ["+file2
  11.     +"].[Sheet1$] as b  ON (a.[ZINC_ID]=b.[ZINC_ID])", AdoCnn, 3);
  12. s = AdoRs.GetString(2, AdoRs.RecordCount, ",", "\r\n");
  13. AdoRs.Close();
  14. AdoCnn.Close();
  15. fso = new ActiveXObject("Scripting.FileSystemObject");
  16. fso.OpenTextFile('result.csv', 2, true).write(s);
复制代码

TOP

楼主都会玩数据库了,怎么还连xls文件与文本文件都分不清楚?
file1.xls只是文本文件;file2.xls才是正宗的xls文件,而且列名称不是ZINC_ID而是Molecule。
  1. @set @n=0//&cscript.exe -e:jscript "%~f0"&pause&exit/b
  2. f1 = "file1.xls";
  3. f2 = "file2.xls";
  4. fso = new ActiveXObject("Scripting.FileSystemObject");
  5. csv = fso.GetBaseName(f1) + ".csv";
  6. fso.MoveFile(f1, csv);
  7. ts = fso.OpenTextFile("Schema.ini", 2, true);
  8. ts.WriteLine("["+csv+"]\r\nFormat=TabDelimited\r\n"); ts.Close();
  9. strConnect = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source="' + '.'
  10.     + '";Extended Properties="text;FMT=Delimited;HDR=yes;";';
  11. strQuery = "SELECT a.* from ["+csv+"] as a "
  12.     + " inner join (select Molecule from [查询1$]"
  13.     + " in '' [Excel 8.0;IMEX=1;HDR=yes;DATABASE="+f2+";]) as b "
  14.     + " ON (a.[ZINC_ID]=b.[Molecule])";
  15. AdoCnn = new ActiveXObject("ADODB.Connection");
  16. AdoCnn.Open(strConnect);
  17. AdoRs = AdoCnn.Execute(strQuery);
  18. s = AdoRs.GetString(2, -1, ",", "\r\n");
  19. AdoCnn.Close();
  20. fso.OpenTextFile('result.csv', 2, true).write(s);
  21. fso.MoveFile(csv, f1);
  22. fso.DeleteFile("Schema.ini");
复制代码
1

评分人数

TOP

原来楼主在这个问题上纠结了这么久,呵呵。
http://www.bathome.net/viewthread.php?tid=15247
http://www.bathome.net/viewthread.php?tid=14847
http://www.bathome.net/viewthread.php?tid=14986
可是你的求助态度有点让人不敢恭维,不与答复者回馈,没有一点认真的态度,有点像拿到答案就跑的人。

TOP

把cmd窗口中的出错信息贴出来。

附:
如何在CMD中使用复制粘贴功能
http://www.bathome.net/thread-9963-1-1.html

TOP

回复 12# sweet惜缘

我的win7上测试OK。
不行换这个试试
  1. @set @n=0//&cscript.exe -e:jscript "%~f0"&pause&exit/b
  2. f1 = "file1.xls";
  3. f2 = "file2.xls";
  4. fso = new ActiveXObject("Scripting.FileSystemObject");
  5. csv = fso.GetBaseName(f1) + ".csv";
  6. fso.MoveFile(f1, csv);
  7. ts = fso.OpenTextFile("Schema.ini", 2, true);
  8. ts.WriteLine("["+csv+"]\r\nFormat=TabDelimited\r\n"); ts.Close();
  9. strConnect = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source="' + '.'
  10.     + '";Extended Properties="text;FMT=Delimited;HDR=yes;";';
  11. strQuery = "SELECT a.* from ["+csv+"] as a "
  12.     + " inner join (select Molecule from [查询1$]"
  13.     + " in '' [Excel 8.0;IMEX=1;HDR=yes;DATABASE="+f2+";]) as b "
  14.     + " ON (a.[ZINC_ID]=b.[Molecule])";
  15. AdoCnn = new ActiveXObject("ADODB.Connection");
  16. AdoCnn.Open(strConnect);
  17. AdoRs = new ActiveXObject("ADODB.Recordset");
  18. AdoRs.Open(strQuery, AdoCnn, 3);
  19. s = AdoRs.GetString(2, -1, ",", "\r\n");
  20. AdoRs.Close();
  21. AdoCnn.Close();
  22. fso.OpenTextFile('result.csv', 2, true).write(s);
  23. fso.MoveFile(csv, f1);
  24. fso.DeleteFile("Schema.ini");
复制代码
1

评分人数

TOP

将s = AdoRs.GetString(2, -1, ",", "\r\n");
改为
s = "";
if (!AdoRs.EOF) s = AdoRs.GetString(2, -1, ",", "\r\n");

可能是没有符合要求的行,结果为空。(反正你提供的样本中没有。)

TOP

返回列表