C#与Excel的交互示例

//这里加添加一个Excel对象的包装器。就是添加一个引用

using System;

using System.Drawing;

using System.Collections;

using System.ComponentModel;

using System.Windows.Forms;

namespace ExcelTest

{

/// <summary>

/// Form3 的摘要说明。

/// </summary>

public class Form3 : System.Windows.Forms.Form

{

private System.Windows.Forms.Button button1;

private System.Windows.Forms.ComboBox comboBox1;

/// <summary>

/// 必需的设计器变量。

/// </summary>

private System.ComponentModel.Container components = null;

// Excel object references.

private Excel.Application m_objExcel = null;

private Excel.Workbooks m_objBooks = null;

private Excel._Workbook m_objBook = null;

private Excel.Sheets m_objSheets = null;

private Excel._Worksheet m_objSheet = null;

private Excel.Range m_objRange = null;

private Excel.Font m_objFont = null;

private Excel.QueryTables m_objQryTables = null;

private Excel._QueryTable m_objQryTable = null;

// Frequenty-used variable for optional arguments.

private object m_objOpt = System.Reflection.Missing.Value;

// Paths used by the sample code for accessing and storing data.

private string m_strNorthwind = @"C:\Program Files\Microsoft Visual Studio\VB98\NWIND.MDB";

public Form3()

{

//

// Windows 窗体设计器支持所必需的

//

InitializeComponent();

//

// TODO: 在 InitializeComponent 调用后添加任何构造函数代码

//

}

/// <summary>

/// 清理所有正在使用的资源。

/// </summary>

protected override void Dispose( bool disposing )

{

if( disposing )

{

if(components != null)

{

components.Dispose();

}

}

base.Dispose( disposing );

}

#region Windows 窗体设计器生成的代码

/// <summary>

/// 设计器支持所需的方法 - 不要使用代码编辑器修改

/// 此方法的内容。

/// </summary>

private void InitializeComponent()

{

this.button1 = new System.Windows.Forms.Button();

this.comboBox1 = new System.Windows.Forms.ComboBox();

this.SuspendLayout();

//

// button1

//

this.button1.Location = new System.Drawing.Point(208, 136);

this.button1.Name = "button1";

this.button1.Size = new System.Drawing.Size(128, 32);

this.button1.TabIndex = 0;

this.button1.Text = "button1";

this.button1.Click += new System.EventHandler(this.button1_Click);

//

// comboBox1

//

this.comboBox1.Location = new System.Drawing.Point(112, 40);

this.comboBox1.Name = "comboBox1";

this.comboBox1.Size = new System.Drawing.Size(376, 20);

this.comboBox1.TabIndex = 1;

this.comboBox1.Text = "comboBox1";

//

// Form3

//

this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);

this.ClientSize = new System.Drawing.Size(544, 333);

this.Controls.Add(this.comboBox1);

this.Controls.Add(this.button1);

this.Name = "Form3";

this.Text = "Form3";

this.Load += new System.EventHandler(this.Form3_Load);

this.ResumeLayout(false);

}

#endregion

[STAThread]

static void Main()

{

Application.Run(new Form3());

}

private void Form3_Load(object sender, System.EventArgs e)

{

comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;

comboBox1.Items.AddRange(new object[]{

"Use Automation to Transfer Data Cell by Cell ",

"Use Automation to Transfer an Array of Data to a Range on a Worksheet ",

"Use Automation to Transfer an ADO Recordset to a Worksheet Range ",

"Use Automation to Create a QueryTable on a Worksheet",

"Use the Clipboard",

"Create a Delimited Text File that Excel Can Parse into Rows and Columns",

"Transfer Data to a Worksheet Using ADO.NET "});

comboBox1.SelectedIndex = 0;

button1.Text = "Go!";

}

private void button1_Click(object sender, System.EventArgs e)

{

switch (comboBox1.SelectedIndex)

{

case 0 : Automation_CellByCell(); break;

case 1 : Automation_UseArray(); break;

case 2 : Automation_ADORecordset(); break;

case 3 : Automation_QueryTable(); break;

case 4 : Use_Clipboard(); break;

case 5 : Create_TextFile(); break;

case 6 : Use_ADONET(); break;

}

//Clean-up

m_objFont = null;

m_objRange = null;

m_objSheet = null;

m_objSheets = null;

m_objBooks = null;

m_objBook = null;

m_objExcel = null;

GC.Collect();

}

private void Automation_CellByCell()

{

// Start a new workbook in Excel.

m_objExcel = new Excel.Application();

m_objBooks = (Excel.Workbooks)m_objExcel.Workbooks;

m_objBook = (Excel._Workbook)(m_objBooks.Add(m_objOpt));

// Add data to cells of the first worksheet in the new workbook.

m_objSheets = (Excel.Sheets)m_objBook.Worksheets;

m_objSheet = (Excel._Worksheet)(m_objSheets.get_Item(1));

m_objRange = m_objSheet.get_Range("A1", m_objOpt);

m_objRange.set_Value(m_objOpt,"Last Name");

m_objRange = m_objSheet.get_Range("B1", m_objOpt);

m_objRange.set_Value(m_objOpt,"First Name");

m_objRange = m_objSheet.get_Range("A2", m_objOpt);

m_objRange.set_Value(m_objOpt,"Doe");

m_objRange = m_objSheet.get_Range("B2", m_objOpt);

m_objRange.set_Value(m_objOpt,"John");

// Apply bold to cells A1:B1.

m_objRange = m_objSheet.get_Range("A1", "B1");

m_objFont = m_objRange.Font;

m_objFont.Bold=true;

// Save the workbook and quit Excel.

m_objBook.SaveAs(Application.StartupPath + "\\Book1.xls", m_objOpt, m_objOpt,

m_objOpt, m_objOpt, m_objOpt, Excel.XlSaveAsAccessMode.xlNoChange,

m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt);

m_objBook.Close(false, m_objOpt, m_objOpt);

m_objExcel.Quit();

}

private void Automation_UseArray()

{

// Start a new workbook in Excel.

m_objExcel = new Excel.Application();

m_objBooks = (Excel.Workbooks)m_objExcel.Workbooks;

m_objBook = (Excel._Workbook)(m_objBooks.Add(m_objOpt));

m_objSheets = (Excel.Sheets)m_objBook.Worksheets;

m_objSheet = (Excel._Worksheet)(m_objSheets.get_Item(1));

// Create an array for the headers and add it to cells A1:C1.

object[] objHeaders = {"Order ID", "Amount", "Tax"};

m_objRange = m_objSheet.get_Range("A1", "C1");

m_objRange.set_Value(m_objOpt,objHeaders);

m_objFont = m_objRange.Font;

m_objFont.Bold=true;

// Create an array with 3 columns and 100 rows and add it to

// the worksheet starting at cell A2.

object[,] objData = new Object[100,3];

Random rdm = new Random((int)DateTime.Now.Ticks);

double nOrderAmt, nTax;

for(int r=0;r<100;r++)

{

objData[r,0] = "ORD" + r.ToString("0000");

nOrderAmt = rdm.Next(1000);

objData[r,1] = nOrderAmt.ToString("c");

nTax = nOrderAmt*0.07;

objData[r,2] = nTax.ToString("c");

}

m_objRange = m_objSheet.get_Range("A2", m_objOpt);

m_objRange = m_objRange.get_Resize(100,3);

m_objRange.set_Value(m_objOpt,"objData");

// Save the workbook and quit Excel.

m_objBook.SaveAs(Application.StartupPath + "\\Book2.xls", m_objOpt, m_objOpt,

m_objOpt, m_objOpt, m_objOpt, Excel.XlSaveAsAccessMode.xlNoChange,

m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt);

m_objBook.Close(false, m_objOpt, m_objOpt);

m_objExcel.Quit();

}

private void Automation_ADORecordset()

{

// Create a Recordset from all the records in the Orders table.

ADODB.Connection objConn = new ADODB.Connection();

ADODB._Recordset objRS = null;

objConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +

m_strNorthwind + ";", "", "", 0);

objConn.CursorLocation = ADODB.CursorLocationEnum.adUseClient;

object objRecAff;

objRS = (ADODB._Recordset)objConn.Execute("Orders", out objRecAff,

(int)ADODB.CommandTypeEnum.adCmdTable);

// Start a new workbook in Excel.

m_objExcel = new Excel.Application();

m_objBooks = (Excel.Workbooks)m_objExcel.Workbooks;

m_objBook = (Excel._Workbook)(m_objBooks.Add(m_objOpt));

m_objSheets = (Excel.Sheets)m_objBook.Worksheets;

m_objSheet = (Excel._Worksheet)(m_objSheets.get_Item(1));

// Get the Fields collection from the recordset and determine

// the number of fields (or columns).

System.Collections.IEnumerator objFields = objRS.Fields.GetEnumerator();

int nFields = objRS.Fields.Count;

// Create an array for the headers and add it to the

// worksheet starting at cell A1.

object[] objHeaders = new object[nFields];

ADODB.Field objField = null;

for(int n=0;n<nFields;n++)

{

objFields.MoveNext();

objField = (ADODB.Field)objFields.Current;

objHeaders[n] = objField.Name;

}

m_objRange = m_objSheet.get_Range("A1", m_objOpt);

m_objRange = m_objRange.get_Resize(1, nFields);

m_objRange.set_Value(m_objOpt,objHeaders);

m_objFont = m_objRange.Font;

m_objFont.Bold=true;

// Transfer the recordset to the worksheet starting at cell A2.

m_objRange = m_objSheet.get_Range("A2", m_objOpt);

m_objRange.CopyFromRecordset(objRS, m_objOpt, m_objOpt);

// Save the workbook and quit Excel.

m_objBook.SaveAs(Application.StartupPath + "\\Book3.xls", m_objOpt, m_objOpt,

m_objOpt, m_objOpt, m_objOpt, Excel.XlSaveAsAccessMode.xlNoChange,

m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt);

m_objBook.Close(false, m_objOpt, m_objOpt);

m_objExcel.Quit();

//Close the recordset and connection

objRS.Close();

objConn.Close();

}

private void Automation_QueryTable()

{

// Start a new workbook in Excel.

m_objExcel = new Excel.Application();

m_objBooks = (Excel.Workbooks)m_objExcel.Workbooks;

m_objBook = (Excel._Workbook)(m_objBooks.Add(m_objOpt));

// Create a QueryTable that starts at cell A1.

m_objSheets = (Excel.Sheets)m_objBook.Worksheets;

m_objSheet = (Excel._Worksheet)(m_objSheets.get_Item(1));

m_objRange = m_objSheet.get_Range("A1", m_objOpt);

m_objQryTables = m_objSheet.QueryTables;

m_objQryTable = (Excel._QueryTable)m_objQryTables.Add(

"OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +

m_strNorthwind + ";", m_objRange, "Select * From Orders");

m_objQryTable.RefreshStyle = Excel.XlCellInsertionMode.xlInsertEntireRows;

m_objQryTable.Refresh(false);

// Save the workbook and quit Excel.

m_objBook.SaveAs(Application.StartupPath + "\\Book4.xls", m_objOpt, m_objOpt,

m_objOpt, m_objOpt, m_objOpt, Excel.XlSaveAsAccessMode.xlNoChange, m_objOpt, m_objOpt,

m_objOpt, m_objOpt, m_objOpt);

m_objBook.Close(false, m_objOpt, m_objOpt);

m_objExcel.Quit();

}

private void Use_Clipboard()

{

// Copy a string to the clipboard.

string sData = "FirstName\tLastName\tBirthdate\r\n" +

"Bill\tBrown\t2/5/85\r\n" +

"Joe\tThomas\t1/1/91";

System.Windows.Forms.Clipboard.SetDataObject(sData);

// Start a new workbook in Excel.

m_objExcel = new Excel.Application();

m_objBooks = (Excel.Workbooks)m_objExcel.Workbooks;

m_objBook = (Excel._Workbook)(m_objBooks.Add(m_objOpt));

// Paste the data starting at cell A1.

m_objSheets = (Excel.Sheets)m_objBook.Worksheets;

m_objSheet = (Excel._Worksheet)(m_objSheets.get_Item(1));

m_objRange = m_objSheet.get_Range("A1", m_objOpt);

m_objSheet.Paste(m_objRange, false);

// Save the workbook and quit Excel.

m_objBook.SaveAs(Application.StartupPath + "\\Book5.xls", m_objOpt, m_objOpt,

m_objOpt, m_objOpt, m_objOpt, Excel.XlSaveAsAccessMode.xlNoChange, m_objOpt, m_objOpt,

m_objOpt, m_objOpt, m_objOpt);

m_objBook.Close(false, m_objOpt, m_objOpt);

m_objExcel.Quit();

}

private void Create_TextFile()

{

// Connect to the data source.

System.Data.OleDb.OleDbConnection objConn = new System.Data.OleDb.OleDbConnection(

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + m_strNorthwind + ";");

objConn.Open();

// Execute a command to retrieve all records from the Employees table.

System.Data.OleDb.OleDbCommand objCmd = new System.Data.OleDb.OleDbCommand(

"Select * From Employees", objConn);

System.Data.OleDb.OleDbDataReader objReader;

objReader = objCmd.ExecuteReader();

// Create the FileStream and StreamWriter object to write

// the recordset contents to file.

System.IO.FileStream fs = new System.IO.FileStream(

Application.StartupPath + "\\Book6.txt", System.IO.FileMode.Create);

System.IO.StreamWriter sw = new System.IO.StreamWriter(

fs, System.Text.Encoding.Unicode);

// Write the field names (headers) as the first line in the text file.

sw.WriteLine(objReader.GetName(0) + "\t" + objReader.GetName(1) +

"\t" + objReader.GetName(2) + "\t" + objReader.GetName(3) +

"\t" + objReader.GetName(4) + "\t" + objReader.GetName(5));

// Write the first six columns in the recordset to a text file as

// tab-delimited.

while(objReader.Read())

{

for(int i=0;i<=5;i++)

{

if(!objReader.IsDBNull(i))

{

string s;

s = objReader.GetDataTypeName(i);

if(objReader.GetDataTypeName(i)=="DBTYPE_I4")

{

sw.Write(objReader.GetInt32(i).ToString());

}

else if(objReader.GetDataTypeName(i)=="DBTYPE_DATE")

{

sw.Write(objReader.GetDateTime(i).ToString("d"));

}

else if (objReader.GetDataTypeName(i)=="DBTYPE_WVARCHAR")

{

sw.Write(objReader.GetString(i));

}

}

if(i<5) sw.Write("\t");

}

sw.WriteLine();

}

sw.Flush(); // Write the buffered data to the FileStream.

// Close the FileStream.

fs.Close();

// Close the reader and the connection.

objReader.Close();

objConn.Close();

// ==================================================================

// Optionally, automate Excel to open the text file and save it in the

// Excel workbook format.

// Open the text file in Excel.

m_objExcel = new Excel.Application();

m_objBooks = (Excel.Workbooks)m_objExcel.Workbooks;

m_objBooks.OpenText(Application.StartupPath + "\\Book6.txt", Excel.XlPlatform.xlWindows, 1,

Excel.XlTextParsingType.xlDelimited, Excel.XlTextQualifier.xlTextQualifierDoubleQuote,

false, true, false, false, false, false, m_objOpt, m_objOpt,

m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt);

m_objBook = m_objExcel.ActiveWorkbook;

// Save the text file in the typical workbook format and quit Excel.

m_objBook.SaveAs(Application.StartupPath + "\\Book6.xls", Excel.XlFileFormat.xlWorkbookNormal,

m_objOpt, m_objOpt, m_objOpt, m_objOpt, Excel.XlSaveAsAccessMode.xlNoChange, m_objOpt, m_objOpt,

m_objOpt, m_objOpt, m_objOpt);

m_objBook.Close(false, m_objOpt, m_objOpt);

m_objExcel.Quit();

}

private void Use_ADONET()

{

// Establish a connection to the data source.

System.Data.OleDb.OleDbConnection objConn = new System.Data.OleDb.OleDbConnection(

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "\\Book7.xls;Extended Properties=Excel 8.0;");

objConn.Open();

// Add two records to the table named MyTable.

System.Data.OleDb.OleDbCommand objCmd = new System.Data.OleDb.OleDbCommand();

objCmd.Connection = objConn;

objCmd.CommandText = "Insert into MyTable (FirstName, LastName)" +

" values (Bill, Brown)";

objCmd.ExecuteNonQuery();

objCmd.CommandText = "Insert into MyTable (FirstName, LastName)" +

" values (Joe, Thomas)";

objCmd.ExecuteNonQuery();

// Close the connection.

objConn.Close();

}

// End Class

}

}

时间: 2024-10-19 20:27:59

C#与Excel的交互示例的相关文章

SharePoint 2013 Excel Services ECMAScript 示例之明日限行

原文:SharePoint 2013 Excel Services ECMAScript 示例之明日限行 前言:最近遇到一个“明日限行”的功能,北京的交通啊,这个不在今天讨论范围内,暂不吐槽,想想代码开发,还要写WebPart部署,很麻烦,而且部署服务器,需要领导审批,想绕过这个麻烦事儿,就想到客户端了,不过我这次没有用客户端对象模型,反而采用Excel Services服务,当然只是一个小尝试,效果还算可以吧. 一.效果展示,如下图 简单说明一下,你不需要显示下面Excel的时候,可以写下脚本

Android网络(3):HttpClient作客户端,Tomcat Servlet作服务器的交互示例

前面相继介绍了Android网络编程里的Socket传输图片.HttpURLConnection,今天看HttpClient. 第一部分:JavaEE版的Eclipse配置Tomcat [备注:开发后台服务器用Eclipse的JavaEE版最好的,但单就Tomcat来说(不写jsp之类的),本文下面的服务器方面操作在普通版的Eclipse也是可以的.我这里为了和ADT-bundle分开,特意重新安个JavaEE版的Eclipse.] 1.下载Eclipse的Tomcat插件:http://www

Python脚本调用C#代码数据交互示例(hello world)

原地址: http://www.djangochina.cn/forum.php?mod=viewthread&tid=247 随着项目的逐渐收尾, 对IronPython脚本也越来越熟悉,这里为IronPython脚本感兴趣但不入门的朋友写几篇使用心得,这是第一个:最简单的hello world程序.        首先,我们必须有一个IronPython脚本引擎库(IronPython.dll),我用的版本是V1.0,你可以在网上直接下到相关源码,编译后即生成IronPython.dll.1

网页前后端交互示例

对于网页开发而言,网页与服务器之间的数据交互是很频繁的,至关重要的一件事情.但是对于很多的初学者来说,这就成了一个不可逾越的难点问题,本篇博客将从一个初学者的关点讲解其中一种交互方式,此方法经过本人验证有效,并附有代码. 首先要实现网页前后台程序的交互需要安装后台框架,本人安装的框架为wamp(windows+apache+mysql+php).安装程序可以通过我在百度网盘上的分享链接下载http://pan.baidu.com/s/1cIKb8a 提取码是cnfh.至于安装过程中的配置可以参考

php中读写excel表格文件示例。

测试环境:php5.6.24.这块没啥兼容问题. 需要更多栗子,请看PHPExcel的examples.还是蛮强大的. 读取excel文件. 第一步.下载开源的PHPExcel的类库文件,官方网站是http://www.codeplex.com/PHPExcel.里面也有很多示例包. 第二步.读取的基本代码示例: <?php require_once 'Classes/PHPExcel.php'; require_once 'Classes/PHPExcel/IOFactory.php'; re

润乾集算报表使用EXCEL数据源的示例

Excel作为一种常见的文件格式广泛存在,很多报表的数据来源于Excel.集算报表可以直接使用Excel作为数据源来开发报表.这里通过一个实例说明集算报表实现过程. 报表描述 基金公司的股票信息以每月一个Excel存储,命名方式为:stock_yyyyMM.xls.先需要查询一定周期内各支股票的最高最低收盘价,以及创下最高或最低收盘价的交易日期. 报表样式如下: 实现步骤 编写脚本 首先使用集算器完成Excel文件读取和数据计算,编写脚本(fromExcel.dfx). A1通过传入的起始结束月

初识 vue —— 最简单的前后端交互示例

一.初识 vue 时的困惑 最近想学一门前端技术防身,看到博客园中写 vue 的多,那就 vue 吧.都说 vue 的官方教程写得好,所以我就从官方教程开始学习.官方教程说"Vue (读音 /vju?/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用."但是这个概念是个什么鬼?还是让人一头雾水嘛.而且我一开始也没有搞清楚 vue 的定位,只知道它是一个前端库,但是确实不知道它的优势是什么,还以为它是一个学会就能一劳永

jxl创Excel档java示例代码说明

记得下载 并 导入jxl.jar 包,免积分下载地址:http://download.csdn.net/detail/u010011052/7561041 package Test; import java.io.*; import jxl.*; import jxl.format.Colour; import jxl.write.*; public class JXLTest { private static WritableWorkbook book; private static Writ

excel导出入门示例

// 第一步,创建一个webbook,对应一个Excel文件 XSSFWorkbook wb = new XSSFWorkbook(); // 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet XSSFSheet sheet = wb.createSheet("区县工作小组名单"); // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short for (int i = 0; i < 3; i++) { XSSF