[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程批处理在线视频分享
返回列表 发帖

[文本处理] bat能否把预设文字,批量添加到多个的Excel文件的指定的单元格里?

bat能否把预设文字,批量添加到多个的Excel文件的指定的单元格里?

例如:

某人每天需要处理5个文件,文件内已经有基础内容

分别为:

1.xls
2.xls
3.xlsx
4.xls
5.xlsx

(因Excel版本差异,所以会出现xlsx和xls两种新旧格式)

然后,需要把下列文字分别填入到指定单元格(不是新生成一个Excel文件):

文字一,填入单元格B3;
文字二,填入单元格B4;
文字三,填入单元格B5;

小弟之前百度,暂时发现是只能用批处理生成csv格式的新文件,并填充内容;

所以想问一下各位大佬,能否实现填入,而不是新生成Excel文件;

要求有点多,小弟在此麻烦各位大佬了!

本帖最后由 flashercs 于 2018-12-3 13:00 编辑

是修改第一个表格Sheet1吗?
保存 修改Excel.js 到Excel文件的目录下;
  1. var shell = WScript.CreateObject('WScript.Shell'),
  2.     fso = WScript.CreateObject('Scripting.FileSystemObject'),
  3.     curDir;
  4. curDir = shell.CurrentDirectory = fso.GetParentFolderName(WScript.ScriptFullName);
  5. var aExcelFiles = ['1.xlsx', '2.xls', '3.xlsx', '4.xls'];
  6. var oInsertStr = {
  7.     'B3': '文字一',
  8.     'B4': '文字二',
  9.     'B5': '文字三'
  10. };
  11. try {
  12.     var oExcelApp = WScript.CreateObject('ET.Application');
  13. } catch (e) {
  14.     try {
  15.         oExcelApp = WScript.CreateObject('Excel.Application');
  16.     } catch (e) {
  17.         showError(e, 'Cannot create Excel.Application and ET.Application');
  18.         WScript.Quit(11);
  19.     }
  20. }
  21. oExcelApp.AutomationSecurity = 3;
  22. oExcelApp.DisplayAlerts = false;
  23. for (var i = 0; i < aExcelFiles.length; ++i) {
  24.     try {
  25.         var oWorkbook = oExcelApp.Workbooks.Open(curDir + '\\' + aExcelFiles[i], 0, false);
  26.         var oWorksheet = oWorkbook.Worksheets(1);
  27.         for (var key in oInsertStr) {
  28.             oWorksheet.Range(key).Value = oInsertStr[key];
  29.         }
  30.         oWorkbook.Close(true);
  31.     } catch (e) {
  32.     }
  33. }
  34. oExcelApp.Workbooks.Close();
  35. oExcelApp.Quit();
复制代码

TOP

perl 的 Spreadsheet::WriteExcel  这个模块也可以,很简单。

TOP

来个PS的。
  1. $Excel=New-Object -ComObject Excel.Application
  2. $Excel.Visible=$false
  3. Get-ChildItem ".\*" -Include *.xlsx,*.xls -Recurse|%{
  4. $Workbook=$Excel.Workbooks.Open($_.FullName)
  5. #脚本只修改第一页
  6. $Sheet=$Workbook.WorkSheets.Item(1)
  7. $Sheet.Cells.Item(3,2)='文字一'
  8. $Sheet.Cells.Item(4,2)='文字二'
  9. $Sheet.Cells.Item(5,2)='文字三'
  10. $Workbook.WorkSheets.item(1).Name='第1页修改'
  11. $Workbook.Close()
  12. $Excel.Quit()
  13. }
  14. Gps|?{$_.Name -match "Excel"}|Select $_|Stop-Process
  15. pause
复制代码
==================

TOP

回复 4# xczxczxcz


    好像Excel.Quit() 早了

TOP

本帖最后由 xczxczxcz 于 2018-12-4 20:17 编辑

回复 5# flashercs

这条好像不起作用。
不过 倒是在第11条前少了一条 自动保存  $Workbook.Save()

TOP

本帖最后由 flashercs 于 2018-12-4 20:33 编辑

回复 6# xczxczxcz
  1. $Excel = New-Object -ComObject Excel.Application
  2. $Excel.Visible = $false
  3. $Excel.AutomationSecurity = 3;
  4. $Excel.DisplayAlerts = $false;
  5. Get-ChildItem . -Filter *.xls -Include *.xlsx, *.xls -Recurse| % {
  6.     $Workbook = $Excel.Workbooks.Open($_.FullName)
  7.     #脚本只修改第一页
  8.     $Sheet = $Workbook.WorkSheets.Item(1)
  9.     $Sheet.Cells.Item(3, 2) = '文字一1'
  10.     $Sheet.Cells.Item(4, 2) = '文字二2'
  11.     $Sheet.Cells.Item(5, 2) = '文字三3'
  12.     # $Workbook.WorkSheets.item(1).Name = '第1页修改'
  13.     $Workbook.Close($true)
  14. }
  15. $Excel.Quit()
复制代码
ps里的excel com quit失败.....什么情况?

TOP

回复 7# flashercs

WIN10  X64   Office 2016 木有任何问题。

TOP

回复 7# flashercs

$Excel.quilt() 放‘}’循环内或外,没发现任何问题。
  1. ...
  2. $Sheet.Cells.Item(3,2)='文字一'
  3. $Sheet.Cells.Item(4,2)='文字二'
  4. $Sheet.Cells.Item(5,2)='文字三'
  5. $Workbook.Save()
  6. $Workbook.Close()
  7. $Excel.Quit()
  8. }
复制代码
----------------
  1. ...
  2. $Sheet.Cells.Item(3,2)='文字一'
  3. $Sheet.Cells.Item(4,2)='文字二'
  4. $Sheet.Cells.Item(5,2)='文字三'
  5. $Workbook.Save()
  6. $Workbook.Close()
  7. }
  8. $Excel.Quit()
复制代码
发现都没有区别。

TOP

返回列表