aardio 官方社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
楼主: nvt303

Excel / aardio 编程范例

  [复制链接]

16

主题

70

回帖

661

积分

三级会员

积分
661
QQ
发表于 2013-1-31 11:26:35 | 显示全部楼层
好东西,值得顶

0

主题

9

回帖

71

积分

一级会员

积分
71
发表于 2013-2-23 23:09:44 | 显示全部楼层

15

主题

113

回帖

922

积分

三级会员

积分
922
发表于 2013-2-24 00:44:52 | 显示全部楼层
好多资料和应用,以后用得上,感谢了!

5

主题

64

回帖

475

积分

二级会员

积分
475
发表于 2013-3-16 11:22:41 | 显示全部楼层
太棒了,正好需要一些excel的资料,收藏了~~~

0

主题

13

回帖

76

积分

一级会员

积分
76
发表于 2013-4-10 23:57:05 | 显示全部楼层
学习了    比vb简单!

1

主题

3

回帖

22

积分

新手入门

积分
22
发表于 2013-4-21 16:10:31 | 显示全部楼层
版主,能不能提供一下aardio操作excel的常用文档?我现在
import com.excel;
excel = com.excel();
excel.WorkBooks.Open(excelName)
可以打开excel了,但是我想把excel另存为anotherExcelName,找不到文档了。。

2

主题

18

回帖

201

积分

二级会员

积分
201
发表于 2013-4-21 17:26:04 | 显示全部楼层
mark 下

2

主题

31

回帖

178

积分

一级会员

积分
178
发表于 2013-4-23 08:06:30 | 显示全部楼层
占位子  有时间学习

5

主题

14

回帖

109

积分

一级会员

积分
109
发表于 2014-4-6 20:08:50 | 显示全部楼层
刚好在学excel,楼主强大,先收藏了

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:40:16 | 显示全部楼层
作者: 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);
sh.Cells(1,1).value2=
"表头";

for(i=2;9;1){
    sh.Cells(11-i,1).value2=
"aardio"+i;
}

thread.delay(1000);

/*
排序,支持微软 Excel,WPS 表格可能报错。
*/

sh.Range(
"A1:A9").Sort(sh.Range("A1"),,,,,,,1,,,1)

---------------------------------------------------------------------------------------------------------

Sort 函数说明

对数据透视表、单元格区域进行排序。
expression.Sort(Key1, Order1, Key2, Type, Order2, Key3, Order3, Header, OrderCustom, MatchCase, Orientation, SortMethod, DataOption1, DataOption2, DataOption3)

expression   必需。该表达式返回Range集合。
参数
常量
内容
Key1
 
字符串 or Range对象。
Order1
xlAscending  1
升序(默认值)
xlDescending  2
降序
Key2
 
第2排序对象。字符串 or Range对象。
type
 
仅在对数据透视表排序时用
Order2
xlAscending
第2排序对象的升序
xlDescending
第2排序对象的降序
Key3
 
第3排序对象。字符串 or Range对象。
Order3
xlAscending
第3排序对象的升序
xlDescending
第3排序对象的降序
Header
xlGuess  0
自动将首行作为标题行
xlContinuous

默认值。应对整个区域进行排序

xlYes  1
不应对整个区域进行排序

OrderCustom
 
从 1 开始的整数
MatchCase
TRUE
大小写敏感。即区别大小写
FALSE
大小写不敏感。即不区别大小写
Orientation
xlSortRows
从上往下排序,默认值。
xlSortColumn
从左到右排序
SortMethod
xlPinYin
拼音排序,默认值
xlStroke
笔画排序
DataOption1
xlSortTextAsNumbers

将文本作为数字型数据排序

xlSortNormal

分别对数字和文本数据进行排序,默认值

DataOption2
xlSortTextAsNumbers
将文本作为数字型数据排序
xlSortNormal
分别对数字和文本数据进行排序,默认值
DataOption3
xlSortTextAsNumbers
将文本作为数字型数据排序
xlSortNormal
分别对数字和文本数据进行排序,默认值

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:48:37 | 显示全部楼层
作者: nvt303

数据透视表 = function( excel,工作簿,工作表,行字段1,行字段2,数据字段 ){
    工作表.PivotTableWizard()
//数据透视表向导
   
   
var sh4=工作簿.ActiveSheet //行字段1
    var 透视表=sh4.PivotTables("数据透视表1")
    透视表.PivotFields(行字段1).Orientation = 1
/*xlRowField*/
    透视表.PivotFields(行字段1).Position = 1
   
   
if(行字段2){
        
//行字段2
        透视表.PivotFields(行字段2).Orientation = 1/*xlRowField*/
        透视表.PivotFields(行字段2).Position = 2        
    }
   
   
//数据字段
    var s= "求和项:"++数据字段
    透视表.AddDataField(透视表.PivotFields(数据字段), s, -4157
/*xlSum*/ )
   
   
/**
    //删除汇总
    var s=行字段1++"[All;Total]"
    透视表.PivotSelect(s, /*xlDataAndLabel*/,/* True*/)
    excel.Selection.Delete()
    **/

   
    sh4.Cells(3,4).select()
}

--------------------------------------------------------------------------------------
<span]小技巧:使用数据透视表可以实现【排重】

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()
}


您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2024-3-1 09:12 , Processed in 0.061418 second(s), 20 queries .

Powered by Discuz! X3.5

Copyright © 2001-2023 Tencent Cloud.

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