C# 操作Excel图形——绘制、读取、隐藏、删除图形
简介
本篇文章将介绍C# 如何处理Excel图形相关的问题,包括以下内容要点:
1.绘制图形
1.1 绘制图形并添加文本到图形
1.2 添加图片到图形
1.3 设置图形阴影效果
1.4 设置图形透明度
2. 提取图形中的文本、图片
3. 设置图形的显示、隐藏
4. 删除图形
4.1删除指定图形
4.2 删除所有图形
所需工具
PS: 下载安装该类库后,注意在项目程序中添加引用Spire.Xls.dll文件(dll文件可在安装路径下的Bin文件夹中获取)

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

示例代码(供参考)
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[]; //添加“太阳”形状的图形,并填充颜色,设置图形的透明度为50%
IPrstGeomShape Triangle = sheet.PrstGeomShapes.AddPrstGeomShape(, , , , PrstGeomShapeType.Sun);
Triangle.Fill.ForeColor = Color.Orange;
Triangle.Fill.FillType = ShapeFillType.SolidColor;
Triangle.Fill.Transparency = 0.5;
Triangle.Text = "IT'S A SUNNY DAY";//添加文本 //添加“禁止”标志的图形,并填充渐变颜色
IPrstGeomShape heart = sheet.PrstGeomShapes.AddPrstGeomShape(, , , , PrstGeomShapeType.NoSmoking);
heart.Fill.ForeColor = Color.Red;
heart.Fill.FillType = ShapeFillType.Gradient; //添加云朵形状的图形
IPrstGeomShape Cloud = sheet.PrstGeomShapes.AddPrstGeomShape(, , , , PrstGeomShapeType.Cloud);
//设置图形阴影效果
Cloud.Shadow.Angle = ;
Cloud.Shadow.Distance = ;
Cloud.Shadow.Size = ;
Cloud.Shadow.Color = Color.SteelBlue;
Cloud.Shadow.Blur = ;
Cloud.Shadow.Transparency = ;
Cloud.Shadow.HasCustomStyle = true; //添加五角星形状的图形,并加载图片来填充图形
IPrstGeomShape cloud = sheet.PrstGeomShapes.AddPrstGeomShape(, , , , 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");
}
}
}
图形插入效果:

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[]; //提取指定形状中的文本内容,并将提取到的文本保存到指定文档
IPrstGeomShape shape1 = sheet.PrstGeomShapes[];
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[];
Image image = shape2.Fill.Picture;
image.Save("ShapeImage.png", ImageFormat.Png);
System.Diagnostics.Process.Start("ShapeImage.png");
}
}
}
提取结果:

3. 设置图形的隐藏、显示
【C#】
using Spire.Xls; namespace HideShapes_XLS
{
class Program
{
static void Main(string[] args)
{
//创建实例,加载Excel文档
Workbook workbook = new Workbook();
workbook.LoadFromFile("test.xlsx"); //获取第一个工作表
Worksheet sheet = workbook.Worksheets[]; //隐藏第3个图形
sheet.PrstGeomShapes[].Visible = false;
//显示图形
//sheet.PrstGeomShapes[1].Visible = true; //保存并打开文档
workbook.SaveToFile("HideShape.xlsx", ExcelVersion.Version2013);
System.Diagnostics.Process.Start("HideShape.xlsx");
}
}
}
设置效果:

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[]; //删除第一个图形
sheet.PrstGeomShapes[].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");
}
}
}
图形删除效果:

以上是关于“C#操作Excel中图形”的介绍,如需转载,请注明出处。
C# 操作Excel图形——绘制、读取、隐藏、删除图形的更多相关文章
- js操作cookie(创建、读取、删除)方法总结
js操作cookie,可以通过开源的插件实现,方便快捷,兼容性好,同样也可以自己写: 此文主要介绍两个常用的插件: Js.cookie.js 和 jQuery.cookie.js 0.Js.cooki ...
- NPOI 读取excel到DataTable 读取隐藏列 读取公式列
处理思路: 1.打开excel 用NPOI进行读取: 2.读取第一个Sheet: 读取过程中: a.先设置相应列 不隐藏 b.读取Cell时 先判断是否的包含公式 相应代码如下: public sta ...
- C#操作Excel(2)-- 打开-读取Excel文档
由于要为某软件实现导出Excel功能,故有此文. 本文的开发环境是Visual Studio 2010 ,C#, Excel 2007. 新建C#工程后打开Solution Explorer,可以看到 ...
- 使用Open xml 操作Excel系列之一-读取Excel
一. 安装Open Xml SDK 从微软网站下载Open xml SDK,安装SDK. 二. 在项目中添加对DocumentFormat.OpenXml库的引用
- Java——操作Excel表格,读取表格内容
JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该API非Windows操作系统也可以通过 ...
- 使用Python操作Excel文档(一)
Python | 使用Python操作Excel文档(一) 0 前言 在阅读本文之前,请确保您已满足或可能满足以下条件: 请确保您具备基本的Python编程能力. 请确保您会使用Excel. 请确保您 ...
- PCB ODB++(Gerber)图形绘制实现方法
这里讲解一下用net解析PCB图形绘制实现方法 一.解析PCB图形绘制实现 解析PCB图形,说简单也非常简单,先说一下,PCB Gerber图形由:点,线,弧,铜皮,文字 5类元素组成,通常简写为:P ...
- Matplotlib 图形绘制
章节 Matplotlib 安装 Matplotlib 入门 Matplotlib 基本概念 Matplotlib 图形绘制 Matplotlib 多个图形 Matplotlib 其他类型图形 Mat ...
- 一个由正则表达式引发的血案 vs2017使用rdlc实现批量打印 vs2017使用rdlc [asp.net core 源码分析] 01 - Session SignalR sql for xml path用法 MemCahe C# 操作Excel图形——绘制、读取、隐藏、删除图形 IOC,DIP,DI,IoC容器
1. 血案由来 近期我在为Lazada卖家中心做一个自助注册的项目,其中的shop name校验规则较为复杂,要求:1. 英文字母大小写2. 数字3. 越南文4. 一些特殊字符,如“&”,“- ...
随机推荐
- VIM常用快捷键(转载)
移动光标 h,j,k,l 上,下,左,右 ctrl-e 移动页面 ctrl-f 上翻一页 ctrl-b 下翻一页 ctrl-u 上翻半页 ctrl-d 下翻半页 w 跳到下一个字首,按标点或单词分割 ...
- JavaScript经典作用域问题(转载)
题目 var a = 10; function test(){ a = 100; console.log(a); console.log(this.a); var a; console.log(a); ...
- 把一下程序中的print()函数改写成
源代码: #include <iostream> using namespace std; void print( int w ) { ; i <= w ; i++ ) { ; j ...
- 一个自己研究出来的字符串匹配算法-k子串算法
前言 最近工作中需要写一个算法,而写完这个算法我却发现了一个很有意思的事情.需要的这个算法是这样的:对于A,B两个字符串,找出最多K个公共子串,使得这K个子串长度和最大.百度之没有这样的算法,然后就开 ...
- OSGi类加载流程
思路 OSGi每个模块都有自己独立的classpath.如何实现这一点呢?是因为OSGi采取了不同的类加载机制: OSGi为每个bundle提供一个类加载器,该加载器能够看到bundle Jar文件内 ...
- [Swift]LeetCode45. 跳跃游戏 II | Jump Game II
Given an array of non-negative integers, you are initially positioned at the first index of the arra ...
- [Java]LeetCode138. 复制带随机指针的链表 | Copy List with Random Pointer
A linked list is given such that each node contains an additional random pointer which could point t ...
- [Swift]LeetCode308. 二维区域和检索 - 可变 $ Range Sum Query 2D - Mutable
Given a 2D matrix matrix, find the sum of the elements inside the rectangle defined by its upper lef ...
- [Swift]LeetCode413. 等差数列划分 | Arithmetic Slices
A sequence of number is called arithmetic if it consists of at least three elements and if the diffe ...
- [Swift]LeetCode592. 分数加减运算 | Fraction Addition and Subtraction
Given a string representing an expression of fraction addition and subtraction, you need to return t ...