一、写在开头

一直想沉下心来研究研究OpenXML编程,可是由于公司编程项目一笔接一笔,很难静下来,所以一直是采用的COM操作Excel。现在终于得闲,特将心得历程记录下来。

今天的第一个实例代码是来源于MSDN,关于如何创建一个空的工作簿文件。不过在正式开始堆砌代码前,首先你的配置好你的开发环境。

1、你得安装VS2010或以上版本,去网上下吧,我不提供链接了;

2、你得安装OpenXMLSDKV25,去网上下吧,我不提供链接了;

二、项目准备

接下来你就需要再VS中创建一个项目,编写代码了。但是你必须注意这么几件事情:

1、在项目中添加对DocumentFormat.OpenXml库的引用;

2、VS2010的默认框架是4.0,如果你未修改这个设置,需要添加WindowsBase.dll的引用;如果你选择的是3.5的就不用管了,否则你会收到类似下面所示的错误;

类型“System.IO.Packaging.Package”在未被引用的程序集中定义。必须添加对程序集“WindowsBase, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”的引用。

三、静态方法CreateSpreadsheetWorkbook

我创建的是一个WinForm的C#项目,并新添加了一个静态类OpenXMLHelper,在后续的同主题文章我会不断扩充这个OpenXMLHelper的代码,以形成常用的操作Excel的类。接下来我们将从MSDN获取的函数代码拷贝进去,注意一定要自己手动添加5-7行的using语句:

以下代码的重点是CreateSpreadsheetWorkbook方法,它接受一个路径字符串参数,(我们可以考虑改造改方法返回创建的工作簿对象,因为没有必要创建完毕后,还要再去用代码找这个新创建的工作簿):

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet; namespace OpenXMLTest
{
static class OpenXMLHelper
{
public static void CreateSpreadsheetWorkbook(string filepath)
{
// Create a spreadsheet document by supplying the filepath.
// By default, AutoSave = true, Editable = true, and Type = xlsx.
SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(filepath, SpreadsheetDocumentType.Workbook); // Add a WorkbookPart to the document.
WorkbookPart workbookpart = spreadsheetDocument.AddWorkbookPart();
workbookpart.Workbook = new Workbook(); // Add a WorksheetPart to the WorkbookPart.
WorksheetPart worksheetPart = workbookpart.AddNewPart<WorksheetPart>();
worksheetPart.Worksheet = new Worksheet(new SheetData()); // Add Sheets to the Workbook.
Sheets sheets = spreadsheetDocument.WorkbookPart.Workbook.AppendChild<Sheets>(new Sheets()); // Append a new worksheet and associate it with the workbook.
Sheet sheet = new Sheet() { Id = spreadsheetDocument.WorkbookPart.GetIdOfPart(worksheetPart), SheetId = , Name = "mySheet" };
sheets.Append(sheet); workbookpart.Workbook.Save(); // Close the document.
spreadsheetDocument.Close();
}
}
}

也可以参考一下来自于CodeProject网站的一段代码

 public static SpreadsheetDocument CreateWorkbook(string fileName) {
SpreadsheetDocument spreadSheet = null;
SharedStringTablePart sharedStringTablePart;
WorkbookStylesPart workbookStylesPart; try {
// Create the Excel workbook
spreadSheet = SpreadsheetDocument.Create(fileName, SpreadsheetDocumentType.Workbook, false); // Create the parts and the corresponding objects
// Workbook
spreadSheet.AddWorkbookPart();
spreadSheet.WorkbookPart.Workbook = new Workbook();
spreadSheet.WorkbookPart.Workbook.Save(); // Shared string table
sharedStringTablePart = spreadSheet.WorkbookPart.AddNewPart<SharedStringTablePart>();
sharedStringTablePart.SharedStringTable = new SharedStringTable();
sharedStringTablePart.SharedStringTable.Save(); // Sheets collection
spreadSheet.WorkbookPart.Workbook.Sheets = new Sheets();
spreadSheet.WorkbookPart.Workbook.Save(); // Stylesheet
workbookStylesPart = spreadSheet.WorkbookPart.AddNewPart<WorkbookStylesPart>();
workbookStylesPart.Stylesheet = new Stylesheet();
workbookStylesPart.Stylesheet.Save();
} catch (System.Exception exception) {
System.Windows.MessageBox.Show(exception.Message, "Excel OpenXML basics", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Hand);
} return spreadSheet;
}
四、调用方法

我在窗体上添加了一个按钮控件,并未改按钮添加了相应的代码,窗体的完整代码如下:

 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms; namespace OpenXMLTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
OpenXMLHelper.CreateSpreadsheetWorkbook(@"C:\Users\Administrator\Desktop\OpenXMLTest\OpenXMLTest.xlsx");
}
}
}

最新文章

  1. Fragment要点复习
  2. [置顶]PADS PCB功能使用技巧系列之NO.005- 如何正确使用Verify Design?
  3. 一次SSIS Package的调试经历
  4. iOS开发之在Xcode代码中插入类似QQ的表情
  5. spring来了-01-概述
  6. 【BZOJ】【2756】【SCOI2012】奇怪的游戏
  7. 关于HTML5标签不兼容(IE6~8)
  8. MySQL慢查询(二) - pt-query-digest详解慢查询日志
  9. c语言实现tree数据结构
  10. Windows Phone开发(5):室内装修
  11. 如何获取url访问历史记录
  12. 中国大学MOOC-陈越、何钦铭-数据结构-2015秋 01-复杂度2 Maximum Subsequence Sum (25分)
  13. CentOS7安装后配置MariaDB
  14. IDEA热部署(二)---jetty插件启动maven项目
  15. ERP新人防坑指南
  16. Docker在windows下的使用【二】
  17. 软件工程APP进度更新
  18. css3 @media 实现响应式布局
  19. AJAX传输——以XML文件传输为例
  20. 谷歌Chrome浏览器无法安装插件的解决方法

热门文章

  1. git config全局配置
  2. Sicily 1151 魔板
  3. 自定义view(一)
  4. css修炼宝典
  5. 【Scala】Scala之Object
  6. C#基础——结构体
  7. API抓屏
  8. 手把手教你webpack、react和node.js环境配置(下篇)
  9. C#中函数的功能和类型
  10. 安全体系(二)——RSA算法详解