码迷,mamicode.com
首页 > 其他好文 > 详细

再谈word2003编程

时间:2015-02-27 10:00:53      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:

再谈word2003编程

    近期因为项目需要,写了许多word2003编程的东东.有时候遇到难题想查sdk说明,很难找到中文解释,对于e文不好的我来说,简直是天书.想必很多人多有感慨.
    下面列出内容是一些常用的内容说明,希望对大家有帮助.
    那就开始吧技术分享注意,下文的WAPP是我定义的word文档工程变量


    

技术分享
技术分享//合并单元格
技术分享   table.Cell(22).Merge(table.Cell(23));
技术分享
技术分享 //单元格分离
技术分享    object Rownum = 2;
技术分享    object Columnnum = 2;
技术分享    table.Cell(22).Split(ref Rownum, ref  Columnnum);
技术分享
技术分享//单元格对齐方式
技术分享     WApp.Selection.Cells.VerticalAlignment =Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;
技术分享
技术分享//插入表行
技术分享     table.Rows.Add(ref missing);
技术分享
技术分享//分页  object ib = Microsoft.Office.Interop.Word.WdBreakType.wdPageBreak;
技术分享    WApp.Selection.InsertBreak(ref ib);
技术分享
技术分享//换行
技术分享     WApp.Selection.TypeParagraph();
技术分享
技术分享

 


  二、word文档设置
 

技术分享
技术分享WApp.ActiveDocument.PageSetup.LineNumbering.Active =0;//行编号
技术分享            WApp.ActiveDocument.PageSetup.Orientation =Microsoft.Office.Interop.Word.WdOrientation.wdOrientPortrait;//页面方向
技术分享            WApp.ActiveDocument.PageSetup.TopMargin =WApp.CentimetersToPoints(float.Parse("2.54"));//上页边距
技术分享            WApp.ActiveDocument.PageSetup.BottomMargin = WApp.CentimetersToPoints(float.Parse("2.54"));//下页边距
技术分享            WApp.ActiveDocument.PageSetup.LeftMargin = WApp.CentimetersToPoints(float.Parse("3.17"));//左页边距
技术分享            WApp.ActiveDocument.PageSetup.RightMargin = WApp.CentimetersToPoints(float.Parse("3.17"));//右页边距
技术分享            WApp.ActiveDocument.PageSetup.Gutter = WApp.CentimetersToPoints(float.Parse("0"));//装订线位置
技术分享            WApp.ActiveDocument.PageSetup.HeaderDistance = WApp.CentimetersToPoints(float.Parse("1.5"));//页眉
技术分享            WApp.ActiveDocument.PageSetup.FooterDistance = WApp.CentimetersToPoints(float.Parse("1.75"));//页脚
技术分享            WApp.ActiveDocument.PageSetup.PageWidth = WApp.CentimetersToPoints(float.Parse("21"));//纸张宽度
技术分享            WApp.ActiveDocument.PageSetup.PageHeight = WApp.CentimetersToPoints(float.Parse("29.7"));//纸张高度
技术分享            WApp.ActiveDocument.PageSetup.FirstPageTray = Microsoft.Office.Interop.Word.WdPaperTray.wdPrinterDefaultBin;//纸张来源
技术分享            WApp.ActiveDocument.PageSetup.OtherPagesTray = Microsoft.Office.Interop.Word.WdPaperTray.wdPrinterDefaultBin;//纸张来源
技术分享            WApp.ActiveDocument.PageSetup.SectionStart = Microsoft.Office.Interop.Word.WdSectionStart.wdSectionNewPage;//节的起始位置:新建页
技术分享            WApp.ActiveDocument.PageSetup.OddAndEvenPagesHeaderFooter = 0;//页眉页脚-奇偶页不同
技术分享            WApp.ActiveDocument.PageSetup.DifferentFirstPageHeaderFooter = 0;//页眉页脚-首页不同
技术分享            WApp.ActiveDocument.PageSetup.VerticalAlignment = Microsoft.Office.Interop.Word.WdVerticalAlignment.wdAlignVerticalTop;//页面垂直对齐方式
技术分享            WApp.ActiveDocument.PageSetup.SuppressEndnotes =0;//不隐藏尾注
技术分享            WApp.ActiveDocument.PageSetup.MirrorMargins = 0;//不设置首页的内外边距
技术分享            WApp.ActiveDocument.PageSetup.TwoPagesOnOne = false;//不双面打印
技术分享            WApp.ActiveDocument.PageSetup.BookFoldPrinting =false;//不设置手动双面正面打印
技术分享            WApp.ActiveDocument.PageSetup.BookFoldRevPrinting =false;//不设置手动双面背面打印
技术分享            WApp.ActiveDocument.PageSetup.BookFoldPrintingSheets = 1;//打印默认份数             WApp.ActiveDocument.PageSetup.GutterPos = Microsoft.Office.Interop.Word.WdGutterStyle.wdGutterPosLeft;//装订线位于左侧             WApp.ActiveDocument.PageSetup.LinesPage = 40;//默认页行数量             WApp.ActiveDocument.PageSetup.LayoutMode = Microsoft.Office.Interop.Word.WdLayoutMode.wdLayoutModeLineGrid;//版式模式为“只指定行网格”

   三、光标移动

技术分享
技术分享 //移动光标
技术分享 //光标下移3行 上移3行
技术分享            object unit = Microsoft.Office.Interop.Word.WdUnits.wdLine;
技术分享            object count = 3;
技术分享            WApp.Selection.MoveEnd(ref unit,ref count);
技术分享            WApp.Selection.MoveUp(ref unit, ref count, ref missing);
技术分享            
技术分享//Microsoft.Office.Interop.Word.WdUnits说明
技术分享            //wdCell                  A cell. 
技术分享            //wdCharacter             A character. 
技术分享            //wdCharacterFormatting   Character formatting. 
技术分享            //wdColumn                A column. 
技术分享            //wdItem                  The selected item. 
技术分享            //wdLine                  A line. //
技术分享            //wdParagraph             A paragraph. 
技术分享            //wdParagraphFormatting   Paragraph formatting. 
技术分享            //wdRow                   A row. 
技术分享            //wdScreen                The screen dimensions. 
技术分享            //wdSection               A section. 
技术分享            //wdSentence              A sentence. 
技术分享            //wdStory                 A story. 
技术分享            //wdTable                 A table. 
技术分享            //wdWindow                A window. 
技术分享            //wdWord                  A word. 
技术分享
技术分享//录制的vb宏
技术分享            //     ,移动光标至当前行首
技术分享            //    Selection.HomeKey unit:=wdLine
技术分享            //    ‘移动光标至当前行尾
技术分享            //    Selection.EndKey unit:=wdLine
技术分享            //    ‘选择从光标至当前行首的内容
技术分享            //    Selection.HomeKey unit:=wdLine, Extend:=wdExtend
技术分享            //    ‘选择从光标至当前行尾的内容
技术分享            //    Selection.EndKey unit:=wdLine, Extend:=wdExtend
技术分享            //    ‘选择当前行
技术分享            //    Selection.HomeKey unit:=wdLine
技术分享            //    Selection.EndKey unit:=wdLine, Extend:=wdExtend
技术分享            //    ‘移动光标至文档开始
技术分享            //    Selection.HomeKey unit:=wdStory
技术分享            //    ‘移动光标至文档结尾
技术分享            //    Selection.EndKey unit:=wdStory
技术分享            //    ‘选择从光标至文档开始的内容
技术分享            //    Selection.HomeKey unit:=wdStory, Extend:=wdExtend
技术分享            //    ‘选择从光标至文档结尾的内容
技术分享            //    Selection.EndKey unit:=wdStory, Extend:=wdExtend
技术分享            //    ‘选择文档全部内容(从WholeStory可猜出Story应是当前文档的意思)
技术分享            //    Selection.WholeStory
技术分享            //    ‘移动光标至当前段落的开始
技术分享            //    Selection.MoveUp unit:=wdParagraph
技术分享            //    ‘移动光标至当前段落的结尾
技术分享            //    Selection.MoveDown unit:=wdParagraph
技术分享            //    ‘选择从光标至当前段落开始的内容
技术分享            //    Selection.MoveUp unit:=wdParagraph, Extend:=wdExtend
技术分享            //    ‘选择从光标至当前段落结尾的内容
技术分享            //    Selection.MoveDown unit:=wdParagraph, Extend:=wdExtend
技术分享            //    ‘选择光标所在段落的内容
技术分享            //    Selection.MoveUp unit:=wdParagraph
技术分享            //    Selection.MoveDown unit:=wdParagraph, Extend:=wdExtend
技术分享            //    ‘显示选择区的开始与结束的位置,注意:文档第1个字符的位置是0
技术分享            //    MsgBox ("第" & Selection.Start & "个字符至第" & Selection.End & "个字符")
技术分享            //    ‘删除当前行
技术分享            //    Selection.HomeKey unit:=wdLine
技术分享            //    Selection.EndKey unit:=wdLine, Extend:=wdExtend
技术分享            //    Selection.Delete
技术分享            //    ‘删除当前段落
技术分享            //    Selection.MoveUp unit:=wdParagraph
技术分享            //    Selection.MoveDown unit:=wdParagraph, Extend:=wdExtend
技术分享            //    Selection.Delete
技术分享
技术分享
技术分享//表格的光标移动
技术分享//光标到当前光标所在表格的地单元格
技术分享WApp.Selection.Tables[1].Cell(11).Select();
技术分享//unit对象定义
技术分享object  unith = Microsoft.Office.Interop.Word.WdUnits.wdRow;//表格行方式
技术分享            object extend = Microsoft.Office.Interop.Word.WdMovementType.wdExtend;///extend对光标移动区域进行扩展选择
技术分享            object unitu = Microsoft.Office.Interop.Word.WdUnits.wdLine;//文档行方式,可以看成表格一行.不过和wdRow有区别
技术分享            object unitp = Microsoft.Office.Interop.Word.WdUnits.wdParagraph;//段落方式,对于表格可以选择到表格行后的换车符,对于跨行合并的行选择,我能找到的最简单方式
技术分享            object count=1;//光标移动量

 下面代码演示对于存在合并单元格的选择操作.合并单元格的选择问题一直是word的bug.部分object对象参照上面代码

 技术分享

 上面这个是表格合并样式.要如何才能选择2行标题栏尼.看下面代码

技术分享
技术分享//定位到表格第1单元格
技术分享WApp.Selection.Tables[1].Cell(11).Select();
技术分享//定位到第1个单元格第1个字符前          
技术分享WApp.Selection.HomeKey(ref unith, ref missing);
技术分享//扩展到行尾,选择表第1行            
技术分享WApp.Selection.EndKey(ref unith, ref extend);
技术分享//定义表格标题的行数量,titlerow为参数            
技术分享object strtitlerow=titlerow-1;
技术分享//移动光标选择第1行的末尾段落标记            
技术分享WApp.Selection.MoveDown(ref unitp, ref count, ref extend);
技术分享//选择下一行,因为合并的原因,如表格标题最后列是合并,只选择了2行的部分
技术分享            WApp.Selection.MoveDown(ref unitu, ref strtitlerow, ref extend);
技术分享//扩展到该行的末端,保证合并行能全部选择到
技术分享            WApp.Selection.EndKey(ref unith, ref extend);
技术分享//复制选择内容到剪贴板
技术分享            WApp.Selection.Copy();
技术分享//下面是移动光标到任何位置并粘贴内容.我程序中目的是到表格换页的时候自动插入下一页的表头.
技术分享            WApp.Selection.Tables[1].Cell(System.Convert.ToInt32(strRownum), 1).Select();
技术分享            WApp.Selection.HomeKey(ref unith, ref missing);
技术分享            WApp.Selection.Paste();
技术分享


四、段落格式设定

技术分享
技术分享//段落格式设定
技术分享            WApp.Selection.ParagraphFormat.LeftIndent = WApp.CentimetersToPoints(float.Parse("0"));//左缩进
技术分享            WApp.Selection.ParagraphFormat.RightIndent = WApp.CentimetersToPoints(float.Parse("0"));//右缩进
技术分享            WApp.Selection.ParagraphFormat.SpaceBefore =float.Parse("0");//段前间距
技术分享            WApp.Selection.ParagraphFormat.SpaceBeforeAuto =0;//
技术分享            WApp.Selection.ParagraphFormat.SpaceAfter = float.Parse("0");//段后间距
技术分享            WApp.Selection.ParagraphFormat.SpaceAfterAuto = 0;//
技术分享            WApp.Selection.ParagraphFormat.LineSpacingRule = Microsoft.Office.Interop.Word.WdLineSpacing.wdLineSpaceSingle;//单倍行距
技术分享            WApp.Selection.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphJustify;//段落2端对齐
技术分享            WApp.Selection.ParagraphFormat.WidowControl = 0;//孤行控制
技术分享            WApp.Selection.ParagraphFormat.KeepWithNext = 0;//与下段同页
技术分享            WApp.Selection.ParagraphFormat.KeepTogether = 0;//段中不分页
技术分享            WApp.Selection.ParagraphFormat.PageBreakBefore = 0;//段前分页
技术分享            WApp.Selection.ParagraphFormat.NoLineNumber = 0;//取消行号
技术分享            WApp.Selection.ParagraphFormat.Hyphenation = 1;//取消段字
技术分享            WApp.Selection.ParagraphFormat.FirstLineIndent = WApp.CentimetersToPoints(float.Parse("0"));//首行缩进
技术分享            WApp.Selection.ParagraphFormat.OutlineLevel = Microsoft.Office.Interop.Word.WdOutlineLevel.wdOutlineLevelBodyText;
技术分享            WApp.Selection.ParagraphFormat.CharacterUnitLeftIndent = float.Parse("0");
技术分享            WApp.Selection.ParagraphFormat.CharacterUnitRightIndent = float.Parse("0");
技术分享            WApp.Selection.ParagraphFormat.CharacterUnitFirstLineIndent = float.Parse("0");
技术分享            WApp.Selection.ParagraphFormat.LineUnitBefore = float.Parse("0");
技术分享            WApp.Selection.ParagraphFormat.LineUnitAfter = float.Parse("0");
技术分享            WApp.Selection.ParagraphFormat.AutoAdjustRightIndent = 1;
技术分享            WApp.Selection.ParagraphFormat.DisableLineHeightGrid =0;
技术分享            WApp.Selection.ParagraphFormat.FarEastLineBreakControl =1;
技术分享            WApp.Selection.ParagraphFormat.WordWrap = 1;
技术分享            WApp.Selection.ParagraphFormat.HangingPunctuation = 1;
技术分享            WApp.Selection.ParagraphFormat.HalfWidthPunctuationOnTopOfLine = 0;
技术分享            WApp.Selection.ParagraphFormat.AddSpaceBetweenFarEastAndAlpha = 1;             WApp.Selection.ParagraphFormat.AddSpaceBetweenFarEastAndDigit = 1;             WApp.Selection.ParagraphFormat.BaseLineAlignment = Microsoft.Office.Interop.Word.WdBaselineAlignment.wdBaselineAlignAuto;


五、字体格式设定

技术分享
技术分享//字体格式设定
技术分享            WApp.Selection.Font.NameFarEast = "华文中宋";
技术分享            WApp.Selection.Font.NameAscii = "Times New Roman";
技术分享            WApp.Selection.Font.NameOther = "Times New Roman";
技术分享            WApp.Selection.Font.Name = "宋体";
技术分享            WApp.Selection.Font.Size = float.Parse("14");
技术分享            WApp.Selection.Font.Bold = 0;
技术分享            WApp.Selection.Font.Italic = 0;
技术分享            WApp.Selection.Font.Underline = Microsoft.Office.Interop.Word.WdUnderline.wdUnderlineNone;
技术分享            WApp.Selection.Font.UnderlineColor = Microsoft.Office.Interop.Word.WdColor.wdColorAutomatic;
技术分享            WApp.Selection.Font.StrikeThrough =0;//删除线
技术分享            WApp.Selection.Font.DoubleStrikeThrough = 0;//双删除线
技术分享            WApp.Selection.Font.Outline =0;//空心
技术分享            WApp.Selection.Font.Emboss = 0;//阳文
技术分享            WApp.Selection.Font.Shadow = 0;//阴影
技术分享            WApp.Selection.Font.Hidden = 0;//隐藏文字
技术分享            WApp.Selection.Font.SmallCaps = 0;//小型大写字母
技术分享            WApp.Selection.Font.AllCaps = 0;//全部大写字母
技术分享            WApp.Selection.Font.Color = Microsoft.Office.Interop.Word.WdColor.wdColorAutomatic;
技术分享            WApp.Selection.Font.Engrave = 0;//阴文
技术分享            WApp.Selection.Font.Superscript = 0;//上标
技术分享            WApp.Selection.Font.Subscript = 0;//下标
技术分享            WApp.Selection.Font.Spacing = float.Parse("0");//字符间距
技术分享            WApp.Selection.Font.Scaling = 100;//字符缩放
技术分享            WApp.Selection.Font.Position = 0;//位置
技术分享            WApp.Selection.Font.Kerning = float.Parse("1");//字体间距调整
技术分享            WApp.Selection.Font.Animation = Microsoft.Office.Interop.Word.WdAnimation.wdAnimationNone;//文字效果
技术分享            WApp.Selection.Font.DisableCharacterSpaceGrid =false;
技术分享            WApp.Selection.Font.EmphasisMark = Microsoft.Office.Interop.Word.WdEmphasisMark.wdEmphasisMarkNone;
技术分享
技术分享


六、终于找到了获取光标位置的东东。那里找到的忘了,感谢提供的老大。放到这里供大家参考。
有了这个和上面内容,相信大家对word文档的控制应该到了随心所欲的地步,爽啊技术分享
获取的c#语法

技术分享//get_Information
技术分享Selection.get_Information(WdInformation.wdActiveEndPageNumber)

 

技术分享
技术分享 //关于行号-页号-列号-位置
技术分享            //information 属性 
技术分享            //返回有关指定的所选内容或区域的信息。variant 类型,只读。 
技术分享            //expression.information(type) 
技术分享            //expression 必需。该表达式返回一个 range 或 selection 对象。 
技术分享            //type long 类型,必需。需要返回的信息。可取下列 wdinformation 常量之一: 
技术分享            //wdactiveendadjustedpagenumber 返回页码,在该页中包含指定的所选内容或区域的活动结尾。如果设置了一个起始页码,并对页码进行了手工调整,则返回调整过的页码。 
技术分享            //wdactiveendpagenumber 返回页码,在该页中包含指定的所选内容或区域的活动结尾,页码从文档的开头开始计算而不考虑对页码的任何手工调整。 
技术分享            //wdactiveendsectionnumber 返回节号,在该节中包含了指定的所选内容或区域的活动结尾。 
技术分享            //wdatendofrowmarker 如果指定的所选内容或区域位于表格的行结尾标记处,则本参数返回 true。 
技术分享            //wdcapslock 如果大写字母锁定模式有效,则本参数返回 true。 
技术分享            //wdendofrangecolumnnumber 返回表格列号,在该表格列中包含了指定的所选内容或区域的活动结尾。 
技术分享            //wdendofrangerownumber 返回表格行号,在该表格行包含了指定的所选内容或区域的活动结尾。 
技术分享            //wdfirstcharactercolumnnumber 返回指定的所选内容或区域中第一个字符的位置。如果所选内容或区域是折叠的,则返回所选内容或区域右侧紧接着的字符编号。 
技术分享            //wdfirstcharacterlinenumber 返回所选内容中第一个字符的行号。如果 pagination 属性为 false,或 draft 属性为 true,则返回 - 1。 
技术分享            //wdframeisselected 如果所选内容或区域是一个完整的图文框文本框,则本参数返回 true。 
技术分享            //wdheaderfootertype 返回一个值,该值表明包含了指定的所选内容或区域的页眉或页脚的类型,如下表所示。 值 页眉或页脚的类型 
技术分享            //- 1 无 
技术分享            //0 偶数页页眉 
技术分享            //1 奇数页页眉 
技术分享            //2 偶数页页脚 
技术分享            //3 奇数页页脚 
技术分享            //4 第一个页眉 
技术分享            //5 第一个页脚 
技术分享            //wdhorizontalpositionrelativetopage 返回指定的所选内容或区域的水平位置。该位置是所选内容或区域的左边与页面的左边之间的距离,以磅为单位。如果所选内容或区域不可见,则返回 - 1。 
技术分享            //wdhorizontalpositionrelativetotextboundary 返回指定的所选内容或区域相对于周围最近的正文边界的左边的水平位置,以磅为单位。如果所选内容或区域没有显示在当前屏幕,则本参数返回 - 1。 
技术分享            //wdinclipboard 有关此常量的详细内容,请参阅 microsoft office 98 macintosh 版的语言参考帮助。 
技术分享            //wdincommentpane 如果指定的所选内容或区域位于批注窗格,则返回 true。 
技术分享            //wdinendnote 如果指定的所选内容或区域位于页面视图的尾注区内,或者位于普通视图的尾注窗格中,则本参数返回 true。 
技术分享            //wdinfootnote 如果指定的所选内容或区域位于页面视图的脚注区内,或者位于普通视图的脚注窗格中,则本参数返回 true。 
技术分享            //wdinfootnoteendnotepane 如果指定的所选内容或区域位于页面视图的脚注或尾注区内,或者位于普通视图的脚注或尾注窗格中,则本参数返回 true。详细内容,请参阅前面的 wdinfootnote 和 wdinendnote 的说明。 
技术分享            //wdinheaderfooter 如果指定的所选内容或区域位于页眉或页脚窗格中,或者位于页面视图的页眉或页脚中,则本参数返回 true。 
技术分享            //wdinmasterdocument 如果指定的所选内容或区域位于主控文档中,则本参数返回 true。 
技术分享            //wdinwordmail 返回一个值,该值表明了所选内容或区域的的位置,如下表所示。值 位置 
技术分享            //0 所选内容或区域不在一条电子邮件消息中。 
技术分享            //1 所选内容或区域位于正在发送的电子邮件中。 
技术分享            //2 所选内容或区域位于正在阅读的电子邮件中。 
技术分享            //wdmaximumnumberofcolumns 返回所选内容或区域中任何行的最大表格列数。 
技术分享            //wdmaximumnumberofrows 返回指定的所选内容或区域中表格的最大行数。 
技术分享            //wdnumberofpagesindocument 返回与所选内容或区域相关联的文档的页数。 
技术分享            //wdnumlock 如果 num lock 有效,则本参数返回 true。 
技术分享            //wdovertype 如果改写模式有效,则本参数返回 true。可用 overtype 属性改变改写模式的状态。 
技术分享            //wdreferenceoftype 返回一个值,该值表明所选内容相对于脚注、尾注或批注引用的位置,如下表所示。 值 描述 
技术分享            //— 1 所选内容或区域包含、但不只限定于脚注、尾注或批注引用中。 
技术分享            //0 所选内容或区域不在脚注、尾注或批注引用之前。 
技术分享            //1 所选内容或区域位于脚注引用之前。 
技术分享            //2 所选内容或区域位于尾注引用之前。 
技术分享            //3 所选内容或区域位于批注引用之前。 
技术分享            //wdrevisionmarking 如果修订功能处于活动状态,则本参数返回 true。 
技术分享            //wdselectionmode 返回一个值,该值表明当前的选定模式,如下表所示。 值 选定模式 
技术分享            //0 常规选定 
技术分享            //1 扩展选定 
技术分享            //2 列选定 
技术分享            //wdstartofrangecolumnnumber 返回所选内容或区域的起点所在的表格的列号。 
技术分享            //wdstartofrangerownumber 返回所选内容或区域的起点所在的表格的行号。 
技术分享            //wdverticalpositionrelativetopage 返回所选内容或区域的垂直位置,即所选内容的上边与页面的上边之间的距离,以磅为单位。如果所选内容或区域没有显示在屏幕上,则本参数返回 - 1。 
技术分享            //wdverticalpositionrelativetotextboundary 返回所选内容或区域相对于周围最近的正文边界的上边的垂直位置,以磅为单位。如果所选内容或区域没有显示在屏幕上,则本参数返回 - 1。 
技术分享            //wdwithintable 如果所选内容位于一个表格中,则本参数返回 true。 
技术分享            //wdzoompercentage 返回由 percentage 属性设置的当前的放大百分比。
技术分享
技术分享


七、呼,终于写完了,鼓掌。不要拿鸡蛋砸我。大家有好的心得,欢迎交流。不要光看不回。

再谈word2003编程

标签:

原文地址:http://www.cnblogs.com/shsgl/p/4302601.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!