??xml version="1.0" encoding="utf-8" standalone="yes"?>
Ҏ(gu)一Q?br />
Word如何写保护:(x) 工具-->保护文档-->格式讄限制打钩Q设|里面的东西全部点上好Q?->~辑限制打钩-->复选框里面选择填写H体Q这样别人就不能q行复制{编辑操作,其他能复Ӟ-->启动强制保护-->输入密码-->定-->保存 (zhn)可以通过?Shift+ q字W?(-)
为空格添加下划线Q但很难下划线寚wQ例如在创徏待填表单时。而且Q如果启用了下划线字符更改成边框线的自动套用格式选项Q在一行内?Shift+ q字W?(-)
三次或更多次生一条扩展至D落宽度的线Q这可能不是(zhn)所希望的?/p> 为打印的文档的空格添加下划线的一个更好方法是Q?Tab 键ƈ下划线格式应用于制表符?/p> 当?zhn)要在联机表单中创Z划线Ӟh入显C底部边框线的表格单元格?br /> 另(变通方法)Q在最后插入一个非间断性空?Ctrl + Shift 单易用,上手快?/p> 写操作很方便Q适合用来生成Excel文g记录数据?/p> 不需要WinCOM支持Q没装Office?可以生成Excel表格 当然QPyExcelerator也是有缺点的Q它所提供的读写操作方式相对简单,要对已有的Excel文gq行修改Q就昑־比较ȝ了?/p> 如果要对已有的Excel表格q行较复杂的修改操作Q选择PyExcelerator׃太合适了Q这时候可以试试另外的Ҏ(gu)。比如用pywin32通过WinCOM来操作Excel表格Q或者用xlrd?/p> PyExcelerator的官方主|http://sourceforge.net/projects/pyexceleratorQ程序包中ƈ没有太多的教E文档,不过包含了一些简单的C操作的小例子Q如果需要更详细的信息,只能读源代码了?/p> 一。初始pyExcelerator pyExcelerator是一个基于python的可以读写excel文g的品。和xlrd相比QpyExcelrator的主要特点在于可以对excel文gq行写操作。但是在d数据斚wQ功能就没有xlrd强大了?/p> pyExcelerator只能提供关于表单内容的基数据Q对于表单行数、列数、单元格数据cd{详l信息都没有提供讉K接口。因此开发h员必M解表单的具体l构Q才对表单中的数据进行正的分析转换?/p> pyExcelerator产品包(pyexcelerator-0.6.3a.tgzQ上传到服务器上之后解压~,然后在品目录下键入如下命o(h)Q?/p> from pyExcelerator import * 很简单,?xlrd 不同。xlrd 需要先调用book = xlrd.open_workbook(filename)打开文档Q然后再调用sh= book.sheet_by_index(i)来得到第几个sheetQ然后再使用sh.cell_value(i,j)得到i行j列的单元格的倹{操作多了一炏V而上面的parse_xls(filename)则直接返回一个列表,每一就是一个sheet的数据。每Ҏ(gu)一个二元组(表名,单元格数?。其中单元格数据Z个字典,键值就是单元格的烦?i,j)。如果某个单元格无数据,那么׃存在q个倹{看似简单,但从处理上不?nbsp; xlrd 一P可以知道每个sheet的最大行数和列数Q然后进行@环。而?pyExcelerator好象没有最大行数和列数Q再加上I数据又不存在,因此在处理上相对ȝ一些。这样在处理上还需要注意。它?xlrd 一样都支持 unicodeQ但好象没有 xlrd 一h便地判断单元格的cd的方法,感觉q是 xlrd在功能上可能要强一些。当然这只是个h感觉Q再加上只是看了看例子,q没有怎么使用? q个才是重头。那么安装好 pyExcelerator 之后Q读?Readme.txt 之后了解到它的文档正在进行当中,因此惛_了解如何使用它需要看它所带的例子Q甚至看源程序。下面是我从例子中了解的如何写一?Excel 文档需要了解的? Z方便Q在导入q个模块中用了import *的方式? from pyExcelerator import * 首先导入模块Q然后是生成工作薄? w = Workbook() 接着是加入一个工作表(sheet)? ws = w.add_sheet('Hey, Dude') 然后可以保存了? w.save('mini.xls') 上面的代码加在一起就是:(x) from pyExcelerator import * w = Workbook() q就是最的一个例子了Q在例子中叫mini.py。你可以在例子目录下q行mini.py看一看是不是生成了一个空的Excel文g? 如果惛_入中文很单,改ؓ(f)Q? #coding=cp936 w = Workbook() q样上面的执行结果是生成一个空Excel文gQ但它的W一个sheet的名字ؓ(f)“q是中文”。就q样Q只要保证你写入时用unicodep了? I文件可以生成,那么如何插入单元格呢Q? ws.write(i, j, value) 其中value为|可以是unicode? 接着Q我们可能想改变单元格的样式Q如字体Q? font0 = Font() style0 = XFStyle() q样我们创徏了一个字体,然后又生成了一个样式。注意,真正起作用的是样?/strong>Q字体不q是样式中的一U效果? q样在写入单元格时带着q个样式p了,q是使用上面的write()Ҏ(gu)Q? ws.write(1, 1, 'Test', style0) q是在名为ws的sheet中的W?1,1)单元格写入了gؓ(f)"Test"的内容,q且它的样式为style0? 然后我们q可以设|单元格的边框:(x) borders = Borders() 其它q有许多的效果,单地列一下:(x) 单元格合q?nbsp; 插入囄 大纲效果(以前真没用过) sheet的属性值打?nbsp; Excel转ؓ(f)其它的文件格?nbsp; 大家有兴自已照着例子学吧?/p> 四:(x) 旉示?/p> l俺的boss写的一个小工具Q用Python对Excelq行l计Q然后把l束生成一个新的Excel表格Q用到?a target="_blank">xlrd?a target="_blank">pyExcelerator两个库?br /> 单的介绍一下这两个库,先说xlrdQ这个库读Excel比较方便Q各U方法用v来也挺方便:(x) 后记: python对excel的操作确实不太强大,目前为止我只用过pyExceleratorQ还有一个xlrd-xlwt的pluginQ貌D几个Ҏ(gu)常简单的excel操作够用了Q?/p> 最q回头看q篇blog的阅读量q是挺大Q今天工作之余写下此后记Q希望能和各位python高手们交,共同提高Q?/p> excel相关文章Q?br /> 1.xlrd-xlwt模块 xlrddexcel文g(基本功能) 2. 我同事鱿鱼哥解决excel2007d的文?span class="link_title"> 在EXCEL里面有多个方法可以完成多条g查询Q先来了解合q数l这个概念:(x) 如果Sheet2是这L(fng)Q?/p>
A 张三Q一月,90 张三Q二月,85 张三Q三月,95 那么If({1,0},Sheet2!A1:A3&Sheet2!B1:B3,Sheet2!C1:C3)是Q?/p>
张三一月,90 张三二月Q?5 张三三月Q?5 也可以用Choosen({1,2},Sheet2!A1:A3&Sheet2!B1:B3,Sheet2!C1:C3),l果相同。现在就可以用vlookup来进行多条g查询了:(x) {=vlookup(A1&B1,If({1,0},Sheet2!A1:A3&Sheet2!B1:B3,Sheet2!C1:C3),2,false)} q可以用sum函数直线多条件合计功能:(x) {=sum((Sheet2!A1:A3=A1)*(Sheet2!B1:B3=B1)*Sheet2!C1:C3)} q个功能也很有意思,另外q可以用index+match来解冻I有一个值得一提的技巧是Q对于长的公式需要同时按Ctrl+Shift+Enter来给单元内容加上{} 在理解上q公式之前需要理解if({1,0},......)公式的含义,见下Q?/p>
Powered by ScribeFire. powered by performancing firefox 没有用到的就是:(x)题注Q引用等?/p>
不过好像没有看到如何删除节?
[<w:undocumentProtection w:edit="forms" w:enforcement="on" w:unprotectPassword="888888"/>]注意另存为xml旉择word 2003 xml文档格式
]]>
解决Ҏ(gu)Q?br /> Word菜单
- 工具 - 选项 - 兼容?- 扑ֈ“为尾部空格添加下划线”的选项打勾卛_。(WordMenu - Tools - Options -
Compatibility - “Draw underline on trailing spaces”[Checked]Q?/span>
Word2007Q?/span>
+ Space)卛_?/p>
我们写程序,l常?x)需要输Z些数据进行保存,对于格式固定的大量数据,Excel表格?x)是比较好的一个选择。如果你需要在Python下写入Excel文gQ那么就需要用到PyExcelerator了?p>PyExcelerator是一个第三方库,用来处理Excel文g。它的优Ҏ(gu)Q?/p> # python setup.py install
在命令行中,你将看到一q串的runningQcreatingQcopyingQbyte—compiling命o(h)l果Q吧啦吧啦。。?
最后一行出?
Writing C:/Python26/Lib/site-packages/pyExcelerator-0.6.4.1-py2.6.egg-info
说明已经插件安装到你的python环境中了Q至此安装完成?
q里提一个小例子Q?/pre>
二、Excel文gd
sheets = parse_xls('d:/a.xls')三、Excel文g写入
ws = w.add_sheet('Hey, Dude')
w.save('mini.xls')
from pyExcelerator import *
ws = w.add_sheet(u'q是中文')
w.save('mini.xls')
font0.name = 'Times New Roman'
font0.struck_out = True
font0.bold = True
style0.font = font0
borders.left = 5
style.borders = borders CZ?/td> 说明 col_width.py 改变单元格宽?nbsp; row_style.py 讄行的高度 merged*.py image.py outline*.py wsprops.py xls2*.py
bk = xlrd.open_workbook('your.xls')
sh = bk.sheets()[-1]
上面两句可以打开Excel表格中的一个sheetQsheets得到的是一个listQ存放所有的sheet?br />sh.nrows是该sheet中的行数Q知道这个后可以用for循环来读所有的单元gQ?br />sh.row(i)[3]q个׃表第i行的W?列?br /> 再看看pyExceleratorQ这个用h有点别扭Q?br />sheets = parse_xls('result.xls')
先打开一个表|sheets是一个listQ包含了所有表格的内容Q每一就是一个sheetQ而每个sheet是二元tupleQ第一个是该sheet的名字,W二个是一个dictQdict的key是一个二元组Q表C单元格的坐标,?0,0)Q第一行第一列?br /> 从上面的分析中可以得讉KExcel中第一个sheet的第一行第一列元素需要:(x)
sheets[0][1][(0,0)]
pyExcelerator也不能得到行列数?br /> 写文件也比较单:(x)
wb = Workbook()
ws = wb.add_sheet('result')
ws.write(0,0,“hello”)
wb.save('result.xls')
׃解释?-)
写文件时需要注意直接写Unicode内容q去Q而不要写~码q的内容?br /> lboss的代码:(x)PYTHON:
#!/usr/bin/env python
# -*- coding=utf-8 -*-
#Using GPL v2
import xlrd
from pyExcelerator import *
city = [(u'山城','[2,3]d+'),(u'水国','4d+'),(u'火县','5d+'),
(u'土城','6d+'),(u'土国','7d+'),(u'火乡','8[1-5]d+'),
(u'水乡','8[067]d+'),]
fname = '0107CRM.xls'
bk = xlrd.open_workbook(fname)
sh = bk.sheets()[-1]
nrows = sh.nrows
#result中按序存放各city中各套餐的数?br />#序为XTa+、XTb、XTb+
result = []
for i in range(len(city)):
result.append([0,0,0])
for r in range(1,nrows):
num = str(sh.row(r)[3])[7:]
flag = False
for i in range(len(city)):
if re.match(city[i][1],num):
flag = True
if sh.row(r)[2].value == 3001.0:
break
name = sh.row(r)[0].value.encode('utf8')
if 'XTaQ? in name:
result[i][0]+=1
if 'XTb' in name and 'XTbQ? not in name:
result[i][1]+=1
if 'XTbQ? in name:
result[i][2]+=1
if not flag:
print "NO:"+num
print result
titles = [u'局?,u'?,u'M录入?,u'X?,…………]
wb = Workbook()
ws = wb.add_sheet('result')
for i in range(len(titles)):
ws.write(0,i,titles[i])
for i in range(len(city)):
ws.write(i+1,0,city[i][0])
ws.write(i+1,1,result[i][0])
ws.write(i+1,4,result[i][1])
ws.write(i+1,7,result[i][2])
ws.write(i+1,10,result[i][0]+result[i][1]+result[i][2])
ws.write(i+2,1,"=SUM(B2:B8)")
wb.save('result.xls')
二?MID(CELL("filename"),FIND("]",CELL("filename"))+1,255)
]]>
很多时候需要将分类汇d的数据单独拿出来做处理,记得q很早的时候有|友在QQ上问q我关于分类汇总要怎么h能单独复制出来,当时在网上搜索了一下,没找到解军_法,pp着做了一遍,发现是可以复制出来单独粘贴的Q让他照着我做Q他在那头回{不行,咦~Z么他不行Q而我可以?问题出在哪里Q难道是版本问题Q于是问他,他用的是2003版,跟我一P奇怪了Q经在QQ跟他来回的沟通,l于让我发现问题所在之处,原来我们两h打开新excel表格的方式不同所DQ下面就来说一下我的操作过E:(x)
先做一张分cL总表Q图1Q?br />
3. 选中区域--按Alt+;(英文状态下的分?,卛_定位可见单元?然后?复制--_脓(chung)
4. 工具-自定?命o(h)-~辑-选定可见单元|选定可见单元?图标拖到工具栏,然后Q选择你要复制的区域,?#8220;选定可见单元?#8221;Q然?#8220;复制”?#8220;_脓(chung)”Q就行了
]]>
IF({1,0},……)公式的解?/h1>
把它分解Z块一块,把相关的知识一一弄明白,合v来一定能明白?br style="font-size: 1.06em !important; line-height: normal; " />
1、IF(条g,q回?,q回?)
首先你要弄懂q个函数Q如果条件ؓ(f)真,函数的结果ؓ(f)“q回?”Q如果条件ؓ(f)假,函数的结果是“q回?”Q?br style="font-size: 1.06em !important; line-height: normal; " />
if(true,10,100)=10
if(1,"A","B")="A"
if(false,20,30)=30
if(0,"?,"?)="?
2、{1,2,3,4}是一个数l,一个数l能存储多个数|数组的表C方式是{}?br style="font-size: 1.06em !important; line-height: normal; " />
{1,0}是个水qxl,它有两个|一个是1Q另一个是0?br style="font-size: 1.06em !important; line-height: normal; " />
{"张三","李四","王五"}也是一个水qxl,它有三个倹{?br style="font-size: 1.06em !important; line-height: normal; " />
3、连接符&也是q个公式中的一个知识点?br style="font-size: 1.06em !important; line-height: normal; " />
"A" & "B" & "C"="ABC"
"Aaa"&"Bcd"&"123"="AaaBcd123"
字符串可以连接,数组也可以连接:(x)
{1,2,3}&{"A","B","C"}={"1A","2B","3C"}
单元格区域也可以q接Q?br style="font-size: 1.06em !important; line-height: normal; " />
假如A1:A10的数据ؓ(f)1?0QB1:B10的数据ؓ(f)a到j?br style="font-size: 1.06em !important; line-height: normal; " />
A1:A10&B1:B10的结果就?br style="font-size: 1.06em !important; line-height: normal; " />
1a
2b
3c
...
10j
再看个实际点的例子:(x)
4、再回过来说IF()函数
当条件是一个单变量ӞM表true和falseQ即“?#8221;?#8220;?#8221;Q它Lq回两个值当中的一个?br style="font-size: 1.06em !important; line-height: normal; " />
但是
但是Q当条g不是单变量,而是一个数l时Q当条g为{1,0}Ӟl果如何呢?
CQ返回的l果与条件一P是个数组Q而且Q与条g数组的列数相同?br style="font-size: 1.06em !important; line-height: normal; " />
译֠上,老师_(d)(x)同学们好Q我们来做个游戏Q当老师举v左手的时候,你说“语文”Q当老师举vx的时候,你说100Q清楚了没有Q同学们都说清楚了,于是Q?br style="font-size: 1.06em !important; line-height: normal; " />
老师举v左手Q一同学回答“语文”QIf(左手,"语文",100)="语文"
老师的话隐含了一层意思,左手为真Q右手ؓ(f)假,左手?Q右手ؓ(f)0QIf(1,"语文",100)="语文"
接下ȝ游戏自然q有QIf(x,"语文",100)=100
?If(0,"语文",100)=100
轮到W三个同学了Q老师把两只手都D了v来,那么q同学怎么回答Q?br style="font-size: 1.06em !important; line-height: normal; " />
也许q位同学?x)?#8220;老师Q你有病Q?#8221;当然Q我更希望这位同学能回答Q?#8220;语文”Q?00?br style="font-size: 1.06em !important; line-height: normal; " />
不是么:(x)IFQ{左手,x},"语文",100)={"语文",100}
前面提过Q左手是真,x是假Q写标准点,是Q?br style="font-size: 1.06em !important; line-height: normal; " />
IFQ{true,false},"语文",100)={"语文",100}
也是QIFQ{1,0},"语文",100)={"语文",100}
你糊涂了吗?
没有Q?br style="font-size: 1.06em !important; line-height: normal; " />
没有好。别ȝ角尖Q这个比Ҏ(gu)得可能不太合适?br style="font-size: 1.06em !important; line-height: normal; " />
接着Q老师q会(x)把游戏l做下去Q再把规则改一改:(x)老师丑ַ手的时候,回答U目QDx的时候,回答成W?br style="font-size: 1.06em !important; line-height: normal; " />
老师举v左手Q同学D回答Q语文、数学、英语、计机
老师举vxQ同学E回答Q?00?0?5?0
q时Q老师把左x都D了v来,老师_(d)如果懂了Q请正确说出l果?br style="font-size: 1.06em !important; line-height: normal; " />
于是Q有同学回答Q?语文",100;"数学",90;"p",95;"计算?,80
老师满意极了?br style="font-size: 1.06em !important; line-height: normal; " />
用我们熟(zhn)的方式表现出来Q就是:(x)
=IF({1,0},U目,成W)={"语文",100;"数学",90;"p",95;"计算?,80}
]]>Nextcol=Cells(1,255).End(xlToLeft).Column '取从cells(1,255)向左查找到的W一个非I值单元格的列敎ͼ不含cells(1,255)Q与q箋与否无关Q没查到时返回第一列列?br />
Nextcol=Cells(1,1).End(xlToright).Column '取从cells(1,1)向右查找到的W一个非I值单元格的列敎ͼ不含cells(1,1)Q与q箋与否无关Q没查到时返回最后一列列?br />
Nextcol=Cells(65536,1).End(xlup).row '取从cells(65536,1)向上查找到的W一个非I值单元格的行敎ͼ不含cells(65536,1)Q与q箋与否无关Q没查到时返回第一行行?br />
Nextcol=Cells(1,1).End(xldown).row '取从cells(1,1)向下查找到的W一个非I值单元格的行敎ͼ不含cells(1,1)Q与q箋与否无关Q没查到时返回最后一行行?/blockquote>
]]>
2、选中一个区域,按ctrl+D
3、在最下面的左侧,点右键,列出sheet列表
4、复制超链接后,_脓(chung)或录入一个超链接Q要取消链接Q按ctrl+z
5、?工具--自定义后Q在工具栏中某个按钮Q点右键Q可修改快捷?br />
6、页面设|中Q可以设|打印时打印行、列数字
7、选一个区域,按shiftQ选编辑,出现复制为图?br />
8、不昄面中的0|在工具——选项——试图中Q勾?#8220;零?#8221;
9、同一个文件中不同sheet间作链接:(x)输入公式hyprelinkQ?#8220;#”&“目标sheet目标单元?#8221;Q?#8220;链接?#8221;Q,例如Q?HYPERLINK("#"&"'1 出口计划'!A14","zhmd")
10、插入工作表Qshift+F11
11、向下填充CTRL+D
向右填充CTRL+R
查找和替?CTRL+H
选定区域扩展一个单元格宽度SHIFT+ 头?br />
选定区域扩展到单元格同行同列的最后非I单元格CTRL+SHIFT+ 头?br />
Ctrl+' 复制上一單元格的內容<不含格式>
Ctrl+D 复制上一單元格的內容<含格?gt;
Ctrl+ShiftQ?#8221; 復制左邊的單元格
12、Ctrl+* 全選當前工作區域后(用其他方法选择的区域也?QCtrl+.(Ctrl+?可以序定位在所选区?的四个角
13、Alt+178
Alt+179 分别完成数值的2ơ方?ơ方的表C?br />
alt+0177 输入正负?br />
Alt+41420 ?#8220;√”
ctrl+shift+p 调整大小
ctrl+shift+f 字体
Ctrl+F3 定义名称
Alt+向下?nbsp; 昄清单的当前列中的数g拉列?br />
F12 另存?br />
ctrl+9——隐藏行Q加shift是反操作Q要是中间有其他操作Q又要取消隐藏,请先选隐藏区上下/左右
ctrl+0——隐藏列
SHIFT+F10 昄快捷菜单
CTRL+PAGE DOWN 选择下一工作?br />
CTRL+PAGE UP 选择上一工作?br />
Ctrl+[ 查看该单元格中的公式 引用了哪些单元格
Ctrl+] 查看该单元格被哪些单元格引用?br />
14、去掉EXCEL中的软回?ALT+enter)
利用查找替换 在查找框中按入ALT+10(键?,在替换中什么也不输,点击替换,p?
]]>
表格断开Q?br />
在要断开的行Q按ctrl+shift+回RQ这个快捷键知道后很爽!Q?br />
]]>
VBA中初始化ADOq接的几U方法有以下几种Q?br />
1Q通过CreateObjectҎ(gu)来创接,具体代码如下Q?br />
Dim
conn1
Set conn1 = CreateObject("ADODB.Connection.2.0")
2Q通过使用Dim ... as ...Ҏ(gu)来创?br />
Dim conn2 As
ADODB.Connection
Set conn2 = New ADODB.Connection
3Q通过使用Dim
... as ... New的方法来创徏q接
Dim conn3 As new
ADODB.Connection
CreateObjectҎ(gu)比DIMҎ(gu)速度要慢Q其好处是你不需要在工程中引用ADO对象?br />
]]>
基本同上Q行列{换一下?br />
3、isnaQ|
有些公式的结果是 QN/AQ如果不希望昄q个l果Q但不能直接?Q#N/A"来判断,可以先用isnaQ公式)来判断,再用if判断?/p>
]]>
]]>