Board logo

标题: [文件操作] 批量整理归类excel中的数据 [打印本页]

作者: 星空独子    时间: 2019-12-17 18:16     标题: 批量整理归类excel中的数据

有很多文件编码的文件,如图中圈出的数字。(只针对此文件夹,不遍历子文件夹)
将文件编码批处理放在新建的excel中的第一行,然后分别在文件编码所对应的列写入该文件指定的数值(空白的地方被我删除不代表没有数据,只是我不需要采集),首先采集第一页,67B-72B的数据舍弃,其次采集第二页,第二页指定的数据按先从上往下,后从左往右,接在第一页数据后边。
最终的结果如下所示
作者: terse    时间: 2019-12-18 10:01

看了一下 空白的地方的既然是有数据的 那怎么判断它是不需提去的 根据你提供的行号吗
作者: 星空独子    时间: 2019-12-18 21:06

回复 2# terse
其实不用判断,我在V301-P11-430-_3_JJ1-17-December-2019-15-12-11这份文件中已经罗列出我需要的数据,这些数据中的每一个数据都有它唯一的页码和单元格,只要按照我的逻辑放置到新的excel中
作者: WHY    时间: 2019-12-19 16:46

Test.js
  1. var srcDir  = 'E:\\Test';                 //存放xls文件的源目录名
  2. var dstFile = 'E:\\result.xlsx';          //保存的文件名
  3. var exclude = [1,3,8,11,26,33,42,46,47,51,54,58,62,66,67,68,69,70,71,72,73]; //sheet1 要排除的行号
  4. var objExcel = new ActiveXObject('Excel.Application');
  5. var objNewBook = objExcel.WorkBooks.Add();
  6. objExcel.Visible = false;
  7. var fso = new ActiveXObject('Scripting.FileSystemObject');
  8. var e = new Enumerator( fso.GetFolder(srcDir).Files );
  9. Array.prototype.isInArray = function(a){
  10.     for(var i=0; i<this.length; i++)if(this[i]==a)return true;
  11.     return false;
  12. }
  13. var y = 0;
  14. for(; !e.atEnd(); e.moveNext()){
  15.     var strFile = e.item().Path;
  16.     var m = e.item().Name.match(/^[^-]+-[^-]+-[^-]+-_(\d+).*\.xlsx?$/i);
  17.     if( !m ) continue;
  18.     var x = 0; y++;
  19.     objNewBook.WorkSheets(1).Cells(++x,y).Value = m[1];  //文件名中的编号
  20.     var objBook = objExcel.WorkBooks.Open(strFile);
  21.     var objSheet1 = objBook.WorkSheets(1);
  22.     var objSheet2 = objBook.WorkSheets(2);
  23.     var rows1 = objSheet1.UsedRange.Rows.Count + 1;      //sheet1 行数
  24.     var rows2 = objSheet2.UsedRange.Rows.Count + 1;      //sheet2 行数
  25.     var colm2 = objSheet2.UsedRange.Columns.Count + 1;   //sheet2 列数
  26.     for(var i=1; i<=rows1; i++){
  27.         if( exclude.isInArray(i) ) continue;
  28.         objNewBook.WorkSheets(1).Cells(++x,y).Value = objSheet1.Cells(i,2).Value;
  29.     }
  30.     for(var i=2; i<=colm2; i++){
  31.         for(var j=2; j<=rows2; j++){
  32.             objNewBook.WorkSheets(1).Cells(++x,y).Value = objSheet2.Cells(j,i).Value;
  33.         }
  34.     }
  35.     objBook.Close();
  36. }
  37. objNewBook.SaveAs(dstFile, 51);   //保存文件
  38. objNewBook.Close();
  39. objExcel.Quit();
  40. WSH.Echo('Done')
复制代码

作者: 菜yang    时间: 2019-12-23 20:18

来看看学习学习
作者: 星空独子    时间: 2019-12-23 22:25

回复 4# WHY

运行程序后出现如下情况,不知道该如何解决,我把文件保存的时候时保存为test.js
作者: WHY    时间: 2019-12-24 09:56

根据错误提示,猜都能猜得到,行 9 的路径就是变量 srcDir 的值,修改第一行的值不就行了?
作者: 星空独子    时间: 2019-12-24 16:17

回复 7# WHY
关于路径,我是更改为自己的路径后出现的这个问题。
作者: WHY    时间: 2019-12-24 18:58

回复 8# 星空独子


    提示已经很明确了,就是你的路径错误。
js路径字符为双反斜杠,比如:srcDir = 'E:\\Test\\abc\\123'
作者: 星空独子    时间: 2019-12-24 19:19

回复 9# WHY
我是把路径直接复制过来的,存在双斜杠的差异,但是还存在一个问题,就是第二页的数据没有按规则导入至result.xls中
作者: WHY    时间: 2019-12-24 20:41

回复 10# 星空独子


    因为你顶楼给的样本与你实际的xls文件不一样。
你自己改脚本,你也可以不用。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2