在以前接触的项目中,由于很多客户对微软Excel的操作比较熟练,客户经常要求系统支持对Excel文件的读写。用.NET传统方法对Excel进行读写时,往往会涉及到不同版本兼容的问题,导致在本地测试一切正常,但是到客户那经常会出现各种问题。后来发现一个Spire.XLS的NET库,可以很方便的对不同版本的Excel文件进度操作,还可以生成各种常见的图形。下面结合一个简单的例子,看一下效果:

1、首先要安装Spire.XLS,可以自定百度,然后建立一个windows应用程序WinExcelDemo,注意添加相关dll引用:

2、编写代码,这里当主界面打开时,就开始进行Excel的数据准备和文件生产操作,代码如下:

 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; namespace WinExcelDemo
{
using Spire.Xls;
using Spire.Xls.Charts;
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
Run();
}
private void Run()
{
Workbook workbook = new Workbook(); //初始化 工作簿worksheet
workbook.CreateEmptySheets();
Worksheet sheet = workbook.Worksheets[];
sheet.Name = "数据";
sheet.GridLinesVisible = false; //创建图形数据
CreateChartData(sheet);
//在工作簿中添加一个新的图表
Chart chart = sheet.Charts.Add(); //设置数据的区域
chart.DataRange = sheet.Range["A1:C5"];
chart.SeriesDataFromRange = false; //设置图的位置
chart.LeftColumn = ;
chart.TopRow = ;
chart.RightColumn = ;
chart.BottomRow = ;
//图类型
chart.ChartType = ExcelChartType.Area;
//图标题
chart.ChartTitle = "Sales market by country";
chart.ChartTitleArea.IsBold = true;
chart.ChartTitleArea.Size = ; chart.PrimaryCategoryAxis.Title = "Country";
chart.PrimaryCategoryAxis.Font.IsBold = true;
chart.PrimaryCategoryAxis.TitleArea.IsBold = true; chart.PrimaryValueAxis.Title = "Sales(in Dollars)";
chart.PrimaryValueAxis.HasMajorGridLines = false;
chart.PrimaryValueAxis.TitleArea.TextRotationAngle = ;
chart.PrimaryValueAxis.MinValue = ;
chart.PrimaryValueAxis.TitleArea.IsBold = true; foreach (Spire.Xls.Charts.ChartSerie cs in chart.Series)
{
//不同颜色
cs.Format.Options.IsVaryColor = true;
//显示数据标签
cs.DataPoints.DefaultDataPoint.DataLabels.HasValue = true;
}
//Legend位置
chart.Legend.Position = LegendPositionType.Top;
workbook.SaveToFile("Sample.xls");
ExcelDocViewer(workbook.FileName);
} private void CreateChartData(Worksheet sheet)
{
//Country
sheet.Range["A1"].Value = "Country";
sheet.Range["A2"].Value = "Cuba";
sheet.Range["A3"].Value = "Mexico";
sheet.Range["A4"].Value = "France";
sheet.Range["A5"].Value = "German"; //Jun
sheet.Range["B1"].Value = "Jun";
sheet.Range["B2"].NumberValue = ;
sheet.Range["B3"].NumberValue = ;
sheet.Range["B4"].NumberValue = ;
sheet.Range["B5"].NumberValue = ; //Jun
sheet.Range["C1"].Value = "Aug";
sheet.Range["C2"].NumberValue = ;
sheet.Range["C3"].NumberValue = ;
sheet.Range["C4"].NumberValue = ;
sheet.Range["C5"].NumberValue = ; //Style
sheet.Range["A1:C1"].Style.Font.IsBold = true;
sheet.Range["A2:C2"].Style.KnownColor = ExcelColors.LightYellow;
sheet.Range["A3:C3"].Style.KnownColor = ExcelColors.LightGreen1;
sheet.Range["A4:C4"].Style.KnownColor = ExcelColors.LightOrange;
sheet.Range["A5:C5"].Style.KnownColor = ExcelColors.LightTurquoise; //Border
sheet.Range["A1:C5"].Style.Borders[BordersLineType.EdgeTop].Color = Color.FromArgb(, , );
sheet.Range["A1:C5"].Style.Borders[BordersLineType.EdgeTop].LineStyle = LineStyleType.Thin;
sheet.Range["A1:C5"].Style.Borders[BordersLineType.EdgeBottom].Color = Color.FromArgb(, , );
sheet.Range["A1:C5"].Style.Borders[BordersLineType.EdgeBottom].LineStyle = LineStyleType.Thin;
sheet.Range["A1:C5"].Style.Borders[BordersLineType.EdgeLeft].Color = Color.FromArgb(, , );
sheet.Range["A1:C5"].Style.Borders[BordersLineType.EdgeLeft].LineStyle = LineStyleType.Thin;
sheet.Range["A1:C5"].Style.Borders[BordersLineType.EdgeRight].Color = Color.FromArgb(, , );
sheet.Range["A1:C5"].Style.Borders[BordersLineType.EdgeRight].LineStyle = LineStyleType.Thin; sheet.Range["B2:C5"].Style.NumberFormat = "\"$\"#,##0";
} private void ExcelDocViewer(string fileName)
{
try
{
//打开生成的Excel
System.Diagnostics.Process.Start(fileName);
}
catch { }
}
}
}

3、运行代码,可以看到如下结果:

4、总结

上面只是该库很小一部分功能,该库还能对Excel进行分组、支持VBA扩展等功能,该库虽然强大,但是不开源,是商业软件。不过经过了解,Spire.XLS也提供免费版,只不过免费版有一个Excel文档不能超过5个sheet的限制。对于一些小项目,免费版也完全够用可以考虑。至于较大应用,则需要商业版。NOPI是开源的Excel库,也可以方便的进行Excel读写操作且无需安装office,但功能不及Spire.XLS全面。开源和非开源,存在即合理,各有优势。

如何在没有安装微软Excel环境下操作Excel文件?的更多相关文章

  1. NET平台下的Excel编程|C#操作Excel|Application和ApplicationClass的联系和区别

    NET平台下的Excel编程|C#操作Excel|Application和ApplicationClass的联系和区别 1. Interop含义Interop是互操作的含义.Microsoft.Off ...

  2. 【LDAP安装】在已编译安装的PHP环境下安装LDAP模块

    在已编译安装的PHP环境下安装LDAP模块 (乐维温馨提示:其他模块也能以这个方式安装) 1.在PHP源码包内找到ldap模块文件 cd php-5.6.37 cd ext/ldap/ 2.phpiz ...

  3. Oracle-11g-R2 RAC 环境下 GPnP Profile 文件

    GPnP Profile 文件的作用: GPnP Profile 文件是一个保存于 $GRID_HOME/gpnp/<hostname>/profiles/peer 目录下的小型 XML ...

  4. 在 VS2008 下操作 Excel 的方法总结

      这些天做个软件,需要读取 Excel 并导入到数据库中,所以研究了一下在 VC 下操作 Excel 的方法,这里做个总结,以作备忘. 一.最常用的 OLE 自动化方式 这个方式应该说是功能最全的方 ...

  5. linux环境下/etc/hosts文件详解

    linux环境下/etc/hosts文件详解 就没一个昵称能用关注 0.0632017.09.12 17:04:28字数 623阅读 27,096 介绍 hosts文件是linux系统中负责ip地址与 ...

  6. 在windows环境下运行compass文件出现的错误提示解决方案

    在windows环境下运行compass文件出现的错误提示解决方案 例如:经常在项目中运行grunt命令编译scss文件的时候,会出现下面的错误提示 (Encoding::CompatibilityE ...

  7. apache环境下禁止某文件夹内运行PHP脚本、禁止访问文件或目录执行权限的设置方法

    apache环境下禁止某文件夹内运行PHP脚本.禁止访问文件或目录执行权限的设置方法   首先我们来看两段对上传目录设置无权限的列子,配置如下: <Directory "要去掉PHP执 ...

  8. UNICODE环境下读写txt文件操作

    内容转载自http://blog.sina.com.cn/s/blog_5d2bad130100t0x9.html UNICODE环境下读写txt文件操作 (2011-07-26 17:40:05) ...

  9. python调用另一个文件中的代码,pycharm环境下:同文件夹下文件(.py)之间的调用,出现红线问题

    如何调用另一个python文件中的代码无论我们选择用何种语言进行程序设计时,都不可能只有一个文件(除了“hello world”),通常情况下,我们都需要在一个文件中调用另外一个文件的函数呀数据等等, ...

随机推荐

  1. Markdown快速入门

    现在博文写作次数渐渐变多,经常看到很多园友的博文样式都非常的美观,个人虽然是个土鳖,但对美也是有很强需求的,同时由于最近将要上线一个博客项目,因此也很关心如何可以更高效的编辑和发布博文.之前一直使用w ...

  2. VMware虚拟机Mac OS X无法调整扩展硬盘大小,更新xcode时出现磁盘空间不足

    使用VMware虚拟机搭建的MacOSX,安装xcode时出现磁盘空间不足的错误. 因为很多朋友在初次安装MacOSX的时候都默认选择40G的磁盘大小,结果用了没两天之后就发现磁盘不够用了. 这时,百 ...

  3. CSS背景100%平铺 浏览器缩小背景显示不全解决办法

    本文我们分享前端CSS背景100%平铺,浏览器缩小背景显示不全bug解决的两个方法,如果你也遇到了,那么就可以参考下面文章. 把浏览器的窗口缩小时,拖动滚动条时你会发现原本设定的CSS背景100%平铺 ...

  4. RAC Concept

    1. RAC的高可用性 RAC的高可用性主要包含以下几点: 1> 实现节点间的负载均衡. 2> 实现失败切换的功能. 3> 通过Service组件来控制客户端的访问路径. 4> ...

  5. Prim算法(二)之 C++详解

    本章是普里姆算法的C++实现. 目录 1. 普里姆算法介绍 2. 普里姆算法图解 3. 普里姆算法的代码说明 4. 普里姆算法的源码 转载请注明出处:http://www.cnblogs.com/sk ...

  6. [转载]UML用例图总结

    前言 用例图主要用来描述“用户.需求.系统功能单元”之间的关系.它展示一个外部用户能够观察到的系统功能模型图.用例图多用于静态建模阶段(主要是业务建模和需求建模),帮助开发团队以一种可视化的方式理解系 ...

  7. github代码管理工具的使用方法

    一.创建一个存储库 1.点击页面右上方你的用户名右边的+标志,然后点击下拉列表中的"new repository"选项,一般填写项目名称和选择public 和选择初始化有READM ...

  8. java类加载器-系统类加载器

    系统类加载器 系统类加载器可能都耳详能熟,但是为了完整点,还是先简单的说说系统的类加载器吧. public class Test { public static void main(String[] ...

  9. ssl证书生成:cer&jks文件生成摘录

    一.生成.jks文件 1.keystore的生成: 分阶段生成:     keytool -genkey -alias yushan(别名) -keypass yushan(别名密码) -keyalg ...

  10. jQuery DOM操作

    对节点的操作 查找节点 查找节点可以直接利用jQuery选择器来完成,非常便利. 插入节点 jQuery提供了8种插入节点的方法. 序号 方法 描述 实例 1 append() 向每个匹配的元素内部追 ...