`

VS2005[C#] 操作 Excel 2003

 
阅读更多
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Microsoft.Office.Interop.Excel;
using System.Data.SqlClient;
using System.Data.OleDb;
using System.Reflection;
namespace ExcelPrj
{
/// <summary>
/// Excel 系统中的主文件Excel.exe 本身就是 COM 组件,通过在.NET 项目中引用Exel.exe 文件可以实现对Excel 的功能控制
/// 与COM 组件相互操作是通过使用"包装类"(Wrapper Class) 和"代理"(Proxy) 的机制实现的.包装类使.NET 程序可以识别COM 组件提供的接口,而代理类则是提供对 COM 接口的访问
/// </summary>
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button3_Click(object sender, EventArgs e)
{
ExportTasks(Bind(), dataGridView1);
}
//如果 Excel 安装在计算机上,侧导出表格内容到 Excel
public void ExportTasks(DataSet TasksData, DataGridView TasksGridView)
{
// 定义要使用的Excel 组件接口
// 定义Application 对象,此对象表示整个Excel 程序
Microsoft.Office.Interop.Excel.Application excelApp = null ;
// 定义Workbook对象,此对象代表工作薄
Microsoft.Office.Interop.Excel.Workbook workBook;
// 定义Worksheet 对象,此对象表示Execel 中的一张工作表
Microsoft.Office.Interop.Excel.Worksheet ws=null;
//定义Range对象,此对象代表单元格区域
Microsoft.Office.Interop.Excel.Range r;

int row = 1; int cell = 1;
try
{
//初始化 Application 对象 excelApp
excelApp = new Microsoft.Office.Interop.Excel.Application();
//在工作薄的第一个工作表上创建任务列表
workBook = excelApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);

ws =(Worksheet)workBook.Worksheets[1];

// 命名工作表的名称为 "Task Management"
ws.Name = "Task Management";

#region 创建表格的列头
// 遍历数据表中的所有列
foreach (DataGridViewColumn cs in TasksGridView.Columns)
{
// 假如并不想把主键也显示出来
if (cs.HeaderText != "编号")
{
ws.Cells[row, cell] = cs.HeaderText;
r = (Range)ws.Cells[row, cell];

ws.get_Range(r, r).HorizontalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter;

//此处用来设置列的样式
cell++;
}
}

// 创建行,把数据视图记录输出到对应的Excel 单元格
for (int i = 2; i < TasksData.Tables[0].Rows.Count; i++)
{
for (int j = 1; j < TasksData.Tables[0].Columns.Count; j++)
{

ws.Cells[i, j] = TasksData.Tables[0].Rows[i][j].ToString();
// r = (Range)ws.Cells[i,j];

Range rg = (Range)ws.get_Range(ws.Cells[i, j], ws.Cells[i, j]);
rg.EntireColumn.ColumnWidth = 20;
// rg.Columns.AutoFit();
rg.NumberFormatLocal = "@";
}

}
#endregion
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}

//显示 Excel
excelApp.Visible = true;

}

private void button5_Click(object sender, EventArgs e)
{
DataSet ds = Bind();
dataGridView1.DataSource = ds.Tables[0];
}
private DataSet Bind()
{
SqlConnection conn = new SqlConnection("Server=.;Database=testManage;Integrated Security=SSPI");
SqlDataAdapter da = new SqlDataAdapter("select FNumber,FExamNum,FName,FSex,FJobAdd,FCardID,FBirDate from stuInfo", conn);
DataSet ds = new DataSet();
da.Fill(ds);
return ds;
}
private void button2_Click(object sender, EventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Title = "请选择将导出的EXCEL文件存放路径";
sfd.FileName = System.DateTime.Now.ToShortDateString() + "-学生信息";
sfd.Filter = "Excel文档(*.xls)|*.xls";
sfd.ShowDialog();

if (sfd.FileName != "")
{

Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
if (excelApp == null)
{
MessageBox.Show("无法创建Excel对象,可能您的机器未安装Excel");
}
else
{
Microsoft.Office.Interop.Excel.Workbooks workbooks = excelApp.Workbooks;
Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet);
Microsoft.Office.Interop.Excel.Worksheet worksheet =(Worksheet) workbook.Worksheets[1];
DataSet ds=Bind();
for (int i = 1; i < ds.Tables[0].Rows.Count; i++)
{
for (int j = 1; j < ds.Tables[0].Columns.Count;j++ )
{
if (i == 1)
{
worksheet.Cells[i, j] = dataGridView1.Columns[j].HeaderText;

}
worksheet.Cells[i+1, j] = ds.Tables[0].Rows[i][j].ToString();
}
}
//保存方式一:保存WorkBook
//workbook.SaveAs(@"F:CData.xls",
// Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,
// Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange,Missing.Value,Missing.Value,Missing.Value,
// Missing.Value,Missing.Value);

//保存方式二:保存WorkSheet
// worksheet.SaveAs(@"F:CData2.xls",
// Missing.Value, Missing.Value, Missing.Value, Missing.Value,
// Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);

////保存方式三
//workbook.Saved = true;
//workbook.SaveCopyAs(sfd.FileName);

System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);
worksheet = null;
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
workbook = null;
workbooks.Close();
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbooks);
workbooks = null;
excelApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
excelApp = null;
MessageBox.Show("导出Excel完成!");
}
}


}
private void button4_Click(object sender, EventArgs e)
{
string strExcelFileName = @"F:\2007-07-16-学生信息.xls";
string strSheetName = "sheet1";

#region Aspnet 操作Excel 正确
////源的定义
//string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " + strExcelFileName + ";Extended Properties ='Excel 8.0;HDR=NO;IMEX=1'";

////Sql语句
//string strExcel = "select * from [" + strSheetName + "$]";

////定义存放的数据表
//DataSet ds = new DataSet();

////连接数据源
//OleDbConnection conn = new OleDbConnection(strConn);

//conn.Open();

////适配到数据源
//OleDbDataAdapter adapter = new OleDbDataAdapter(strExcel, conn);
//adapter.Fill(ds,"res");

//conn.Close();

//// 一般的情况下. Excel 表格的第一行是列名
//dataGridView2.DataSource = ds.Tables["res"];
#endregion

#region COM 组件读取复杂Excel
Microsoft.Office.Interop.Excel.Application excelApp = null;
Microsoft.Office.Interop.Excel.Workbook workBook;
Microsoft.Office.Interop.Excel.Worksheet ws = null;

try
{
excelApp = new Microsoft.Office.Interop.Excel.Application();
workBook = excelApp.Workbooks.Open(@"F:\Book1.xls", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
ws = (Worksheet)workBook.Worksheets[1];


//Excel 默认为 256 列..
MessageBox.Show(ws.Cells.Columns.Count.ToString());
excelApp.Quit();
}
catch (Exception ex)
{
throw ex;
}
#endregion
}
}
}

分享到:
评论

相关推荐

    C# 操作Excel写数据生成图表

    C#的,winform的,这是我自己写的一个c#操作excel的例子,其中包括数据操作,字体,格式,单元格等操作,还有一个生成柱状图的方法,所有的方法都在ExcelHelper.cs类里,点击Form1窗体里的按钮可以看到各种操作的...

    VS2019 C# 读写Excel2007

    这是一个类库,可以对Excel 2007 进行读写操作. 开发环境 Visual Studio 2019. 需要安装ODTwithODAC1120320_32bit客户端组件. 可以在此...

    C#操作Excel的几种方法

    ### C#操作Excel的几种方法 #### 概述 在.NET框架中,通过C#语言进行Excel文件的操作是一项常见的需求,比如数据导入导出、报表生成等场景。本文将详细介绍几种利用C#来操作Excel的方法,并重点分析一种基于`...

    C#对excel的操作C#对excel的操作

    C#对excel的操作C#对excel的操作C#对excel的操作C#对excel的操作C#对excel的操作C#对excel的操作C#对excel的操作C#对excel的操作C#对excel的操作C#对excel的操作

    C# 操作Excel案例

    本案例聚焦于"C#操作Excel",这涉及到如何使用C#与Microsoft Office的Excel应用程序进行交互,以实现数据读取、写入、修改等操作。在实际工作中,这种技能对于数据处理、报表生成和自动化任务至关重要。 C#操作...

    VS 2008 C#读写excel文件

    在.NET开发环境中,Visual Studio(VS)2008提供了丰富的工具和库,使得开发者能够用C#语言方便地操作Excel文件。本示例重点介绍了如何读取和写入Excel文件,这对于数据处理、报告生成或者数据分析等场景非常实用。...

    C#操作EXCEL EXCEL类库 Excel模板处理 将DataTable数据写入Excel文件 C#数据写入EXCEL

    总结一下,C#操作Excel可以选择多种途径,包括Interop库和第三方库如EPPlus。在处理大数据时,推荐使用后者,因为它更高效且不依赖于Office的本地安装。此外,通过模板处理和样式管理,可以轻松创建专业且格式化的...

    C#操作Excel

    ### C#操作Excel知识点 #### 一、C#读取Excel的方法 在C#中,可以通过多种方式来读取Excel文件。本节介绍两种方法: ##### 方法一:使用`Microsoft.Office.Interop.Excel` 此方法适用于Office版本的Excel文件...

    C#操作EXCEL类

    在C#中,操作Excel是一项常见的任务,尤其在数据分析和报表生成方面。在这个场景中,开发者面临的问题是如何根据动态的数据生成美观且...通过不断学习和实践,可以提高C#操作Excel的技能,创建更加复杂和美观的报表。

    C#操作EXCEL文件

    本文将深入探讨C#操作Excel文件的相关知识点。 首先,C#本身并不直接支持Excel操作,而是需要借助第三方库或者.NET Framework中的组件来实现。最常见的库之一是Microsoft.Office.Interop.Excel,它是.NET Framework...

    C#操作EXCEl函数

    C#操作EXCEl函数 C#操作Excel函数是指使用C#语言来控制和操作Excel电子表格的功能。通过使用Microsoft.Office.Interop.Excel命名空间,开发者可以在C#程序中使用Excel对象模型来创建、编辑和保存Excel文件。 在C#...

    C#操作ExcelCOM生成复杂图表

    在C#编程中,操作Excel通常是为了处理数据或者创建复杂的报表和图表。Excel COM(Component Object Model)接口提供了一种方式,使得C#程序能够直接与Microsoft Office应用程序交互,包括Excel。本文将深入探讨如何...

    C# Excel操作类

    在使用C#操作Excel时,需要引入Microsoft.Office.Core和Excel命名空间。这两个命名空间提供了Excel操作的基本功能。 2. 创建Excel应用程序对象 在ExcelEdit类中,myExcel变量是Excel应用程序对象,用于操作Excel。...

    C# 操作excel单元格合并,格式,冻结

    ### C# 操作Excel基础 在C#中处理Excel文档通常涉及到几个关键类:`Workbook`, `Worksheet`, 和 `Application`。这些类提供了操作Excel文档所需的大部分功能。 #### 创建Excel Application实例 ```csharp private ...

    C_Excel_c#excel_C#_c#excel_Excel.dll_c需要操作excel_

    首先,让我们深入了解一下C#操作Excel的基本概念。在C#中,有几种不同的方法可以与Excel交互。最基础的方法是使用Microsoft.Office.Interop.Excel,这是微软提供的一个COM组件,允许.NET应用程序直接与Office应用...

    C#操作Excel源代码

    标题 "C#操作Excel源代码" 提供了一个关键信息,即使用C#编程语言来处理Microsoft Excel文件。在C#中,我们可以利用.NET框架提供的Microsoft.Office.Interop.Excel命名空间,这使得我们能够通过COM组件与Excel应用...

    C#操作Excel类示例

    总的来说,C#操作Excel的代码示例可以帮助开发者在不依赖完整Office环境的情况下,高效地进行数据处理。无论是读取现有数据还是生成新的Excel报告,这些类和方法都能提供必要的功能。通过学习和应用这些示例,开发者...

    C#操作excel 打开-读取-修改-保存 winform入门操作

    在C#编程环境中,操作Excel是一项常见的任务,尤其在Windows Forms (Winform) 应用程序中。本教程将引导初学者了解如何使用C#来打开、读取、修改和保存Excel文件,这对于数据处理和报表生成至关重要。下面将详细阐述...

    vs2005 c#EXCEL导入DATASET代码

    在C#中,可以通过COM自动化来操作Excel。这通常涉及到使用`Microsoft.Office.Interop.Excel`命名空间中的类来进行操作。本代码示例展示了如何将DataGridView中的数据导出到Excel。 #### 示例代码分析 ```csharp ...

Global site tag (gtag.js) - Google Analytics