标题: [文本处理] bat能否把预设文字,批量添加到多个的Excel文件的指定的单元格里? [打印本页]
作者: clk_gameboy 时间: 2018-12-3 11:42 标题: 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 12:59
本帖最后由 flashercs 于 2018-12-3 13:00 编辑
是修改第一个表格Sheet1吗?
保存 修改Excel.js 到Excel文件的目录下;- var shell = WScript.CreateObject('WScript.Shell'),
- fso = WScript.CreateObject('Scripting.FileSystemObject'),
- curDir;
- curDir = shell.CurrentDirectory = fso.GetParentFolderName(WScript.ScriptFullName);
- var aExcelFiles = ['1.xlsx', '2.xls', '3.xlsx', '4.xls'];
- var oInsertStr = {
- 'B3': '文字一',
- 'B4': '文字二',
- 'B5': '文字三'
- };
- try {
- var oExcelApp = WScript.CreateObject('ET.Application');
- } catch (e) {
- try {
- oExcelApp = WScript.CreateObject('Excel.Application');
- } catch (e) {
- showError(e, 'Cannot create Excel.Application and ET.Application');
- WScript.Quit(11);
- }
- }
- oExcelApp.AutomationSecurity = 3;
- oExcelApp.DisplayAlerts = false;
- for (var i = 0; i < aExcelFiles.length; ++i) {
- try {
- var oWorkbook = oExcelApp.Workbooks.Open(curDir + '\\' + aExcelFiles[i], 0, false);
- var oWorksheet = oWorkbook.Worksheets(1);
- for (var key in oInsertStr) {
- oWorksheet.Range(key).Value = oInsertStr[key];
- }
- oWorkbook.Close(true);
- } catch (e) {
-
- }
- }
- oExcelApp.Workbooks.Close();
- oExcelApp.Quit();
复制代码
作者: zuodx 时间: 2018-12-3 13:10
perl 的 Spreadsheet::WriteExcel 这个模块也可以,很简单。
作者: xczxczxcz 时间: 2018-12-4 19:10
来个PS的。- $Excel=New-Object -ComObject Excel.Application
- $Excel.Visible=$false
- Get-ChildItem ".\*" -Include *.xlsx,*.xls -Recurse|%{
- $Workbook=$Excel.Workbooks.Open($_.FullName)
- #脚本只修改第一页
- $Sheet=$Workbook.WorkSheets.Item(1)
- $Sheet.Cells.Item(3,2)='文字一'
- $Sheet.Cells.Item(4,2)='文字二'
- $Sheet.Cells.Item(5,2)='文字三'
- $Workbook.WorkSheets.item(1).Name='第1页修改'
- $Workbook.Close()
- $Excel.Quit()
- }
- Gps|?{$_.Name -match "Excel"}|Select $_|Stop-Process
- pause
复制代码
==================
作者: flashercs 时间: 2018-12-4 19:41
回复 4# xczxczxcz
好像Excel.Quit() 早了
作者: xczxczxcz 时间: 2018-12-4 20:14
本帖最后由 xczxczxcz 于 2018-12-4 20:17 编辑
回复 5# flashercs
这条好像不起作用。
不过 倒是在第11条前少了一条 自动保存 $Workbook.Save()
作者: flashercs 时间: 2018-12-4 20:28
本帖最后由 flashercs 于 2018-12-4 20:33 编辑
回复 6# xczxczxcz - $Excel = New-Object -ComObject Excel.Application
- $Excel.Visible = $false
- $Excel.AutomationSecurity = 3;
- $Excel.DisplayAlerts = $false;
- Get-ChildItem . -Filter *.xls -Include *.xlsx, *.xls -Recurse| % {
- $Workbook = $Excel.Workbooks.Open($_.FullName)
- #脚本只修改第一页
- $Sheet = $Workbook.WorkSheets.Item(1)
- $Sheet.Cells.Item(3, 2) = '文字一1'
- $Sheet.Cells.Item(4, 2) = '文字二2'
- $Sheet.Cells.Item(5, 2) = '文字三3'
- # $Workbook.WorkSheets.item(1).Name = '第1页修改'
- $Workbook.Close($true)
- }
- $Excel.Quit()
复制代码
ps里的excel com quit失败.....什么情况?
作者: xczxczxcz 时间: 2018-12-4 20:47
回复 7# flashercs
WIN10 X64 Office 2016 木有任何问题。
作者: xczxczxcz 时间: 2018-12-4 20:54
回复 7# flashercs
$Excel.quilt() 放‘}’循环内或外,没发现任何问题。- ...
- $Sheet.Cells.Item(3,2)='文字一'
- $Sheet.Cells.Item(4,2)='文字二'
- $Sheet.Cells.Item(5,2)='文字三'
- $Workbook.Save()
- $Workbook.Close()
- $Excel.Quit()
- }
复制代码
----------------- ...
- $Sheet.Cells.Item(3,2)='文字一'
- $Sheet.Cells.Item(4,2)='文字二'
- $Sheet.Cells.Item(5,2)='文字三'
- $Workbook.Save()
- $Workbook.Close()
- }
- $Excel.Quit()
复制代码
发现都没有区别。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |