Snapde是世界上最好用的CSV大文件编辑电子表格软件,内核全部用C语言编写,对于数据编辑运算却非常轻巧强大:
1、运行速度:打开CSV文件速度比Excel、WPS快四倍,上百兆的CSV文件打开只需十几秒,上千万行的排序都可以几秒内完成
2、内存占用:文件内容全部放在内存中,纯粹的C语言指针将内存使用优化到极致,大部分情况内存也就比CSV文件大2-3倍,有些情况内存甚至比CSV文件还小
3、CSV大小:看机器内存,一般8G内存机器可以一次编辑2G的CSV文件
4、最大行数:Excel2007以上版本最多为1048576行,Snapde可以编辑的行数是Excel十几二十倍以上,一般8G内存机器都可以打开1000万到2000万行CSV进行编辑
5、分页编辑:对于大于2G的CSV大数据,还可以进行分页编辑一次打开1000万行编辑保存,然后打开下1000万行进行编辑保存。。。
6、数据运算:软件集合了Exprtk、C、python语言执行器;经测试Exprtk执行效率比C#、java慢一点(20%),C语言比C#、java快很多,python比Exprtk、C慢10倍左右但可用资源多;不用说Excel的VBA,这三种语言都可以直接虐杀它
7、运行环境:windows
一、文件功能
1、新建电子表格,默认是299行、25列,如果想要增加行数可以在底下空白处双击鼠标左键一次添加300行,想要增加列数可以在右边空白处双击鼠标左键一次添加26列;如果想要精确控制行列数可以在编辑下的编辑行列数菜单设置具体行列数
2、打开CSV、TXT、smd文件,CSV是逗号分隔的文本文件,TXT是tab键分割的文本文件,smd是Snapde自身定义的文件格式(打开保存速度比CSV、TXT快两倍),软件可以自动识别GBK、UTF8、UNICODE编码,保存只能保存成GBK编码
3、分页打开,如果CSV文件太大可以进行非凡也打开,指定是否保留第一行标题、开始行号、一次打开的行数
4、保存,新建、打开、分页打开的文件进行保存
5、全部保存,新建、打开、分页打开的文件一次性全部保存
6、另存,当前文件可以另存为新文件或者新格式文件
7、过滤数据另存,将当前过滤出来的数据另存
8、设置存储编码,文件的编码格式判断错误打开的CSV会是乱码,手动设置正确的编码可以去掉乱码,支持编码格式有:ANSI、UTF8、UTF8无bom、UNICODE、UNICODE大端
9、设置引号格式,设置引号格式可以设置判断双引号和不判断双引号,以防止打开错误
10、分类另存,可以按照最多3列内容进行文件分类另存,自动按照类别存储为不同文件
11、文件追加,将很多子文件追加到当前打开本的文件中,如果第一行标题相同会自动过滤掉新文件标题行
12、文件分割,将本文件分割保存成多个子文件,包括:是否保留第一行标题,按行数分割或者按文件数分割
13、退出,退出软件
二、编辑功能
1、灵活的选择集:全选、行选、列选、框选
2、单元格非常优秀的多行编辑功能,单元格支持编辑几兆到几十兆的多行文本
3、编辑支持包含数字的序列变化:框选需要变化的单元格进行编辑,按住ctrl键然后完成编辑,如果编辑内容中存在数字这些单元格会得到序列变化内容,否则内容相同
4、强大的撤销、重做功能
5、支持对选择集的剪切、复制、粘贴
6、清除内容
7、删除:删除选定行、列
8、全选
9、插入行/列:在选定行或列前面可以插入一行或一列或2行或2列
10、恢复宽高:将选定的行或列恢复成默认的宽高
11、隐藏:将选定的行或列进行隐藏
12、取消隐藏:将选定行或列中间的隐藏行列进行显示
13、冻结:对电子表格当前选中的行列进行冻结或者取消冻结
14、放大、缩小:对电子表格进行放大或缩小
15、转跳:转跳到指定的行列
16、设置过滤:对选择集设置过滤(如果只选择了一个单元格那就是对全部进行过滤),只显示过滤条件内的数据
17、删除重复:对选择集中的重复数据进行删除(包括扩选整行删除)
18、升序排序:对选择集进行升序排序(包括扩选整行排序)
19、降序排序:对选择集进行降序排序(包括扩选整行排序)
20、隔行颜色:设置单双行背景显示不同颜色
21、添加300行:往后面添加300行
22、添加26列:往后面添加26列
23、设置行列数:精确设置电子表格的行列数
三、搜索
1、查找:往前、往后查找、计数
2、替换:替换下一个、全部替换
四、批量(批量文件操作)
1、批量设置过滤:对所有打开的文件批量设置过滤,在其中的一个文件进行过滤其他的打开文件都会被同时操作(注意:打开的文件结构需要相同)
2、批量保存过滤:将所有过滤出来的数据一次性进行保存,每个文件都会会覆盖当前文件(注意:请做好数据备份)
五、数据处理
1、查找匹配:类似于excel的vlookup功能,参数说明:(查找匹配可以跨表格进行匹配数据)
A、写入位置列:返回结果写入表格的那个列中
B、查找数据列:要查找的原始数据,类似vlookup的第一个参数
C、要查找区域:进行匹配的数据区域,类似vlookup的第二个参数
D、返回值的列:匹配成功后将哪一列的数据进行返回
E、返回的列数:结果返回多少列数据,以返回值列为第一列,往后递增
注:点击获取可以在表格上选择获取列
2、两表去重:对于结构相同的两张表,去掉重复数据生成一张新表
A、原始表:要去重的那个表格
B、查找表:要去掉查找表中重复的数据表
C、匹配列1:进行判断重复的字段列1
D、匹配列2:进行判断重复的字段列2
E、匹配列3:进行判断重复的字段列3
注:点击获取可以在表格上选择获取列,最多可以匹配3列,如果为空那就不匹配,3个列都相等才算是重复行
3、两表求重复:对于结构相同的两张表,求取重复数据生成一张新表
A、原始表:要去重的那个表格
B、查找表:要去掉查找表中重复的数据表
C、匹配列1:进行判断重复的字段列1
D、匹配列2:进行判断重复的字段列2
E、匹配列3:进行判断重复的字段列3
注:点击获取可以在表格上选择获取列,最多可以匹配3列,如果为空那就不匹配,3个列都相等才算是重复行
4、列合并:将多列数据加上分隔符合并到结果列中去
A、要合并的列1
B、间隔字符串
C、要合并的列2
D、间隔字符串
E、要合并的列3
F、间隔字符串
G、要合并的列4
H、结果写入列:将上面列按照次序将字符串累加写入此列中
注:要合并的列为空,则停止合并
5、列数据分割:将指定列数据按照指定字符串进行分割,写入不同列中去
A、要分割的列
B、分割字符串
C、结果写入的列1
D、结果写入的列2
E、结果写入的列3
E、结果写入的列4
注:分割结果最多只能有4列结果数据,多余丢弃
6、设置分类:将表格分类数据
六、文件合并分割
1、多文件合并:可以选择文件或者文件夹,将所有文件进行合并,仅允许CSV文件
A、选择文件或者文件夹,自动搜索文件夹下面文件
B、去掉其他文件标题行多行,此时其他文件的开头多行不会进行合并
C、文件保存全路径:包括路径和文件名
2、多文件分割:可以选择文件或者文件夹,将所有文件自动进行分割,仅允许CSV文件
A、选择文件或者文件夹,自动搜索文件夹下面文件
B、保留标题行多行,此时每个生成的分割文件都会保留这几行标题行
C、按行数进行分割:将每个文件按照指定行数进行分割成多个文件
D、按份数进行分割:将每个文件按照指定份数进行分割
C、文件保存全路径:包括路径和文件名
七、公式
1、求和:对框选的范围每一列分别求和写入下一行,当选择只有一行那就求出此行和放入下一列
2、求平均:对框选的范围每一列分别求出平均值写入下一行,当选择只有一行那就求出此行平均值放入下一列
3、求个数:对框选的范围每一列分别求出个数写入下一行,当选择只有一行那就求出此行个数放入下一列
4、求最大值:对框选的范围每一列分别求出最大值写入下一行,当选择只有一行那就求出此行最大值放入下一列
5、求最小值:对框选的范围每一列分别求出最小值写入下一行,当选择只有一行那就求出此行最小值放入下一列
八、脚本
1、设置系统脚本:每个表格有个系统脚本为python脚本,这样脚本不需要占用表格控件
2、设置Exprtk脚本:将单元格设置为Exprtk脚本,可以在单元格进行脚本编辑和运行
3、设置TCC脚本:将单元格设置为C语言脚本,可以在单元格进行脚本编辑和运行
4、设置Python脚本:将单元格设置为Python脚本,可以在单元格进行脚本编辑和运行
5、设置普通文本:将单元格设置为普通文本
6、运行选择脚本:将选择集中脚本单元格按从左到右、从上往下运行
7、运行全部脚本:将电子表格中所欲脚本单元格按从左到右、从上往下运行
九、脚本插件
1、导入脚本:导入一个脚本到系统中并会在此菜单加一个菜单项,可以将写好的脚本当做一个菜单功能点击就可以运行
2、如果想要删除菜单项,请到安装目录下找到plugin目录,将想要的脚本删除即可
十、帮助
1、查看帮助:按F1可以打开此功能说明帮助网页
2、软件注册:点击打开注册对话框,将注册ESN号码发给陈经理(类似:A131226822561131559949019009318491),陈经理确认您已经交过钱会马上将注册码发回给您,将注册码填入对话框点击确定完成软件注册
3、关于:查看软件版本和版权信息
十一、脚本接口
1、Exprtk脚本接口
A、Exprtk语法:语法说明
B、Snapde封装的Expr接口:
单元格的数字变量,如:A1,代表第一行第一列的单元格数字变量,可以用它获取此单元格的值,也可以直接赋值数字
单元格的字符串变量,如:A1_,代表第一行第一列的单元格字符串变量,可以用它获取此单元格的字符串,也可以直接赋值字符串
单元格的数字数组变量,如:A:B、B1:C10,第一个变量代表第一列和第二列的单元格数组,第二个变量代表第二列第一行到第三列第十行这块区域单元格的数组
exprtk脚本运算样例1,如:A1 := (B3+C5)/sum(C6,C7,D8),按F5后A1单元格的值就等于后面公式运算出来的结果
exprtk脚本运算样例2,如:A:A := B:B/avg(C1:C18) + 100 ,按F5后A列单元格的值就等于B列除以C1到C18单元格平均值再加上100的值
a、to_lower(str),将字符串转化成小写
b、to_upper(str),将字符串转化成大写
c、to_string(num),将数字转化成字符串
d、to_number(str),将字符串转化成数字
e、get(row,col),获取row、col指定单元格的数字,如果是非数字字符串则返回0
f、set(row,col,num),将row、col、指定单元格设置为数字num
g、get_(row,col),获取row、col指定单元格的字符串,如果是是数字则将数字转化成字符串
h、set_(row,col,str),将row、col、指定单元格设置为字符串str
i、set_progress(n),设置进度条进度n,n的范围从0到100
j、sleep(n),挂起一段时间n毫秒,n为整数
k、get_tick_count(),获取从操作系统启动到现在所经过的毫秒数
l、save(),保存当前文件,成功返回1,失败返回0
m、save_as(file),将当前电子表格另存为file指定的文件(file必须是带名称的全路径),成功返回1,失败返回0
n、get_row_count(),获取当前电子表格的行数
o、get_col_count(),获取当前电子表格的列数
p、resize(nRow,nCol),重新设置当前电子表格的行列数,nRow、nCol都需要大于1
r、get1(name,row,col),获取name标签表格row、col指定单元格的数字,如果是非数字字符串则返回0
s、set1(name,row,col,num),将name标签表格row、col、指定单元格设置为数字num
t、get1_(name,row,col),获取name标签表格row、col指定单元格的字符串,如果是是数字则将数字转化成字符串
u、set1_(name,row,col,str),将name标签表格row、col、指定单元格设置为字符串str
v、get_selected_row(),获取当前选择的行号
w、get_selected_col(),获取当前选择的列号
x、insert_col(position,nCol),在指定的position列位置前面插入nCol列
y、insert_row(position,nRow),在指定的position行位置前面插入nRow行
z、open_file(fileName),打开指定的文件
aa、sort(col,order),将指定的col列进行排序,order为1是升序,为0是降序
ab、distance(lon1,lat1,lon2,lat2),计算2个经纬度点的距离
ac、heading(lon1,lat1,lon2,lat2),计算2个经纬度点向量的偏航角
ad、destination(lon1,lat1,distance,bearing),计算指定经纬度点在bearing偏航角下一定距离distance的目标点经纬度坐标,结果写入当前单元格和下一个单元格
ae、angle(lon1,lat1,lon2,lat2,lon3,lat3),计算三个经纬度点的夹角
af、PhoneArea(phone),计算电话号码phone字符串的归属地
ai、IdCardArea(IdCard),计算身份证号码IdCard字符串的籍贯
aj、PostCodeArea(postcode),计算邮编PostCode数字的所在地
exprtk的其他函数:
通用函数公式: +----------+---------------------------------------------------------+ | 函数名 | 描述 | +----------+---------------------------------------------------------+ | abs | Absolute value of x. (eg: abs(x)) | +----------+---------------------------------------------------------+ | avg | Average of all the inputs. | | | (eg: avg(x,y,z,w,u,v) == (x + y + z + w + u + v) / 6) | +----------+---------------------------------------------------------+ | ceil | Smallest integer that is greater than or equal to x. | +----------+---------------------------------------------------------+ | clamp | Clamp x in range between r0 and r1, where r0 < r1. | | | (eg: clamp(r0,x,r1)) | +----------+---------------------------------------------------------+ | equal | Equality test between x and y using normalized epsilon | +----------+---------------------------------------------------------+ | erf | Error function of x. (eg: erf(x)) | +----------+---------------------------------------------------------+ | erfc | Complimentary error function of x. (eg: erfc(x)) | +----------+---------------------------------------------------------+ | exp | e to the power of x. (eg: exp(x)) | +----------+---------------------------------------------------------+ | expm1 | e to the power of x minus 1, where x is very small. | | | (eg: expm1(x)) | +----------+---------------------------------------------------------+ | floor | Largest integer that is less than or equal to x. | | | (eg: floor(x)) | +----------+---------------------------------------------------------+ | frac | Fractional portion of x. (eg: frac(x)) | +----------+---------------------------------------------------------+ | hypot | Hypotenuse of x and y (eg: hypot(x,y) = sqrt(x*x + y*y))| +----------+---------------------------------------------------------+ | iclamp | Inverse-clamp x outside of the range r0 and r1. Where | | | r0 < r1. If x is within the range it will snap to the | | | closest bound. (eg: iclamp(r0,x,r1) | +----------+---------------------------------------------------------+ | inrange | In-range returns 'true' when x is within the range r0 | | | and r1. Where r0 < r1. (eg: inrange(r0,x,r1) | +----------+---------------------------------------------------------+ | log | Natural logarithm of x. (eg: log(x)) | +----------+---------------------------------------------------------+ | log10 | Base 10 logarithm of x. (eg: log10(x)) | +----------+---------------------------------------------------------+ | log1p | Natural logarithm of 1 + x, where x is very small. | | | (eg: log1p(x)) | +----------+---------------------------------------------------------+ | log2 | Base 2 logarithm of x. (eg: log2(x)) | +----------+---------------------------------------------------------+ | logn | Base N logarithm of x. where n is a positive integer. | | | (eg: logn(x,8)) | +----------+---------------------------------------------------------+ | max | Largest value of all the inputs. (eg: max(x,y,z,w,u,v)) | +----------+---------------------------------------------------------+ | min | Smallest value of all the inputs. (eg: min(x,y,z,w,u)) | +----------+---------------------------------------------------------+ | mul | Product of all the inputs. | | | (eg: mul(x,y,z,w,u,v,t) == (x * y * z * w * u * v * t)) | +----------+---------------------------------------------------------+ | ncdf | Normal cumulative distribution function. (eg: ncdf(x)) | +----------+---------------------------------------------------------+ | nequal | Not-equal test between x and y using normalized epsilon | +----------+---------------------------------------------------------+ | pow | x to the power of y. (eg: pow(x,y) == x ^ y) | +----------+---------------------------------------------------------+ | root | Nth-Root of x. where n is a positive integer. | | | (eg: root(x,3) == x^(1/3)) | +----------+---------------------------------------------------------+ | round | Round x to the nearest integer. (eg: round(x)) | +----------+---------------------------------------------------------+ | roundn | Round x to n decimal places (eg: roundn(x,3)) | | | where n > 0 and is an integer. | | | (eg: roundn(1.2345678,4) == 1.2346) | +----------+---------------------------------------------------------+ | sgn | Sign of x, -1 where x < 0, +1 where x > 0, else zero. | | | (eg: sgn(x)) | +----------+---------------------------------------------------------+ | sqrt | Square root of x, where x >= 0. (eg: sqrt(x)) | +----------+---------------------------------------------------------+ | sum | Sum of all the inputs. | | | (eg: sum(x,y,z,w,u,v,t) == (x + y + z + w + u + v + t)) | +----------+---------------------------------------------------------+ | swap | Swap the values of the variables x and y and return the | | <=> | current value of y. (eg: swap(x,y) or x <=> y) | +----------+---------------------------------------------------------+ | trunc | Integer portion of x. (eg: trunc(x)) | +----------+---------------------------------------------------------+ 三角函数: +----------+---------------------------------------------------------+ | 函数名 | 描述 | +----------+---------------------------------------------------------+ | acos | Arc cosine of x expressed in radians. Interval [-1,+1] | | | (eg: acos(x)) | +----------+---------------------------------------------------------+ | acosh | Inverse hyperbolic cosine of x expressed in radians. | | | (eg: acosh(x)) | +----------+---------------------------------------------------------+ | asin | Arc sine of x expressed in radians. Interval [-1,+1] | | | (eg: asin(x)) | +----------+---------------------------------------------------------+ | asinh | Inverse hyperbolic sine of x expressed in radians. | | | (eg: asinh(x)) | +----------+---------------------------------------------------------+ | atan | Arc tangent of x expressed in radians. Interval [-1,+1] | | | (eg: atan(x)) | +----------+---------------------------------------------------------+ | atan2 | Arc tangent of (x / y) expressed in radians. [-pi,+pi] | | | eg: atan2(x,y) | +----------+---------------------------------------------------------+ | atanh | Inverse hyperbolic tangent of x expressed in radians. | | | (eg: atanh(x)) | +----------+---------------------------------------------------------+ | cos | Cosine of x. (eg: cos(x)) | +----------+---------------------------------------------------------+ | cosh | Hyperbolic cosine of x. (eg: cosh(x)) | +----------+---------------------------------------------------------+ | cot | Cotangent of x. (eg: cot(x)) | +----------+---------------------------------------------------------+ | csc | Cosecant of x. (eg: csc(x)) | +----------+---------------------------------------------------------+ | sec | Secant of x. (eg: sec(x)) | +----------+---------------------------------------------------------+ | sin | Sine of x. (eg: sin(x)) | +----------+---------------------------------------------------------+ | sinc | Sine cardinal of x. (eg: sinc(x)) | +----------+---------------------------------------------------------+ | sinh | Hyperbolic sine of x. (eg: sinh(x)) | +----------+---------------------------------------------------------+ | tan | Tangent of x. (eg: tan(x)) | +----------+---------------------------------------------------------+ | tanh | Hyperbolic tangent of x. (eg: tanh(x)) | +----------+---------------------------------------------------------+ | deg2rad | Convert x from degrees to radians. (eg: deg2rad(x)) | +----------+---------------------------------------------------------+ | deg2grad | Convert x from degrees to gradians. (eg: deg2grad(x)) | +----------+---------------------------------------------------------+ | rad2deg | Convert x from radians to degrees. (eg: rad2deg(x)) | +----------+---------------------------------------------------------+ | grad2deg | Convert x from gradians to degrees. (eg: grad2deg(x)) | +----------+---------------------------------------------------------+
2、C语言脚本
a、get(int row, int col, double *num),获取row、col指定单元格的数字,将结果放在num里,如果是非数字字符串则返回0
b、set(int row, int col, double num),将row、col、指定单元格设置为数字num
c、get_(int row,int col, char **data),获取row、col指定单元格的字符串,将结果放到data里,如果是是数字则将数字转化成字符串,注意:*data指针不需要手动释放,会在下次调用此函数或本脚本运行完自动释放
d、set_(int row, int col, char *str),将row、col、指定单元格设置为字符串str
e、set_progress(int n),设置进度条进度n,n的范围从0到100
f、get_tick_count(),获取从操作系统启动到现在所经过的毫秒数
g、save(),保存当前文件,成功返回1,失败返回0
h、save_as(char *file),将当前电子表格另存为file指定的文件(file必须是带名称的全路径),成功返回1,失败返回0
i、get_row_count(),获取当前电子表格的行数
j、get_col_count(),获取当前电子表格的列数
k、resize(int nRow, int nCol),重新设置当前电子表格的行列数,nRow、nCol都需要大于1
3、Python脚本
在使用Snapde功能前需要引入Snapde模块:import Snapde
a、Snapde.get(int row, int col),获取row、col指定单元格的数字,如果是非数字字符串则返回0
b、Snapde.set(int row, int col, double num),将row、col、指定单元格设置为数字num
c、Snapde.get_(int row,int col),获取row、col指定单元格的字符串,如果是是数字则将数字转化成字符串
d、Snapde.set_(int row, int col, char *str),将row、col、指定单元格设置为字符串str
e、Snapde.set_progress(int n),设置进度条进度n,n的范围从0到100
f、Snapde.get_tick_count(),获取从操作系统启动到现在所经过的毫秒数
g、Snapde.save(),保存当前文件,成功返回1,失败返回0
h、Snapde.save_as(char *file),将当前电子表格另存为file指定的文件(file必须是带名称的全路径),成功返回1,失败返回0
i、Snapde.get_row_count(),获取当前电子表格的行数
j、Snapde.get_col_count(),获取当前电子表格的列数
k、Snapde.resize(int nRow, int nCol),重新设置当前电子表格的行列数,nRow、nCol都需要大于1
l、Snapde.get1(char*name, int row, int col),获取name标签表格row、col指定单元格的数字,如果是非数字字符串则返回0
m、Snapde.set1(char*name, int row, int col, double num),将name标签表格row、col、指定单元格设置为数字num
n、Snapde.get1_(char*name, int row,int col),获取name标签表格row、col指定单元格的字符串,如果是是数字则将数字转化成字符串
o、Snapde.set1_(char*name, int row, int col, char *str),将name标签表格row、col、指定单元格设置为字符串str
p、Snapde.insert_col(int position,int nCol),在指定的position列位置前面插入nCol列
q、Snapde.insert_row(int position, int nRow),在指定的position行位置前面插入nRow行
r、Snapde.open_file(char* filename),打开指定的文件
s、Snapde.sort(int col,int order),将指定的col列进行排序,order为1是升序,为0是降序
t、Snapde.saveAs1(char* filename,char* newFilePath),将指定名称的文件,另存为新路径newFilePath下指定的文件
u、Snapde.resize1(char* filename,int nRow, int nCol),重新设置指定filename电子表格的行列数,nRow、nCol都需要大于1
v、Snapde.newFile(char* newFilePath),创建一个新的表格文件,并将文件保存到newFilePath指定路径的文件内
w、Snapde.PhoneArea(char *phone),计算电话号码phone字符串的归属地
x、Snapde.IdCardArea(char *IdCard),计算身份证号码IdCard字符串的籍贯
y、Snapde.PostCodeArea(int postcode),计算邮编PostCode数字的所在地
z、Snapde.get_selected_row(),获取当前选择的行号
aa、Snapde.get_selected_col(),获取当前选择的列号
十二、脚本性能
打开一个910M的CSV文件:london_crime_by_lsoa.csv,总共有13490605行、7列,单元格:94434235个,使用三种脚本进行简单求和运算:
1、Exprtk脚本花费:4.343秒
2、C语言花费:1.203秒
3、Python语言花费:52.468秒
请到主页下载最新版本:http://www.snapman.xyz
软件收费:每副本100块人民币
联系人:陈经理
联系电话:15829623857
电子邮箱:306708244@qq.com
微信号:15829623857
支付宝:feirench@gmail.com
软件注册:软件安装完成后,在帮助菜单下点击软件注册菜单,会出现软件注册对话框,将注册ESN号发给销售陈经理:306708244@qq.com,陈经理在确认您正常付款后会及时给您发回注册码,将收到的注册码填入注册码输入框,点击注册完成软件注册。
@2018-2025版权所有,陕ICP备19011478号-1