生成excel文档即便没有安装微软Excel

下载:见http://files.cnblogs.com/happyfish78/Acey.ExcelX.Setup.zip

介绍

我们经常需要创建Excel文档,你会花很多时间,如何才能简单并且快速的生成Excel文档。

下面我为你们介绍Acey.ExcelX产品。

Acey.ExcelX是基于.NET Framework version 2.0,你能在客户电脑和服务器上生成excel文档即使没有安装微软Excel的情况下. Acey.ExcelX提供支持很多基础功能和高级功能,这些功能能很简单和方便帮开发者操纵内容。 Acey.ExcelX为开发者提供很多C#和VB.NET的Demo能更好的让开发者所理解。 Sample 下面提供一些如何简单使用Acey.ExcelX,更详细的Demo见安装包中Sample。

Example 1     如何插入值和公式到excel文档中?   
View Code
    IWorkbook workbook = ExcelxApplication.CreateWorkbook();
    //获取一个Worksheet对象集合在Workbook对象中.
    IWorksheetCollection worksheets = workbook.Worksheets;
    //Gets a Worksheet object by using zero-based worksheet index.
    IWorksheet worksheet = worksheets[0];
    //Gets a Cell object using cell name.
    ICell cell = worksheet.Cells["A1"];
    //Sets interger value to the Cell object.
    cell.Value = 12;
    //Gets a Cell object using zero-based row and column index.
    cell = worksheet.Cells[1, 0];
    //Sets formual to the Cell object.
    cell.Formula = "=SUM(3,3)";
    //Saves to excel file. 
    workbook.SaveAs(@"D:\book1.xls", FileFormat.Excel97To2003);
Exampe 2    如何能隐藏Row在Excel文档中?  

  [C#]    

View Code
 1 How to hide row in the worksheet?
 2    [C#]
 3     //Creates a Workbook object.
 4     IWorkbook workbook = ExcelxApplication.CreateWorkbook();
 5     //Gets a Worksheet object by using zero-based index.
 6     IWorksheet worksheet = workbook.Worksheets[0];
 7     //Gets a Row object collection in the Worksheet. 
 8     IRowCollection rows = worksheet.Rows;
 9     //Gets a Row object using zero-based index.
10     IRow row = rows[0];
11     //Hides the Row object.
12     row.IsHidden = true;
13     //Saves to excel file. 
14     workbook.SaveAs(@"D:\hideRow.xls", FileFormat.Excel97To2003);
15 
16     or
17      //Creates a Workbook object.
18     IWorkbook workbook = ExcelxApplication.CreateWorkbook();
19     //Gets a Worksheet object by using zero-based index.
20     IWorksheet worksheet = workbook.Worksheets[0];
21     //Hides the specified row by using zero-based index.
22     worksheet.HideRow(0);
23     //Saves to excel file. 
24     workbook.SaveAs(@"D:\merge.xls", FileFormat.Excel97To2003);
Example 3   如何为指定的范围设置样式在Excel文档中? 
View Code
 1 How to set Formatting for the specified range?
 2     //Creates a Workbook object.
 3     IWorkbook workbook = ExcelxApplication.CreateWorkbook();
 4     //Gets a Worksheet object by using zero-based index.
 5     IWorksheet worksheet = workbook.Worksheets[0];
 6     //Gets a Range object.
 7     IRange range = worksheet.Cells.CreateRange("B2:C3");
 8     //Merges the specified range.
 9     range.Merge();
10     //Gets a Cell object in the Range object.
11     ICell cell = worksheet.Cells[0, 0];
12     //Sets value to the Cell object.
13     cell.Value = "Hello World";
14     //Gets format of the Range object.
15     ICellFormat cellFormat = range.CellFormat;
16     //Sets font's name of format.
17     cellFormat.Font.Name = "Arial";
18     //Sets font's size of format.
19     cellFormat.Font.Size = 12;
20     //Sets font's bold of format.
21     cellFormat.Font.Bold = true;
22     //Sets border of format.
23     cellFormat.Borders.SetBorderStyle(BorderMembers.Outside, BorderStyle.Dotted);
24     //Sets fill pattern of format.
25     cellFormat.Pattern = Pattern.Gray75;
26     //Sets foreground color of format.
27     cellFormat.ForegroundColor = Color.Red;
28     //Sets background color of format.
29     cellFormat.BackgroundColor = Color.Green;
30       //Saves to excel file. 
31     workbook.SaveAs(@"D:\range.xls", FileFormat.Excel97To2003);
Example 4  如何应用为行使用指定的样式在Excel文档中?
View Code
 1 //Creates a Workbook object.
 2  IWorkbook workbook = ExcelxApplication.CreateWorkbook();
 3  //Gets a Worksheet object by using zero-based index.
 4  IWorksheet worksheet = workbook.Worksheets[0]; 
 5  //Gets a Row object by using zero-based index.
 6  IRow row = worksheet.Rows[0];
 7  //Gets a Style object collection in the Workbook object.
 8  IStyleCollection styles = workbook.Styles;
 9  //Adds a bulit-in style.
10  IStyle style = styles.Add(BulitInStyle.Accent1);
11  //Applies the specified style to the Row object.
12  row.ApplyStyle(style); 
13   //Saves to excel file. 
14  workbook.SaveAs(@"D:\applyStyle.xls", FileFormat.Excel97To2003);
 Example 5  如何插入图片到Excel文档中?   
View Code
 1   [C#]  
 2 
 3   //创建一个Workbook对象。
 4   IWorkbook workbook = ExcelxApplication.CreateWorkbook();
 5   //获取Worksheet对象,采用零基表索引。
 6   IWorksheet worksheet = workbook.Worksheets[0];
 7   //获取Worksheet中图片对象集合。
 8   IPictureCollection pictures = worksheet.Pictures;
 9   //插入一个指定路径的图片到Worksheet中。 
10   IPicture picture = pictures.Add(@"Images\pic.png", 0, 1);
11   //保存Excel文档到指定的位置。
12   workbook.SaveAs(@"D:\picture.xls", FileFormat.Excel97To2003);

 

性能测试

Example 1: 插入大量数据
View Code
 1 IWorkbook workbook = ExcelxApplication.CreateWorkbook();
 2  IWorksheet worksheet = workbook.Worksheets[0];
 3  ICell cell;
 4 string str = "abc";
 5 Stopwatch sw = new Stopwatch();
 6 sw.Start();
 7 for (int i = 0; i < 1000; i++)
 8 {
 9     for (int j = 0; j < 20; j++)
10     {
11         cell = worksheet.Cells[i, j];
12         cell.Value = str+i+j;
13     }
14 }  
15 workbook.SaveAs(@"D:\book1.xls", FileFormat.Excel97To2003);
16 sw.Stop();
17 Console.WriteLine("{0}s", sw.ElapsedMilliseconds / 1000d);

Output : 1.089s

生成1000 行20 列数据并保存excel文件,仅需要1.089s

Excel 2:大量使用富文本到Excel文档中,检查其性能。

View Code
 1 IWorkbook workbook = ExcelxApplication.CreateWorkbook();
 2             IWorksheet worksheet = workbook.Worksheets[0];
 3             string str = "abc";
 4             Stopwatch sw = new Stopwatch();
 5             sw.Start();
 6             for (int i = 0; i < 1000; i++)
 7             {
 8                 for (int j = 0; j < 20; j++)
 9                 {
10                     ICell cell = worksheet.Cells[i, j];
11                     cell.Value = str + i + j;
12                     ICharacters characters = cell.Characters;
13                     ICharacters subCharacters = characters.SubCharacters(1, 2);
14                     subCharacters.Font.Color = Color.Blue;
15                     subCharacters.Font.Size = 20;
16                 }
17             }
18             workbook.SaveAs(@"D:\book1.xls", FileFormat.Excel97To2003);
19             sw.Stop(); 
20             Console.WriteLine("{0}s", sw.ElapsedMilliseconds / 1000d);

Output : 2.566s

 

为什么需要Ace.Excel

开发需要无Microsoft.Excel生成Excel文件服务器或者使用的计算机上安装。开发需要简单而有效的操控内容。

 

为什么选择Ace.Excel

因为方便、快捷和稳定。

 

联系

您可以联系我们的电子邮件地址。我们很高兴听到有关组件的所有问题和意见。的电子邮件地址:happyfish78@hotmail.com的。我们会尽快回应。

 

Acey.ExcelX for .NET 1.1包含的功能如下:

1.文档功能

 

  •打开的Excel文件,从文件名。

 •以不同的格式保存Excel文件,目前支持Excel97To2003,CSV和TabDelimited文件格式。

 

工作簿功能列表
• 创建一个空白工作簿(默认情况下,一个新工作簿包含三个工作表)或者打开一个工作簿。
• 更改Excel中默认样式,包含字体等。
• 选择一个工作表。
• 复制工作簿。
• 设置部分工作簿选项。

• 添加自定义或内置Style到工作簿中。

 

工作表功能列表
• 重命名工作表。
• 添加或删除工作表。
• 隐藏或显示工作表。
• 移动或复制工作表。
• 显示或隐藏行和列。
• 冻结或取消冻结行和列。
• 清除工作表背景。
• 获取工作表中可用的区域。
• 更改工作表中网格线的颜色。
• 隐藏或显示工作表中网格线。
• 隐藏或显示工作表中滚动条。
• 隐藏或显示工作表中行头和列头。
• 插入或删除行、列。

 

单元格功能列表
• 添加数据和公式到单元格中。
• 设置富文本到单元格中。
• 设置整个单元格的样式(包括设置数字的格式)。
• 引用指定的样式到整个单元格区域。
• 复制整个单元格(包含数据和样式)。
• 只复制整个单元格的样式。

 

单元格区域
• 选择特定的区域。
• 为选择特定的区域设置样式,包括设置数字的格式、内边框和外边框等。
• 引用指定样式到特定的区域。
• 移动或复制选择特定的区域(包含数据和样式)。
• 只复制选择特定的区域的样式
• 支持从DataTable和数组导入数据到选择特定的区域。
• 导出选择特定的区域的数据到DataTable对象中。
• 清除选择特定的区域的数据或样式。
• 插入或删除选择特定的区域。

 

 行功能列表
• 显示或隐藏行。
• 设置行高。
• 设置整个行样式。
• 引用指定样式到整个行。
• 复制整行(包括数据和样式)。
• 只复制整行样式。
• 清除整行的数据或样式。
• 根据内容自动调整单元格的高度。

 

列功能列表
• 显示或隐藏列。
• 设置列宽度。
• 设置整个列样式。
• 引用指定样式到整个列。
• 复制整列(包括数据和样式)。
• 只复制整列样式。
• 清除整列的数据或样式。
• 根据内容自动调整单元格的宽度。

 

样式功能:
•设置数字的格式。
•设置对齐方式。
•设置合并单元格或取消合并。
•设置字体。
•设置填充图案和填充色。
•设置边框。

 

页面设置
• 设置页面配置,包含页面大小、打印区域等。

 

分页符设置
•在指定的单元格中插入的水平和垂直分页符。

 

应用数据有效性
使用数据有效性可以控制用户输入到单元格的数据或值的类型。例如,您可以使用数据有效性将数据输入限制在某个日期范围、使用列表限制选择或者确保只输入正整数。
• 添加输入有效性到工作表中。
• 管理数据有效性所使用的区域。

 

应用条件格式
通过为数据应用条件格式,只需快速浏览即可立即识别一系列数值中存在的差异。
•添加条件格式到工作表中。
• 管理条件格式所使用的区域。

数据管理功能:
•访问工作表中任何单元格或单元格区域。
•搜索数据在工作表中。
•设置公式到单元格中。
•应用数据有效性和条件格式。
•从DataTable或Array导入数据。
•导出数据到DataTable中。


超链接功能
•添加到工作表的超链接。
•在工作表中删除特定的超链接。

 

图形功能:
•添加图片到工作表中。

 

其他功能:
•提供运行操作,比如插入、删除、复制、合并和取消合并。

转载于:https://www.cnblogs.com/happyfish78/archive/2012/06/28/2566647.html

【前言】 工作或学习中可能需要实现基于VC读\写Excel文件的功能,本人最近也遇到了该问题。中间虽经波折,但是最终还是找到了解决问题的办法。 在此跟大家分享,希望对跟我同样迷茫过的同学们有所帮助。 1、程序功能 1)打开一个excel文件; 2)显示到CListCtrl上; 3)新建一个Excel文件。 以上均在对话框中实现。 2、平台 VC++2010 3、实现方法 常用的Excel打开方式有两种 1)通过数据库打开; 2)OLE方式打开。 由于方式1)操作繁琐,经常出现莫名的错误,这里选用方式2). 4、准备步骤 首先新建一个Dialog窗体程序,添加list control和两个按钮 1)将ExcelLib文件夹拷贝到程序目录下; 2)将Export2Excel.h,Export2Excel.cpp两个文件添加到项目; 3)包含头文件,#include "ExcelLib/Export2Excel.h" 通过以上步骤在程序中引入了可以读取Excle文件的CExport2Excel类; 5、打开excel文件 通过按钮点击打开 void CExcelTestDlg::OnBnClickedButtonOpenExcel() { //获取文件路径 CFileDialog* lpszOpenFile; CString szGetName; lpszOpenFile = new CFileDialog(TRUE,"","",OFN_FILEMUSTEXIST|OFN_HIDEREADONLY,"Excel File(*.xlsx;*.xls)|*.xls;*.xlsx",NULL); if (lpszOpenFile->DoModal()==IDOK) { szGetName = lpszOpenFile->GetPathName(); SetWindowText(szGetName); delete lpszOpenFile; } else return; //打开文件 //文件中包含多个sheet时,默认打开第一个sheet CExport2Excel Excel_example; Excel_example.OpenExcel(szGetName); //获取sheet个数 int iSheetNum = Excel_example.GetSheetsNumber(); //获取已使用表格行列数 int iRows = Excel_example.GetRowCount(); int iCols = Excel_example.GetColCount(); //获取单元格的内容 CString cs_temp = Excel_example.GetText(1,1); //AfxMessageBox(cs_temp); //List control上显示 //获取工作表列名(第一行) CStringArray m_HeadName; m_HeadName.Add(_T("ID")); for (int i=1;iGetItemCount()>0) { m_list.DeleteColumn(0); } //初始化ClistCtrl,加入列名 InitList(m_list,m_HeadName); //填入内容 //第一行是标题,所以从第2行开始 CString num; int pos; for (int row = 2;row<=iRows; row++) { pos = m_list.GetItemCount(); num.Format(_T("%d"),pos +1); m_list.InsertItem(pos,num); for (int colum=1;columDoModal()==IDOK) { szGetName = lpszOpenFile->GetPathName(); SetWindowText(szGetName); delete lpszOpenFile; } else return; //文件全名称 CString csFileName = szGetName; //需要添加的两个sheet的名称 CString csSheetName = "newSheet"; CString csSheetName2 = "newSheet2"; // 新建一个excel文件,自己写入文字 CExport2Excel Excel_example; //新建excel文件 Excel_example.CreateExcel(csFileName); //添加sheet,新加的sheet在前,也就是序号为1 Excel_example.CreateSheet(csSheetName); Excel_example.CreateSheet(csSheetName2); //操作最开始添加的sheet:(newSheet) Excel_example.SetSheet(2); //添加表头 Excel_example.WriteHeader(1,"第一列"); Excel_example.WriteHeader(2,"第二列"); //添加核心数据 Excel_example.WriteData(1,1,"数据1"); Excel_example.WriteData(1,2,"数据2"); //保存文件 Excel_example.Save(); //关闭文件 Excel_example.Close(); } 7、注意事项 1)一般单个Excel文件包含多个sheet,程序默认打开第一个; 2)指定操作sheet,使用Excel_example.SetSheet(2)函数; 3)打开文件时最左侧的sheet序号为1,新建excel时最新添加的sheet序号为1. 【后记】 本程序主要基于网络CSDN中---“Excel封装库V2.0”---完成,下载地址是:http://download.csdn.net/detail/yeah2000/3576494,在此表示感谢!同时, 1)在其基础上作了小改动,改正了几个小错误,添加了几个小接口; 2)添加了如何使用的例子,原程序是没有的; 3)详细的注释 发现不足之处,还请大家多多指教!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值