aardio 官方社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 42812|回复: 32

Excel / aardio 编程范例

  [复制链接]

7

主题

293

回帖

1900

积分

新手入门

积分
1900
QQ
发表于 2012-3-4 21:20:05 | 显示全部楼层 |阅读模式

评分

参与人数 9 +600 +420 收起 理由
dem + 10 很给力!
笑问天 + 50 很给力!
田雨春楊 + 30 很给力!
cjc0045 + 90 很给力!
chentca + 50 很给力!
ghl781258 + 50
coder + 40 很给力!
qqmmcc + 100 + 100
JacenHe + 500 谢谢!

查看全部评分

170

主题

2187

回帖

1万

积分

管理员

积分
13251
发表于 2022-1-12 14:02:14 | 显示全部楼层
作者: nvt303
import com.excel;

var excel = com.excel() //创建Excel对象
var book = excel.Workbooks.Add()  //添加工作簿
excel.Visible = true; //显示界面
//excel.Application.DisplayAlerts = false; //退出不提示

var sh = book.Worksheets(1)
for(i=1;10){
    sh.Cells(i,1).value2 =
"aardio"+i;
}

thread.delay(500)
sh.Range(
"A8:A10").AutoFill(sh.Range("A8:A20")); //自动填充

AutoFill 函数说明
expression.AutoFill(Destination, Type)

expression   必需。该表达式返回“应用于”列表中的对象之一。
Destination   Range 对象类型,必需。要填充的单元格。目标区域必须包括源区域。
Type  XlAutoFillType 类型,必需。指定填充类型。

XlAutoFillType 可为以下 XlAutoFillType 常量之一。
excel.xlFillDays  5
excel.xlFillFormats  3
excel.xlFillSeries  2
excel.xlFillWeekdays  6
excel.xlGrowthTrend  10
excel.xlFillCopy  1
excel.xlFillDefault  0  [ i ]default
excel.xlFillMonths  7
excel.xlFillValues  4
excel.xlFillYears  8
excel.xlLinearTrend  9
如果省略本参数或将本参数指定为 excel.xlFillDefault,则 Microsoft Excel 将依据源区域选择最适当的填充方式。

import console;
import com.excel;

//创建Excel对象
var excel = com.excel();

//使用成员属性读取 COM 对象的枚举或常量值
console.log(excel.xlLinearTrend);

//也可以这样写
console.log(5/*_xlLinearTrend*/);

console.pause(
true);





170

主题

2187

回帖

1万

积分

管理员

积分
13251
发表于 2022-1-12 16:44:06 | 显示全部楼层
作者: nvt303

import com.excel;

var excel = com.excel() //创建Excel对象
var book = excel.Workbooks.Add() //添加工作簿
excel.Visible = true; //显示界面
//excel.Application.DisplayAlerts = false; //退出不提示

var sh = book.Worksheets(1);
var str={
   
"日期|金额|手续费|清算金额|";
   
"2012-01-01|10000|50|9950|";
   
"2012-01-01|10000|50|9950|";
   
"2012-01-01|10000|50|9950|";
   
"2012-01-02|10000|50|9950|";
   
"2012-01-03|10000|50|9950|";
   
"2012-01-03|10000|50|9950|"
}

for(i=1;#str){
   
var arr = string.split(str[ i ],"|")//拆分
    for(j=1;#arr;1){
        sh.cells(i,j).value2=arr[j]
    }
}
thread.delay(1000);

var total={2;3;4}//需要汇总的列
sh.Range("A1").Subtotal(1/*分类列*/,-4157 /*xlSum*/,total) //按日期分类汇总
sh.Columns("A:A").EntireColumn.AutoFit()  //A列调整为最适当的列宽


---------------------------------------------------------------------
Subtotal 方法
应用于 Range 对象的 Subtotal 方法。
创建指定区域或当前区域(如果该区域为单个单元格时)的分类汇总。
expression.Subtotal(GroupBy, Function, TotalList, Replace, PageBreaks, SummaryBelowData)
expression   必需。该表达式返回一个 Range 对象。
GroupBy   Long 类型,必需。要用于分组的字段,为基于 1 的整数偏移量。有关详细信息,请参阅示例。
Function   XlConsolidationFunction 类型,必需。分类汇总函数。
XlConsolidationFunction 可为以下 these XlConsolidationFunction 常量之一。
xlAverage  -4106
xlCount  -4112
xlCountNums  -4113
xlMax  -4136
xlMin  -4139
xlProduct  -4149
xlStDev  -4155
xlStDevP  -4156
xlSum  -4157
xlUnknown  1000
xlVar  -4164
xlVarP  -4165 TotalList   Variant 类型,必需。基于 1 的字段偏移量数组,指示将被分类汇总的字段。有关详细信息,请参阅示例。
Replace   Variant 类型,可选。如果为 True,则替换现有分类汇总。默认值为 False。
PageBreaks   Variant 类型,可选。如果为 True,则在每一组之后添加分页符。默认值为 False。
SummaryBelowData   XlSummaryRow 类型,可选。放置相对于分类汇总的汇总数据。

170

主题

2187

回帖

1万

积分

管理员

积分
13251
发表于 2022-1-12 16:54:24 | 显示全部楼层
作者: nvt303

先学习下VBA参考
PasteSpecial 方法
应用于 Range 对象的 PasteSpecial 方法。
将剪贴板中的 Range 对象粘贴到指定区域中。
expression.PasteSpecial(Paste, Operation, SkipBlanks, Transpose)
expression   必需。该表达式返回一个 Range 对象。
Paste   XlPasteType 类型,可选。指定要粘贴的区域部分。
          XlPasteType 可为以下 XlPasteType 常量之一。
xlPasteAll  -4104  默认值  全部
xlPasteAllExceptBorders  7   边框除外
xlPasteColumnWidths  8  列宽
xlPasteComments  -4144  批注
xlPasteFormats  -4122  格式
xlPasteFormulas  -4123  公式
xlPasteFormulasAndNumberFormats  1  公式和数字格式
xlPasteValidation  6  有效性验证
xlPasteValues  -4163  数值
xlPasteValuesAndNumberFormats  12  值和数字格式
Operation   XlPasteSpecialOperation 类型,可选。指定粘贴操作。
          XlPasteSpecialOperation 可为以下 XlPasteSpecialOperation 常量之一。
xlPasteSpecialOperationNone  -4124  默认值  无
xlPasteSpecialOperationAdd  2  加
xlPasteSpecialOperationSubtract  3  减
xlPasteSpecialOperationMultiply  4  乘
xlPasteSpecialOperationDivide  5  除
SkipBlanks   Variant 类型,可选。若为 True,则不将剪贴板上区域中的空白单元格粘贴到目标区域中。默认值为 False。
Transpose   Variant 类型,可选。若为 True,则粘贴区域时转置行和列。默认值为 False。
-------------------------------------------------------------------------------------------------------------------------------------------------
然后再用aardio实现

工作表.Range("D6:D9").copy()
工作表.Range(
"E6:L9").PasteSpecial( -4163 ,  , , )  //粘贴数值
工作表.Range(
"E6:L9").PasteSpecial(  ,  4  /*乘*/  ,  ,  )  //乘

---------------------------------------------------------------------------------------------------------------------------------------------------
//在两个工作薄之间选择性粘贴(转置粘贴数值)——2012年4月17日

import com.excel;
var excel = com.excel() //创建Excel对象
var book = excel.Workbooks.Add() //添加工作簿
excel.Visible = true; //显示界面
//excel.Application.DisplayAlerts = false; //退出不提示

//创建工作簿
var book1 = excel.WorkBooks.Add();//添加工作簿1
var book2 = excel.WorkBooks.Add();//添加工作簿2

var b1sh1 = book1.WorkSheets(1);//工作簿1的表1
var b2sh1 = book2.WorkSheets(1);//工作簿2的表2

//添加测试用数据到工作簿1的表1
for(i=1;10;1){
   
for(j=1;5;1){
        b1sh1.Cells(i,j).value2 = j;
    }
}
b1sh1.range(
"C5").Formula = "=SUM(C1:C4)";

//复制工作簿1表1的数据 粘贴 至 工作簿2的表1
b1sh1.Range("A1:E10").Copy();
b2sh1.Range(
"A1").PasteSpecial(-4163,,,true); //转置粘贴数值
b2sh1.Activate();
  
    sh4.Cells(3,4).select()
}


75

主题

767

回帖

5045

积分

六级会员

The only one

积分
5045
发表于 2012-3-4 21:33:24 | 显示全部楼层
楼主辛苦了!

52

主题

1272

回帖

7276

积分

荣誉会员

积分
7276
发表于 2012-3-4 21:37:52 | 显示全部楼层
谢谢~  在 nvt 耐心指导下 我终于入门了{:soso_e112:}

0

主题

5

回帖

28

积分

新手入门

积分
28
发表于 2012-3-5 08:38:43 | 显示全部楼层
不错,简单明了!

7

主题

293

回帖

1900

积分

新手入门

积分
1900
QQ
 楼主| 发表于 2012-3-6 16:44:56 | 显示全部楼层
调用:页面设置( 工作表 );
/*页面设置{{*/
页面设置=
function( 工作表 ){
    pageSet=工作表.PageSetup
   
namespace
pageSet{
        PrintTitleRows =
"$1:$1"   
//顶端标题行
        PrintTitleColumns = "$A:$A"
//左端标题列
        PrintArea = ""              
//打印区域
        LeftHeader = "微软用户"     
//页眉-左
        CenterHeader = " 第 &P 页 "
//页眉-中
        RightHeader = "&D"         
//页眉-右
        LeftFooter = ""            
//页脚-左
        CenterFooter = "第 &P 页,共 &N 页"
//页脚-中
        RightFooter = ""            
//页脚-右
        LeftMargin = Application.InchesToPoints(0.75)   
//左边距
        RightMargin = Application.InchesToPoints(0.75)  
//右边距
        TopMargin = Application.InchesToPoints(1)      
//上边距
        BottomMargin = Application.InchesToPoints(1)   
//下边距
        HeaderMargin = Application.InchesToPoints(0.5)  
//页眉边距
        FooterMargin = Application.InchesToPoints(0.5)  
//页脚边距
            
/*
                InchesToPoints 英寸到磅值的转换
                CentimetersToPoints 厘米到磅值的转换
            */

        PrintHeadings = 0           
//是否打印行号列标
        PrintGridlines = 0         
//是否打印网格线
        PrintComments = -4142      
//是否打印批注
            
/*
                xlPrintInPlace  16
                xlPrintNoComments  -4142
                xlPrintSheetEnd  1  以尾部附注的方式打印
            */

        CenterHorizontally = 1      
//水平居中
        CenterVertically = 0        
//垂直居中
        Orientation = 2            
//方向(横向/纵向)
            
/*
                xlLandscape  2  横向
                xlPortrait  1   纵向
            */

        Draft = 0               
//按草稿方式
        PaperSize = 9           
//纸张大小
            
/*
                xlPaper10x14  16
                xlPaper11x17  17
                xlPaperA3  8
                xlPaperA4  9
                xlPaperA4Small  10
                xlPaperA5  11
                xlPaperB4  12
                xlPaperB5  13
                xlPaperCsheet  24
                xlPaperDsheet  25
                xlPaperEnvelope10  20
                xlPaperEnvelope11  21
                xlPaperEnvelope12  22
                xlPaperEnvelope14  23
                xlPaperEnvelope9  19
                xlPaperEnvelopeB4  33
                xlPaperEnvelopeB5  34
                xlPaperEnvelopeB6  35
                xlPaperEnvelopeC3  29
                xlPaperEnvelopeC4  30
                xlPaperEnvelopeC5  28
                xlPaperEnvelopeC6  31
                xlPaperEnvelopeC65  32
                xlPaperEnvelopeDL  27
                xlPaperEnvelopeItaly  36
                xlPaperEnvelopeMonarch  37
                xlPaperEnvelopePersonal  38
                xlPaperEsheet  26
                xlPaperExecutive  7
                xlPaperFanfoldLegalGerman  41
                xlPaperFanfoldStdGerman  40
                xlPaperFanfoldUS  39
                xlPaperFolio  14
                xlPaperLedger  4
                xlPaperLegal  5
                xlPaperLetter  1
                xlPaperLetterSmall  2
                xlPaperNote  18
                xlPaperQuarto  15
                xlPaperStatement  6
                xlPaperTabloid  3
                xlPaperUser  256
            */

        FirstPageNumber = -4105     
//起始页码-4105
        Order = 1                  
//打印顺序
            
/*
                xlDownThenOver  1 先列后行
                xlOverThenDown  2 先行后列  
            */

        BlackAndWhite = 0           
//单色打印
        Zoom = 100                  
//缩放
        
//FitToPagesWide = 1            //调整为__页宽
        
//FitToPagesTall = 1            //调整为__页高
        PrintErrors = 1            
//错误单元格打印为
            
/*
                xlPrintErrorsBlank  1 空白
                xlPrintErrorsDash  2
                xlPrintErrorsDisplayed  0
                xlPrintErrorsNA  3
            */

        工作表.PrintPreview()      
//打印预览
}
}
/*}}*/

点评

加油,怎么没反应?要装打印机驱动吗?  发表于 2012-3-6 20:31

7

主题

293

回帖

1900

积分

新手入门

积分
1900
QQ
 楼主| 发表于 2012-3-6 21:29:48 | 显示全部楼层
ghl781258 加油,怎么没反应?要装打印机驱动吗?

最后一句是【打印预览】,需要安装打印驱动。可以下载doPDF安装。

2

主题

43

回帖

252

积分

二级会员

积分
252
发表于 2012-3-7 00:03:53 | 显示全部楼层

1

主题

22

回帖

193

积分

一级会员

积分
193
发表于 2012-3-7 11:08:02 | 显示全部楼层
nvt303 发表于 2012-3-6 21:29
最后一句是【打印预览】,需要安装打印驱动。可以下载doPDF安装。

随便装个打印机驱动即可

点评

是。  发表于 2012-3-7 21:23

7

主题

115

回帖

747

积分

三级会员

积分
747
QQ
发表于 2012-3-9 19:50:08 | 显示全部楼层
不错,谢谢楼主

7

主题

293

回帖

1900

积分

新手入门

积分
1900
QQ
 楼主| 发表于 2012-3-14 09:04:55 | 显示全部楼层
【aardio for Excel】工作表的新建、复制、删除、选择、打印预览、打印


1、新建工作表、图表或宏表。新建的工作表将成为活动工作表。
    expression.Add(Before, After, Count, Type)
          expression   必需。
        Before   可选。指定工作表对象,新建的工作表将置于此工作表之前。
        After   可选。指定工作表对象,新建的工作表将置于此工作表之后。
        Count   可选。要新建的工作表的数目。默认值为 1。
        Type   可选。指定工作表类型。可为以下 XlSheetType 常量之一:
            xlWorksheet   -4167  默认值
            xlChart  -4109
            xlExcel4MacroSheet   3
            xlExcel4IntlMacroSheet  4
2、将指定工作表复制到工作簿的另一位置。
[ i ]    expression.Copy([ i ]Before, [ i ]After)
[ i ]        expression   必需。
[ i ]        Before  可选。指定某工作表,复制的工作表将置于此工作表之前。如果已经指定了 [ i ]After,则不能指定 [ i ]Before。
[ i ]        After   可选。指定某工作表,复制的工作表将置于此工作表之后。如果已经指定了 [ i ]Before,则不能指定 [ i ]After。
3、删除对象。
[ i ]    expression.Delete( )
4、选定对象。
[ i ]    expression.Select( )
5、以打印效果显示指定的对象。
[ i ]    expression.PrintPreview( )
6、打印指定对象。
    [ i ]expression.PrintOut([ i ]From, [ i ]To, [ i ]Copies, [ i ]Preview, [ i ]ActivePrinter, [ i ]PrintToFile, [ i ]Collate, [ i ]PrToFileName)
      
[ i ]expression   必需。
         From   可选。打印的开始页号。如果省略该参数,将从起始位置开始打印。
         To   可选。打印的终止页号。如果省略该参数,将打印至最后一页。
         Copies   可选。要打印的份数。如果省略该参数,将只打印一份
         Preview   可选。如果该值为 True,则 Microsoft Excel 打印指定对象之前进行打印预览。如果该值为False(或者省略此参数),则立即打印该对象
         ActivePrinter   可选。设置活动打印机的名称。
         PrintToFile   可选。如果该值为 True,则打印输出到文件。如果没有指定 PrToFileName,则 Microsoft Excel 将提示用户输入要输出文件的文件名。
         Collate   可选。如果该值为 True,则逐份打印每份副本
         PrToFileName   可选。如果 PrintToFile 为 True,则本参数指定要打印到的文件名。

7

主题

293

回帖

1900

积分

新手入门

积分
1900
QQ
 楼主| 发表于 2012-3-14 09:36:21 | 显示全部楼层
应用于 Range 对象的 Replace 方法

使用本方法并不会更改选定区域或活动单元格。

expression.Replace(What, Replacement, LookAt, SearchOrder, MatchCase, MatchByte, SearchFormat, ReplaceFormat)
    expression   必需。
    What   必需。Microsoft Excel 要搜索的字符串。
    Replacement  必需。替换字符串。
    LookAt  可选。可为以下 XlLookAt 常量之一:
          xlWhole   1  或 xlPart    2
    SearchOrder  可选。可为以下 XlSearchOrder 常量之一:
          xlByRows  1  或 xlByColumns  2
    MatchCase  可选。如果为 True,则进行区分大小写的搜索。
    MatchByte   可选。只有当在 Microsoft Excel 中选择或安装了双字节语言支持时,才可以使用本参数。如果为 True,则使双字节字符仅匹配双字节字符。如果为 False,则双字节字符可匹配其等价的单字节字符。
    SearchFormat   可选。该方法的搜索格式。
    ReplaceFormat   可选。该方法的替换格式。

4

主题

16

回帖

143

积分

一级会员

积分
143
发表于 2012-6-18 11:49:38 | 显示全部楼层
好帖要收藏

0

主题

5

回帖

35

积分

新手入门

积分
35
发表于 2012-7-21 22:48:13 | 显示全部楼层
安装了doPDF及其它打印机驱动,点了没反应是什么原因

0

主题

5

回帖

35

积分

新手入门

积分
35
发表于 2012-7-21 22:49:41 | 显示全部楼层
nvt303 发表于 2012-3-6 16:44
调用:页面设置( 工作表 ); /*页面设置{{*/
页面设置=function( 工作表 ){
    pageSet=工作表.PageSetup ...

安装了doPDF及其它打印机驱动,点了没反应是什么原因

7

主题

293

回帖

1900

积分

新手入门

积分
1900
QQ
 楼主| 发表于 2012-7-23 10:02:19 | 显示全部楼层
lybsady 发表于 2012-7-21 22:49
安装了doPDF及其它打印机驱动,点了没反应是什么原因

import com;
var excel = com.CreateObject("Excel.Application")//创建Excel对象
var book=excel.Workbooks.Add() //添加工作簿
excel.Visible = true                        //设置可见
var sh = book.Worksheets(1)         //表1
sh.Cells(1,1).value2="打印测试"
/*页面设置{{*/
页面设置=
function( 工作表 ){
    pageSet=工作表.PageSetup
   
namespace pageSet{
        PrintTitleRows =
"$1:$1"    //顶端标题行
        PrintTitleColumns = "$A:$A" //左端标题列
        PrintArea = ""              //打印区域
        LeftHeader = "微软用户"     //页眉-左
        CenterHeader = " 第 &P 页 " //页眉-中
        RightHeader = "&D"          //页眉-右
        LeftFooter = ""             //页脚-左
        CenterFooter = "第 &P 页,共 &N 页" //页脚-中
        RightFooter = ""            //页脚-右
        LeftMargin = Application.InchesToPoints(0.75)   //左边距
        RightMargin = Application.InchesToPoints(0.75)  //右边距
        TopMargin = Application.InchesToPoints(1)       //上边距
        BottomMargin = Application.InchesToPoints(1)    //下边距
        HeaderMargin = Application.InchesToPoints(0.5)  //页眉边距
        FooterMargin = Application.InchesToPoints(0.5)  //页脚边距
            /*
                InchesToPoints 英寸到磅值的转换
                CentimetersToPoints 厘米到磅值的转换
            */

        PrintHeadings = 0           
//是否打印行号列标
        PrintGridlines = 0          //是否打印网格线
        PrintComments = -4142       //是否打印批注
            /*
                xlPrintInPlace  16
                xlPrintNoComments  -4142
                xlPrintSheetEnd  1  以尾部附注的方式打印
            */

        CenterHorizontally = 1      
//水平居中
        CenterVertically = 0        //垂直居中
        Orientation = 2             //方向(横向/纵向)
            /*
                xlLandscape  2  横向
                xlPortrait  1   纵向
            */

        Draft = 0               
//按草稿方式
        PaperSize = 9           //纸张大小
                    FirstPageNumber = -4105     //起始页码-4105
        Order = 1                   //打印顺序
            /*
                xlDownThenOver  1 先列后行
                xlOverThenDown  2 先行后列  
            */

        BlackAndWhite = 0           
//单色打印
        Zoom = 100                  //缩放
        //FitToPagesWide = 1            //调整为__页宽
        //FitToPagesTall = 1            //调整为__页高
        PrintErrors = 1             //错误单元格打印为
            /*
                xlPrintErrorsBlank  1 空白
                xlPrintErrorsDash  2
                xlPrintErrorsDisplayed  0
                xlPrintErrorsNA  3
            */

        工作表.PrintPreview()      
//打印预览
}
}
/*}}*/
页面设置(sh)
-----------------------------------------
运行完毕会看到打印预览的效果

4

主题

43

回帖

489

积分

培训班

积分
489
发表于 2012-8-14 19:48:16 | 显示全部楼层
所有的链接地址都失效了。

点评

论坛二级域名取消,直接换成 www 即可。帖子我编辑了一下,现在应当可以了  发表于 2012-8-14 21:26

33

主题

497

回帖

3294

积分

荣誉会员

积分
3294
发表于 2012-8-14 21:25:50 | 显示全部楼层
帖子链接失效,我重新编辑了一下。

点评

同意: 5.0 真棒: 5.0
继续努力: 5.0
同意: 5 真棒: 5 继续努力: 5
斑斑辛苦了。  发表于 2012-8-14 21:52

7

主题

293

回帖

1900

积分

新手入门

积分
1900
QQ
 楼主| 发表于 2012-8-15 08:02:28 | 显示全部楼层
lujjjh 发表于 2012-8-14 21:25
帖子链接失效,我重新编辑了一下。


多谢lujjjh!

13

主题

100

回帖

687

积分

三级会员

积分
687
发表于 2012-10-25 12:42:42 | 显示全部楼层
最好是和业务有直接的例子,不过先看看基础的最好不过了
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|aardio.com|aardio 官方社区 ( 皖ICP备09012014号 )

GMT+8, 2024-3-1 08:44 , Processed in 0.068023 second(s), 26 queries .

Powered by Discuz! X3.5

Copyright © 2001-2023 Tencent Cloud.

快速回复 返回顶部 返回列表