如何在没有安装微软Excel环境下操作Excel文件?

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

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

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

  1 using System;
  2 using System.Collections.Generic;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Drawing;
  6 using System.Linq;
  7 using System.Text;
  8 using System.Threading.Tasks;
  9 using System.Windows.Forms;
 10
 11 namespace WinExcelDemo
 12 {
 13     using Spire.Xls;
 14     using Spire.Xls.Charts;
 15     public partial class Form1 : Form
 16     {
 17         public Form1()
 18         {
 19             InitializeComponent();
 20         }
 21
 22         private void Form1_Load(object sender, EventArgs e)
 23         {
 24             Run();
 25         }
 26         private void Run()
 27         {
 28             Workbook workbook = new Workbook();
 29
 30             //初始化 工作簿worksheet
 31             workbook.CreateEmptySheets(1);
 32             Worksheet sheet = workbook.Worksheets[0];
 33             sheet.Name = "数据";
 34             sheet.GridLinesVisible = false;
 35
 36             //创建图形数据
 37             CreateChartData(sheet);
 38             //在工作簿中添加一个新的图表
 39             Chart chart = sheet.Charts.Add();
 40
 41             //设置数据的区域
 42             chart.DataRange = sheet.Range["A1:C5"];
 43             chart.SeriesDataFromRange = false;
 44
 45             //设置图的位置
 46             chart.LeftColumn = 1;
 47             chart.TopRow = 6;
 48             chart.RightColumn = 11;
 49             chart.BottomRow = 29;
 50             //图类型
 51             chart.ChartType = ExcelChartType.Area;
 52             //图标题
 53             chart.ChartTitle = "Sales market by country";
 54             chart.ChartTitleArea.IsBold = true;
 55             chart.ChartTitleArea.Size = 12;
 56
 57             chart.PrimaryCategoryAxis.Title = "Country";
 58             chart.PrimaryCategoryAxis.Font.IsBold = true;
 59             chart.PrimaryCategoryAxis.TitleArea.IsBold = true;
 60
 61             chart.PrimaryValueAxis.Title = "Sales(in Dollars)";
 62             chart.PrimaryValueAxis.HasMajorGridLines = false;
 63             chart.PrimaryValueAxis.TitleArea.TextRotationAngle = 90;
 64             chart.PrimaryValueAxis.MinValue = 1000;
 65             chart.PrimaryValueAxis.TitleArea.IsBold = true;
 66
 67
 68             foreach (Spire.Xls.Charts.ChartSerie cs in chart.Series)
 69             {
 70                 //不同颜色
 71                 cs.Format.Options.IsVaryColor = true;
 72                 //显示数据标签
 73                 cs.DataPoints.DefaultDataPoint.DataLabels.HasValue = true;
 74             }
 75             //Legend位置
 76             chart.Legend.Position = LegendPositionType.Top;
 77             workbook.SaveToFile("Sample.xls");
 78             ExcelDocViewer(workbook.FileName);
 79         }
 80
 81         private void CreateChartData(Worksheet sheet)
 82         {
 83             //Country
 84             sheet.Range["A1"].Value = "Country";
 85             sheet.Range["A2"].Value = "Cuba";
 86             sheet.Range["A3"].Value = "Mexico";
 87             sheet.Range["A4"].Value = "France";
 88             sheet.Range["A5"].Value = "German";
 89
 90             //Jun
 91             sheet.Range["B1"].Value = "Jun";
 92             sheet.Range["B2"].NumberValue = 6000;
 93             sheet.Range["B3"].NumberValue = 8000;
 94             sheet.Range["B4"].NumberValue = 9000;
 95             sheet.Range["B5"].NumberValue = 8500;
 96
 97             //Jun
 98             sheet.Range["C1"].Value = "Aug";
 99             sheet.Range["C2"].NumberValue = 3000;
100             sheet.Range["C3"].NumberValue = 2000;
101             sheet.Range["C4"].NumberValue = 2300;
102             sheet.Range["C5"].NumberValue = 4200;
103
104             //Style
105             sheet.Range["A1:C1"].Style.Font.IsBold = true;
106             sheet.Range["A2:C2"].Style.KnownColor = ExcelColors.LightYellow;
107             sheet.Range["A3:C3"].Style.KnownColor = ExcelColors.LightGreen1;
108             sheet.Range["A4:C4"].Style.KnownColor = ExcelColors.LightOrange;
109             sheet.Range["A5:C5"].Style.KnownColor = ExcelColors.LightTurquoise;
110
111             //Border
112             sheet.Range["A1:C5"].Style.Borders[BordersLineType.EdgeTop].Color = Color.FromArgb(0, 0, 128);
113             sheet.Range["A1:C5"].Style.Borders[BordersLineType.EdgeTop].LineStyle = LineStyleType.Thin;
114             sheet.Range["A1:C5"].Style.Borders[BordersLineType.EdgeBottom].Color = Color.FromArgb(0, 0, 128);
115             sheet.Range["A1:C5"].Style.Borders[BordersLineType.EdgeBottom].LineStyle = LineStyleType.Thin;
116             sheet.Range["A1:C5"].Style.Borders[BordersLineType.EdgeLeft].Color = Color.FromArgb(0, 0, 128);
117             sheet.Range["A1:C5"].Style.Borders[BordersLineType.EdgeLeft].LineStyle = LineStyleType.Thin;
118             sheet.Range["A1:C5"].Style.Borders[BordersLineType.EdgeRight].Color = Color.FromArgb(0, 0, 128);
119             sheet.Range["A1:C5"].Style.Borders[BordersLineType.EdgeRight].LineStyle = LineStyleType.Thin;
120
121             sheet.Range["B2:C5"].Style.NumberFormat = "\"$\"#,##0";
122         }
123
124         private void ExcelDocViewer(string fileName)
125         {
126             try
127             {
128                 //打开生成的Excel
129                 System.Diagnostics.Process.Start(fileName);
130             }
131             catch { }
132         }
133     }
134 }

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

4、总结

上面只是该库很小一部分功能,该库还能对Excel进行分组、支持VBA扩展等功能,该库虽然强大,但是不开源,是商业软件。

时间: 2024-10-07 11:31:09

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

(转)Scrapy安装介绍 windows环境下---

一. Scrapy简介 Scrapy is a fast high-level screen scraping and web crawling framework, used to crawl websites and extract structured data from their pages. It can be used for a wide range of purposes, from data mining to monitoring and automated testing

linux环境下deb格式文件转换成rpm格式

以 alien_8.87.tar.gz 为例: 下载.安装 alien_8.87.tar.gz [[email protected] ~]# wget http://ftp.de.debian.org/debian/pool/main/a/alien/alien_8.87.tar.gz [[email protected] ~]# tar zxvf alien_8.87.tar.gz [[email protected] ~]# cd alien [[email protected] alien

unity3d 下操作excel 与打印

因项目需要,需在unity下实现写入excel.打印功能.因之前在winform里操作过excel,故顺心应手=== 说明:本次只实现了简单操作步骤,在实际项目需要中,在此基础上扩展即可. 需求: 1.将各种统计数据插入到excel表格中.文字.数字.图片.时间---- 2.打印excel表格 ==我们首先来做第一步吧. 操作excel,我一直使用的是NPOI插件,自我感觉该插件非常不错,从java移植到.NET下的.抱着一颗激动的心开始流程-- 1.将NPOI.DLL文件拷贝到unity\As

vs2010环境下生成dll文件

vs2010环境下生成dll文件 1,新建win32工程,选中DLL项目,如下图:2,分别添加头文件和cpp文件 #ifndef LIB_H#define LIB_Hextern "C" int _declspec(dllexport)add(int x,int y);    // 声明为C编译.链接方式的外部函数#endif #include "stdafx.h"int add(int x,int y){    return x+y;} 3,新建win32控制台工

WP8_(windows phone环境下)上传文件从C#到php接口

在windows phone环境下,将手机上的图片上传到服务端(php环境): 注意事项:在上传的地方,头文件中name,例如name= img,则在php服务端处理时 ,需要约定好 存取一致 php:$_FILES['img']['name'],如若两端的name不相同则服务端无法正确获取上传的文件: public class UploadSrv { #region 选择图片   /// <summary> /// 打开照相机 /// </summary> public void

UNICODE环境下读写txt文件操作

内容转载自http://blog.sina.com.cn/s/blog_5d2bad130100t0x9.html UNICODE环境下读写txt文件操作 (2011-07-26 17:40:05) 标签: 杂谈 分类: MFC程序设计 自己动手整理了一下,写了几个函数,用于UNICODE环境下对txt文本文件的操作,针对txt文本的ANSIC编码格式,进行了字符编码格式的转换.***********************************************************

Tornado安装出错(win7环境下)

照着网上说的步骤安装完tornado2.2之后,也copy了license文件,也修改了环境变量,最后运行tornado的时候,报错说license management error: the application is unable to obtain a license for the application tornado2. The error is: "Terminal Server remote client not allowed." Error Code: (-103

Visual Studio 2013环境下操作vc6/vc7/vc8等低版本平台项目【编译|生成|调试】

现代化的开发环境,微软一直在推出更新换代,我们所处的技术环境在日新月异的变化:不过在中国多数人们一边疲惫的追赶着时代的步伐,一边坚守着自己所获悉所掌握的那些紧吧吧的知本.对技术工具的掌握并非他们所想要,人人都是想借助工具作用以实现目标.所以,对于一段时间来而言,谁赶出了作品,谁就赢得了先机从此吸聚一大批人力来驱动其事业的成长.只是不过,如果只是赶出了一时间的作品,而从此只就其上迭代运作而不再从外吸纳新鲜的技术气氛,那可能解体终有一日. 从VC6到VC2008,再到2010.2013,到现在已经是

Web环境下applicationContext.xml文件配置

在web环境下(web.xml)如何配置applicationContext.xml文件 <listener>  <listener-class>   org.springframework.web.context.ContextLoaderListener  </listener-class> </listener> 或: <servlet>  <servlet-name>context</servlet-name>