如何用C#的winform程序对Excel表格进行增删修查

作者&投稿:卢心 (若有异议请与网页底部的电邮联系)
C#对Excel表格进行操作~

我这恰好有的。前段时间没事的时候做的一个的。。
Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();

Microsoft.Office.Interop.Excel._Workbook myWorkbook; //工作薄实例声明
Microsoft.Office.Interop.Excel._Worksheet myWorksheet; //工作表实例声明
excel.Application.Workbooks.Add(true); //不存在相同文件,则建立一个新的文件
myWorkbook = excel.ActiveWorkbook; //工作薄赋值为excel中的已激活工作薄
myWorksheet = (Microsoft.Office.Interop.Excel._Worksheet)myWorkbook.ActiveSheet; //工作表赋值为工作簿中已激活的工作表

//获取数据库中的行数,并将其保存到excel中
for (int i = 0; i < IDStrings.Count; i++)
{
myWorksheet.Cells[i + 2, 1] = IDStrings[i].ToString();
myWorksheet.Cells[i + 2, 2] = NameStrings[i].ToString();
myWorksheet.Cells[i + 2, 3] = RoomStrings[i].ToString();
myWorksheet.Cells[i + 2, 4] = HomeAddressStrings[i].ToString();
}
myWorksheet.Name = "sheetTest"; //给工作表取名字
//将工作簿另存为
myWorkbook.SaveAs(@"D:est5.xlsx",missing,missing,missing,missing,missing,
Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange,missing,missing,missing
, missing, missing);
myWorkbook.Close(null, null, null); //关闭工作簿
excel.Quit(); //退出excel
excel = null; //赋值为NULL
其中missing 是System.Reflection.Missing.Value;
这里面主要是saveas的方法的。。

上msdn,你这个有两个问题。第一,你想用什么操作Excel,com组件还是第三方组件?根本不可能有这样的函数,或者说连接口都不提供给你,你要自己写函数。

using System.Data.OleDb;
....
void zenshancha(string gongneng)
{
    OleDbConnection cnn=new OleDbConnection();
    cnn.ConnectionString= "Microsoft.Jet.OLEDB.4.0;Data Source=Excel 路径;Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";
    try
    {
       cnn.Open();
       DataSet ds=new DataSet();
       string sql;
       switch(gongneng)
         {
          case "增加":
            sql="Insert Into [表名$](字段名,字段名...)values('"+变量值+"',...)";
            break;
          case "删除":
            sql="Delete * from [表名$] where 条件";
            break;
          case "查询":
            sql="Select * from [表名$]";
            break;
          default:
            MessageBox.Show("执行命令不包含在内!");
            break;
          }
          OleDbDataAdapter oda=new OleDbAdapter(sql,cnn);
          oda.Fill(ds);
          dataGridView.DataSource=ds.Tables[0];
     }
     private void form_load()
     {
        //初始化一个comboBox,让他的下拉列表为操作名称;
     }
     private void button1_click(....)
     {
        zengshancha(comboBox.Text.Trim());   //执行操作过程
     }


这是过去曾参考应用过的方法摘一段给你应急:

一、首先处理好数据库连接字串

Excel2000-2003: string connStr = "Microsoft.Jet.Oledb.4.0;Data Source='c:\test.xls';Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";";

Excel2007: string connStr = "Microsoft.Ace.OleDb.12.0;Data Source='c:\test.xlsx';Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=1\";";

其中:

HDR ( Header Row )设置:

若指定值为Yes,代表 Excel 档中的工作表第一行是栏位名称

若指定值为 No,代表 Excel 档中的工作表第一行就是资料了,没有栏位名称

IMEX ( IMport EXport mode )设置

当 IMEX=0 时为"汇出模式",这个模式开启的 Excel 档案只能用来做"写入"用途。

当 IMEX=1 时为"汇入模式",这个模式开启的 Excel 档案只能用来做"读取"用途。

当 IMEX=2 时为"连结模式",这个模式开启的 Excel 档案可同时支援"读取"与"写入"用途。

二、进行表格数据的查询、插入和更新:

(假设Excel文件text.xls中存在Excel表单tree,有2列分别为id,name)

1、查询

String sql = "select id, name from [tree$]";



String sql = "select id, name from `tree$`;

2、插入

String sql = "insert into [tree$] (id,name) values(1,'testname');

3、更新

String sql = "update [tree$] set name='name2' where id=1;

4、数据的删除

在OleDB的连接方式下,不可以使用delete from 语句来删除某表中的某一条记录。确切的说,在此模式下,将无法删除表中的记录。即使用update语句将所有的字段写成null,打开excel文件后依然会发现保留了该空行,而且在使用oleDB连接进行查询时,依然会查询到这条空数据。

可以参考http://wenku.baidu.com/view/4a5d2e67783e0912a2162a72.html
下面这个方法也供参考,excel就是个数据库
/// <summary>
/// 读取Excel文档
/// </summary>
/// <param name="Path">文件名称</param>
/// <returns>返回一个数据集</returns>
public DataSet ExcelToDS(string Path)
{
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source="+ Path +";"+"Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
string strExcel = "";
OleDbDataAdapter myCommand = null;
DataSet ds = null;
strExcel="select * from [sheet1$]";
myCommand = new OleDbDataAdapter(strExcel, strConn);
ds = new DataSet();
myCommand.Fill(ds,"table1");
return ds;
}

/// <summary>
/// 写入Excel文档
/// </summary>
/// <param name="Path">文件名称</param>
public bool SaveFP2toExcel(string Path)
{
try
{
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source="+ Path +";"+"Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
System.Data.OleDb.OleDbCommand cmd=new OleDbCommand ();
cmd.Connection =conn;
//cmd.CommandText ="UPDATE [sheet1$] SET 姓名='2005-01-01' WHERE 工号='日期'";
//cmd.ExecuteNonQuery ();
for(int i=0;i<fp2.Sheets [0].RowCount -1;i++)
{
if(fp2.Sheets [0].Cells[i,0].Text!="")
{
cmd.CommandText ="INSERT INTO [sheet1$] (工号,姓名,部门,职务,日期,时间) VALUES('"+fp2.Sheets [0].Cells[i,0].Text+ "','"+
fp2.Sheets [0].Cells[i,1].Text+"','"+fp2.Sheets [0].Cells[i,2].Text+"','"+fp2.Sheets [0].Cells[i,3].Text+
"','"+fp2.Sheets [0].Cells[i,4].Text+"','"+fp2.Sheets [0].Cells[i,5].Text+"')";
cmd.ExecuteNonQuery ();
}
}
conn.Close ();
return true;
}
catch(System.Data.OleDb.OleDbException ex)
{
System.Diagnostics.Debug.WriteLine ("写入Excel发生错误:"+ex.Message );
}
return false;
}

大家实现的方法,可能各有千秋,可以取长补短,找去适合自己的方法

我的办法是先excel读入dataset,然后进行修改、显示。完成后导出excel


如何用c语言在windows平台上开发php extension
02.vi int_ext.c 03.#PHP_FE(confirm_int_ext_compiled, NULL) 面添加 PHP_FE(int_ext, NULL)添加:04.1. zend_function_entry int_ext_functions[] = { 05.2. PHP_FE(confirm_int_ext_compiled, NULL) \/* For testing, remove later. *\/ 06.3. PHP_FE(int_ext, NULL)...

如何用c语言编一个成绩查询系统?
如果你是要做一个非常专业的商业软件,这个其实不太适合用C语言来编写。你可以考虑其他高级语言如java,c#,etc.如果你仅仅是想在功能上实现成绩查询,而且数据量不是那种特别大,比如千万,上亿级别的,用C语言以二进制文件读写的方式完全可以轻松实现。下面说说大概的思路:1.你可以定义一个结构体来描述...

中职数学 求解释 排列与组合的 意思与 区别 题何时用P 何时用 C...
P就是排列 是有顺序的 例如从4人中选1个班长和1个团支书 拿A,B这两个人看 职位调换是结果不同的 C就是组合 是无顺序的 例如4人选2个作为代表 那么AB的职位一样 调换无意义

计算机C语言有什么用啊??
用处:C语言是一种计算机程序设计语言。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。特征:1、C语言是高级语言。它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算...

c语言有什么用
印度的程序设计课程采用“事件驱动式”教学,我认为在中国的c语言程序设计教学中应该采用“项目驱动式”教学。“项目驱动式”教学就是以项目为目的,以c语言理论教学为过程,最终能用c语言设计项目,实现项目的要求。“项目驱动式”教学的关键在于培养学生“如何做什么”和“可以干什么”。一个项目就是一个工程,在“...

如何用C语言实现定时何延时功能
C语言中的两个函数 一个是 <windows.h> 库下的 Sleep()效果为当前进程等待 Sleep(x) 毫秒 可以实现延时功能 另一个是 下的 time()效果为返回当前时间,配合循环可以实现定时功能 以下是一个例子:\/\/刚写完#include<stdio.h>#include<windows.h>#includeint main(){printf("定时程序2秒后开启...

如何用C\/C++开发一个web应用(Windows)?
如果想让界面效果更炫,那就用WPF让Winform在界面美化上更上一层楼。 但它会慢一点。如果对性能要求高或者操作系统底层使用C++或者直接C C++或者MFC,性能很好,但是开发难度比c#高。 如果直接用C,就比较难了。 优点是运行速度快,兼容性好。 除了汇编 C 和 C++ 应该是最快的。QT Qt是一个基于...

怎么用C语言的scanf实现一次输入若干个数据
根据需要一般选择如下3种方法:1,已知数量,且个数较少:scanf("%d%d%d",&a&b&c);2,已知数量,但数量较多:for(int i=0;i<n;i++)scanf("%d",&a[i]);3,不知道数量 int i=0;while(scanf("%d",&a[i])){ i++;}

补充维生素C的好处
1、防治坏血病 维生素C又称为抗坏血酸,当体内维C的含量一直处于充足的状态下,可以有效的防止患上坏血病。2、维生素C的美白作用 从医学的角度来讲,维生素C是一种抗氧化剂。当我们经常补充身体内的维生素C,它可以帮助把体内的黑色素分解排出去,让肌肤保持白嫩的状态,所以要经常吃一些水果蔬菜类,以...

C语言是什么? 要怎么编 ? 用什么编?
C语言是一种计算机程序设计语言。它既有高级语言的特点,又具有汇编语言的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛。C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它解释型高级语言,有一些大...

涟水县13430092129: C# Winform 如何 打开一个 新 进程 -
毅楠芪桑: 本文介绍用C#在Winform中打开一个新进程,完成上述功能.using System.Diagnostics;引用System.Diagnostics命名空间,该命名空间提供与系统进程、事件日志、性能计数器的交互.其中与进程相关的两个基本的类是System.Diagnostics....

涟水县13430092129: 使用C#做WinForm程序,获取按键Enter -
毅楠芪桑: 一个文本框 textBox1 .在它的KeyUp事件里写:private void textBox1_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e){if(e.KeyValue==13){this.textBox1.Text="enter";}}

涟水县13430092129: 如何用C#的winform程序对Excel表格进行增删修查 -
毅楠芪桑: 这是过去曾参考应用过的方法摘一段给你应急:一、首先处理好数据库连接字串Excel2000-2003: string connStr = "Microsoft.Jet.Oledb.4.0;Data Source='c:\test.xls';Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";";Excel2007: string ...

涟水县13430092129: 用C#winform程序开启windows服务 怎么做 -
毅楠芪桑: 用C#创建Windows服务的步骤:1.创建Windows Service项目 从Visual C# 工程中选取 Windows 服务(Windows Service)选项,给工程一个新文件名,然后点击 确定.2.向服务中函数功能实现 OnStart函数在启动服务时执行,OnStop函数在停止服务时执行.在这里,当启动和停止服务时,向一个文本文件中写入一些文字信息,代码如下:using System; using System.Collections.Generic;

涟水县13430092129: winform c#怎么调用方法 -
毅楠芪桑: Form1 调用 Form2的代码,可以利用 委托进行实现,写了一个例子参考一下//主窗体 public partial class MainForm : Form { private Form1 form1 = null; private Form2 form2 = null; public MainForm() { InitializeComponent(); form1 = new Form1(); ...

涟水县13430092129: 求 C# Winform 使用正则表达式的方法 -
毅楠芪桑: string pattern = @"^\d{2}$";// 定义正则表达式 ," "里面的是表达式 Match m = Regex.Match(textBox1.Text, pattern);// 匹配正则表达式 if (m.Success){MessageBox.Show("y");}else{MessageBox.Show("n");}

涟水县13430092129: 用C#在winform中如何实现这个效果. -
毅楠芪桑: //多个linkLabel同时指向下面两个事件方法 private void linkLabel1_MouseHover(object sender, EventArgs e) { LinkLabel linkLabel = sender as LinkLabel ; this.Text = linkLabel.Text ; } private void linkLabel1_MouseLeave(object sender, EventArgs e) { this.Text ="就绪!"; }

涟水县13430092129: c#winform 扩展怎么使用 -
毅楠芪桑: 为了在应用程序中使用组件,必须首先添加对组件的引用. Visual Studio 在“添加引用”对话框中提供了五个选项: “.NET”:列出可供引用的所有 .NET Framework 组件. “COM”:列出可供引用的所有 COM 组件.

涟水县13430092129: 如何将C#Winform程序和sql数据库在没有安装vs和sql server的电脑上使用. -
毅楠芪桑: 1、WinForm的程序可以创建一个安装包进行安装或者直接拷贝相关文件到目标计算机都是可以的;2、目标计算机需要安装你编程时使用的对应的.Net Framework版本;3、编写时用的Win7,安装到WinXP的电脑上使用没有什么大的不同,只是界面显示上有略有一些小差异;4、数据库方面,目标计算机需要安装Sql Server,如果确实不想安装,只能考虑将数据库换成类似SQLite、Access这样无需安装的数据库;基本就是这样,希望对你有帮助,如有疑问请追问或是Hi

涟水县13430092129: 怎么样写C# Winform代码能实现点击一个按钮时候运行另一台电脑上的 XXX.exe程序?? -
毅楠芪桑: using System.Diagnostics; System.Diagnostics.Process p=new System.Diagnostics.Process(); p.Start("绝对路径+文件名.exe"); 如果是另外一台电脑的话可以先做一个盘符映射

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网