2. 书写程序时应总遵循的规则

  1. 一个说明或一个语句占一行
  2. 用 {} 括起来的部分,通常表示了程序的某层次结构。{}
    一般与结构语句的第一个字母对齐,并单独占一行
  3. 低一层次的语句或说明可比高一层次的语句或说明缩进若干格后书写。

所需工具

  • Free Spire.XLS for .NET 8.3
    (社区版)

PS:
下载安装该类库后,注意在项目程序中添加引用Spire.Xls.dll文件(dll文件可在安装路径下的Bin文件夹中获取)

图片 1

注:Spire.xls能支持的图形种类很多,常见的Office
Excel中的图形,这个类库也都能实现,

图片 2

python项目练习三:万能的XML

这个项目的名称与其叫做万能的XML不如叫做自动构建网站,根据一份XML文件,生成对应目录结构的网站,不过只有html还是太过于简单了,如果要是可以连带生成css那就比较强大了。这个有待后续研发,先来研究下怎么html网站结构。
既然是通过XML结构生成网站,那所有的事情都应该由这个XML文件来。先来看下这个XML文件,website.xml:

图片 3

 

有了这个文件,下面应该来看怎么通过这个文件生成网站。

首先我们要解析这个xml文件,python解析xml和在java中一样,有两种方式,SAX和DOM,两种处理方式不同点在于速度和范围,前者讲究的是效率,每次只处理文档的一小部分,快速而能有效的利用内存,后者是相反的处理方式,先把所有的文档载入到内存,然后再进行处理,速度比较慢,也比较消耗内存,唯一的好处就是可以操作整个文档。

在python中使用sax方式处理xml要先引入xml.sax中的parse函数,还有xml.sax.handler中的ContentHandler,后面的这个类是要和parse函数来配合使用的。使用方式如下:
parse(‘xxx.xml’,xxxHandler),这里面的xxxHandler要继承上面的ContentHandler,不过只要继承就行,不需要有所作为。
然后这个parse函数在处理xml文件的时候,会调用xxxHandler中的startElement函数和endElement函数来一个xml中的标签的开始和结束,中间的过程使用一个名为characters的函数来处理标签内部的所有字符串。

有了上面的这些认识,我们已经知道如何处理xml文件了,然后再来看那个罪恶的源头website.xml文件,分析其结构,只有两个节点:page和directory,很明显page表示一个页面,directory表示一个目录。

所以处理这个xml文件的思路就变的清晰了。读取xml文件的每一个节点,然后判断是page还是directory如果是page则创建html页面,然后把节点中的内容写到文件里。如果遇到directory就创建一个文件夹,然后再处理其内部的page节点(如果存在的话)。

下面来看这部分代码,书中的实现比较复杂,比较灵活。先来看,然后在分析。

图片 4

 

看起来这个程序上面分析的复杂了一些,不过伟人毛毛说过,任何复杂的程序都是纸老虎。那我们再来分析一下这个程序。

首先看到这个程序是有两个类,其实完全可以当作一个类,因为有了继承。

然后再来看它多了些什么,除了我们分析出来的startElement和endElement以及characters,多出来了startPage,endPage;startDirectory,endDirectory;defaultStart,defaultEnd;ensureDirectory;writeHeader,writeFooter;和dispatch,这些个函数。除了dispatch,前面的函数都很好理解,每一对函数都是单纯的处理对应的html标签以及xml节点。而dispatch比较复杂,复杂之处在于他是用来动态拼合函数并且进行执行的。

dispatch的处理思路是,首先根据传递的参数(就是操作名称以及节点名称)判断是否存在对应的函数如startPage,如果不存在则执行default+操作名称:如defaultStart。

一个函数一个函数搞清楚之后,就知道整个处理流程是什么样了。首先创建一个public_html的文件,存放整个网站,然后读xml的节点,通过startElement和endElement调用dispatch进行处理。然后就是dispatch怎么调用具体的处理函数了。
到此为止,这个项目算是分析完了。

主要掌握的内容一个是python中使用SAX处理XML,另一个就是python中的函数的使用,比如getattr,传参数时的星号……

3. 实型量

  1. 实型常量:实型也称为 浮点型;实型常量也称为实数或者
    浮点数;十进制数形式和指数形式
    1) 十进制数形式:由数码 0~9 和小数点组成
    2)
    指数形式:由十进制数,加阶码标志“e”或“E”以及阶码组成(其一般形式为a E
    n (a为十进制数,n为十进制整数)其值为 a10,n 如: 2.1E5
    (等于2.1
    10,5))
  2. 实型变量:单精度型和双精度型
    1) 单精度说明符:float
    在C中单精度型占4个字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38,只能提供七位有效数字;
    2) 双精度说明符:double
    双精度型占8个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308,可提供16位有效数字
    3) 实型变量说明的格式和书写规格与整型相同

简介

本篇文章将介绍C# 如何处理Excel图形相关的问题,包括以下内容要点:

1.绘制图形

   1.1 绘制图形并添加文本到图形

   1.2 添加图片到图形

   1.3 设置图形阴影效果

  1. 提取图形中的文本、图片

  2. 设置图形的显示、隐藏

  3. 删除图形

   4.1删除指定图形

   4.2 删除所有图形

图片 5

5. 变量的初始值和类型转换

  1. 变量赋初值:常常需要对变量赋初值,以便使用变量;
    类型说明符 变量1 = 值1, 变量2 = 值2···;

<wiz_code_mirror>

 

 

 

 

 

1 int a = 4, b = 2;
2 char = ch1 = 's', ch2 = 'a';
3 int a = b = c = 4;        // error 不允许连续赋值

 

 

 

  1. 变量类型的转换:变量的数据类型是可以转换的,自动转换 和
    强制转换
    1)
    自动转换:发生在不同数据类型的量在混合运算时,由编译系统自动完成,规则:
    · 若参与运算量的类型不同,则先转换成统一类型,然后进行运算
    · 转换按数据长度增加的方向进行,以保证精度不降低。如
    int型和long型运算时,先把int量转成long型后在进行运算
    ·
    所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要转成double型,再做运算
    · char型和short型参与运算时,必须先转换成int型
    ·
    在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型,如果右边量的数据类型长度左边长时,将丢失一部分数据,这样会降低精度,丢失的部分按四舍五入向前舍入
    2) 强制转换:是通过类型转换来实现的,一般形式:(类型说明符)
    (表达式)
    其功能是把表达式的运算结果强制转换成类型说明符所表示的类型;
    例如:(float) a 把a转换为实型; (int) (x+y)
    把x+y的结果运算结果强制转换为整型
    · 类型说明符和表达式都必须加括号(单个变量可以不加括号),
    ·
    无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型

1. 绘制图形

【C#】

using System.Drawing;
using Spire.Xls;
using Spire.Xls.Core;

namespace Add_shapes_to_Excel
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建实例
            Workbook workbook = new Workbook();
            //获取第一个工作表
            Worksheet sheet = workbook.Worksheets[0];

            //添加“太阳”形状的图形,并填充颜色
            IPrstGeomShape Triangle = sheet.PrstGeomShapes.AddPrstGeomShape(2, 2, 170, 160, PrstGeomShapeType.Sun);
            Triangle.Fill.ForeColor = Color.Orange;
            Triangle.Fill.FillType = ShapeFillType.SolidColor;            
            Triangle.Text = "IT'S A SUNNY DAY";//添加文本

            //添加“禁止”标志的图形,并填充渐变颜色
            IPrstGeomShape heart = sheet.PrstGeomShapes.AddPrstGeomShape(2, 7, 140, 140, PrstGeomShapeType.NoSmoking);
            heart.Fill.ForeColor = Color.Red;
            heart.Fill.FillType = ShapeFillType.Gradient;

            //添加云朵形状的图形
            IPrstGeomShape Cloud = sheet.PrstGeomShapes.AddPrstGeomShape(15, 2, 160, 160, PrstGeomShapeType.Cloud);           
            //设置图形阴影效果
            Cloud.Shadow.Angle = 90;
            Cloud.Shadow.Distance = 10;
            Cloud.Shadow.Size = 100;
            Cloud.Shadow.Color = Color.SteelBlue;
            Cloud.Shadow.Blur = 30;
            Cloud.Shadow.Transparency = 1;
            Cloud.Shadow.HasCustomStyle = true;

            //添加五角星形状的图形,并加载图片来填充图形
            IPrstGeomShape cloud = sheet.PrstGeomShapes.AddPrstGeomShape(15, 7, 160, 160, PrstGeomShapeType.Star5);
            cloud.Fill.CustomPicture(Image.FromFile("sm.png"), "sm.png");
            cloud.Fill.FillType = ShapeFillType.Picture;

            //保存并打开文档
            workbook.SaveToFile("AddShapes.xlsx", ExcelVersion.Version2013);
            System.Diagnostics.Process.Start("AddShapes.xlsx");
        }
    }
}

图形插入效果:

图片 6

python项目练习四:新闻聚合

书中的第四个练习,新闻聚合。现在很少见的一类应用,至少我从来没有用过,又叫做Usenet。这个程序的主要功能是用来从指定的来源(这里是Usenet新闻组)收集信息,然后讲这些信息保存到指定的目的文件中(这里使用了两种形式:纯文本和html文件)。这个程序的用处有些类似于现在的博客订阅工具或者叫RSS订阅器。

先上代码,然后再来逐一分析:

图片 7

 

这个程序,首先从整体上进行分析,重点部分在于NewsAgent,它的作用是存储新闻来源,存储目标地址,然后在分别调用来源服务器(NNTPSource以及SimpleWebSource)以及写新闻的类(PlainDestination和HTMLDestination)。所以从这里也看的出,NNTPSource是专门用来获取新闻服务器上的信息的,SimpleWebSource是获取一个url上的数据的。而PlainDestination和HTMLDestination的作用很明显,前者是用来输出获取到的内容到终端的,后者是写数据到html文件中的。

有了这些分析,然后在来看主程序中的内容,主程序就是来给NewsAgent添加信息源和输出目的地址的。

这确实是个简单的程序,不过这个程序可是用到了分层了。

1. C语言的数据类型

  • 可分为:基本数据类型,构造数据类型,指针类型,空类型
  1. 基本数据类型:其值不可以再分解其他类型,
  2. 构造数据类型:是根据已定义一个或多个数据类型用构造的方法来定义的。一个构造类型的值可以分解成多个“成员”或“元素”。每个成员都是一个基本数据类型或又是一个构造类型。构造类型:数组类型,结构类型,联合类型
  3. 指针类型:其值用来表示某个量在内存存储器中的地址
  4. 空类型:在调用函数值时,通常应向调用者返回一个函数值,类型说明符为:void

对于基本数据类型量,按其取值是否可以改变分为变量和常量;在程序执行中,其值不发生改变的量称为常量,反之;可分为:整型常量,整型变量,浮点常量,浮点变量,字符常量,字符变量,枚举常量,枚举变量。在程序中,常量是可以不经说明而直接引用的,而变量则必须先说明后使用

2.提取图形中的文本和图片

【C#】

using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Text;
using Spire.Xls;
using Spire.Xls.Core;

namespace Extract_text_and_image_from_Excel_shape
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建实例,加载Excel工作表
            Workbook workbook = new Workbook();
            workbook.LoadFromFile("test.xlsx");

            //获取第一个工作表
            Worksheet sheet = workbook.Worksheets[0];

            //提取指定形状中的文本内容,并将提取到的文本保存到指定文档
            IPrstGeomShape shape1 = sheet.PrstGeomShapes[0];
            string s = shape1.Text;
            StringBuilder sb = new StringBuilder();
            sb.AppendLine(s);
            File.WriteAllText("ExtractText.txt", sb.ToString());
            System.Diagnostics.Process.Start("ExtractText.txt");

            //提取指定图形中的图片,并保存图片到指定文件
            IPrstGeomShape shape2 = sheet.PrstGeomShapes[3];
            Image image = shape2.Fill.Picture;
            image.Save("ShapeImage.png", ImageFormat.Png);
            System.Diagnostics.Process.Start("ShapeImage.png");
        }
    }
}

提取结果:

图片 8

python项目练习二:画幅好画

这是《python基础教程》中的第二个项目,关于python操作PDF

涉及到的知识点

1、urllib的使用

2、reportlab库的使用

这个例子着实很简单,不过我发现在python里面可以直接在数组[]里面写for循环,真是越用越方便。

下面是代码:

图片 9

 

2. 整型量

  • 整型量包含整型常量、整型变量。整型常量就是整常数:八进制,十六进制,十进制
    二进制到八进制转换
    1 100 011 100 110
    1 4 3 4 6
    二进制到十六进制转换:
    1 1000 1110 0110
    1 8 E 6
  1. 整型常量
    1)
    八进制整常数八进制整常数必须为0开头,即以0作为八进制数的前缀。数码取值为0~7,八进制通常是无符号数
    015(十进制为13) 0101(65)
    2) 十六进制整常数的前缀为0X或0x。数码取值 0~9,A~F 或 a~f
    0X2A(十进制13) 0XA0(160)
    3) 十进制整常数没有前缀。数码取值 0~9

十进制无符号整常数的范围为 0~65535 有符号数为 -32768~32767 ;
八进制无符号数的表示范围为 0~0177777 ; 十六进制无符号数的表示范围为
0X0~0XFFFF 或 0x0~0xFFFF
如果使用的数据超过了上述范围,就必须用长整型数来表示。长整型数是用后缀
“L” 或 “l”
十进制长整常数 158L (十进制为158) 358000L(十进制为 -358000)
八进制长整常数 012L (十进制为 10) 077L (十进制为 63)
十六进制进制长整常数 0X15L (十进制为 21) 0X10000L (十进制为 65536)
整型常数的无符号数的后缀为 “U” 或 “u”

  1. 整型变量
    1) 基本型:int 在内存中占 2 个字节,其取值为基本整常数
    -32768~32768
    2) 短整量:short int 同基本型 -32768~32768
    3) 长整型:long int 或 long 在内存中占4个字节,其取值为长整常数
    -32768~32768
    4) 无符号型:unsigned
  • 变量说明的一般形式:类型说明符 变量名称标识符 …:

<wiz_code_mirror>

 

 

 

 

 

 1 int a, b, c // (a,b,c 为整型变量) 2 long x, y // (x,y 为长整型变量) 

 

 

  • 注意:
    1.允许在一个类型说明符后,说明多个相同类型的变量。各变量之间用逗号
    间隔,类型说明符与变量名之间至少用一个空格间隔
    2.最后一个变量名之后必须以“;”号结尾
    3.变量说明必须在变量使用之前,一般放在函数体的开头部分

4. 删除Excel图形

【C#】

using Spire.Xls;

namespace RemoveShapes_XLS
{
    class Program
    {
        static void Main(string[] args)
        {
            //实例化Workbook类对象,加载Excel文件
            Workbook workbook = new Workbook();
            workbook.LoadFromFile("test.xlsx");

            //获取第一个工作表
            Worksheet sheet = workbook.Worksheets[0];

            //删除第一个图形
            sheet.PrstGeomShapes[0].Remove();

            //删除所有图形
            //for (int i = sheet.PrstGeomShapes.Count-1; i >= 0; i--)
            //{
            //    sheet.PrstGeomShapes[i].Remove();
            //}

            //保存并打开文件
            workbook.SaveToFile("DeleteShape.xlsx", ExcelVersion.Version2013);
            System.Diagnostics.Process.Start("DeleteShape.xlsx");
        }
    }
}

图形删除效果:

图片 10

以上是关于“C#操作Excel中图形”的介绍,如需转载,请注明出处。

前言

Python 是一种极具可读性和通用性的编程语言。Python
这个名字的灵感来自于英国喜剧团体 Monty
Python,它的开发团队有一个重要的基础目标,就是使语言使用起来很有趣。Python
易于设置,并且是用相对直接的风格来编写,对错误会提供即时反馈,对初学者而言是个很好的选择。

Python
是一种多范式语言,也就是说,它支持多种编程风格,包括脚本和面向对象,这使得它适用于通用目的。随着越来越多地在工业中,被诸如联合太空联盟(NASA
的主要飞机支持承包商)和工业光魔(VFX
和卢卡斯影业的动画工作室)等组织使用,Python
为那些寻求额外编程语言的人提供了巨大的潜力 。

当一个重要的被称为 comp.lang.python 的 Python 新闻组在 1994
年形成时,Python 的用户基础不断增长,这为 Python
成为开源开发中最受欢迎的编程语言之一铺平了道路。

Python当下真的很火。Python实战项目,也一直尤为关注,接下来,和大家介绍下十个Python练手的实战项目

文章后面也给大家整理了Python很全面的资料和教程可以下载,适合正在学习Python的朋友。

发表评论

电子邮件地址不会被公开。 必填项已用*标注