如何在没有安装微软Excel环境下操作Excel文件?
在以前接觸的項(xiàng)目中,由于很多客戶對(duì)微軟Excel的操作比較熟練,客戶經(jīng)常要求系統(tǒng)支持對(duì)Excel文件的讀寫(xiě)。用.NET傳統(tǒng)方法對(duì)Excel進(jìn)行讀寫(xiě)時(shí),往往會(huì)涉及到不同版本兼容的問(wèn)題,導(dǎo)致在本地測(cè)試一切正常,但是到客戶那經(jīng)常會(huì)出現(xiàn)各種問(wèn)題。后來(lái)發(fā)現(xiàn)一個(gè)Spire.XLS的NET庫(kù),可以很方便的對(duì)不同版本的Excel文件進(jìn)度操作,還可以生成各種常見(jiàn)的圖形。下面結(jié)合一個(gè)簡(jiǎn)單的例子,看一下效果:
1、首先要安裝Spire.XLS,可以自定百度,然后建立一個(gè)windows應(yīng)用程序WinExcelDemo,注意添加相關(guān)dll引用:
2、編寫(xiě)代碼,這里當(dāng)主界面打開(kāi)時(shí),就開(kāi)始進(jìn)行Excel的數(shù)據(jù)準(zhǔn)備和文件生產(chǎn)操作,代碼如下:
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 = "數(shù)據(jù)";
34 sheet.GridLinesVisible = false;
35
36 //創(chuàng)建圖形數(shù)據(jù)
37 CreateChartData(sheet);
38 //在工作簿中添加一個(gè)新的圖表
39 Chart chart = sheet.Charts.Add();
40
41 //設(shè)置數(shù)據(jù)的區(qū)域
42 chart.DataRange = sheet.Range["A1:C5"];
43 chart.SeriesDataFromRange = false;
44
45 //設(shè)置圖的位置
46 chart.LeftColumn = 1;
47 chart.TopRow = 6;
48 chart.RightColumn = 11;
49 chart.BottomRow = 29;
50 //圖類(lèi)型
51 chart.ChartType = ExcelChartType.Area;
52 //圖標(biāo)題
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 //顯示數(shù)據(jù)標(biāo)簽
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 //打開(kāi)生成的Excel
129 System.Diagnostics.Process.Start(fileName);
130 }
131 catch { }
132 }
133 }
134 }
3、運(yùn)行代碼,可以看到如下結(jié)果:
4、總結(jié)
上面只是該庫(kù)很小一部分功能,該庫(kù)還能對(duì)Excel進(jìn)行分組、支持VBA擴(kuò)展等功能,該庫(kù)雖然強(qiáng)大,但是不開(kāi)源,是商業(yè)軟件。不過(guò)經(jīng)過(guò)了解,Spire.XLS也提供免費(fèi)版,只不過(guò)免費(fèi)版有一個(gè)Excel文檔不能超過(guò)5個(gè)sheet的限制。對(duì)于一些小項(xiàng)目,免費(fèi)版也完全夠用可以考慮。至于較大應(yīng)用,則需要商業(yè)版。NOPI是開(kāi)源的Excel庫(kù),也可以方便的進(jìn)行Excel讀寫(xiě)操作且無(wú)需安裝office,但功能不及Spire.XLS全面。開(kāi)源和非開(kāi)源,存在即合理,各有優(yōu)勢(shì)。
總結(jié)
以上是生活随笔為你收集整理的如何在没有安装微软Excel环境下操作Excel文件?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Jenkins配置与使用
- 下一篇: DHCP服务器 出现的故障