C#操作Excel文件

.Net平台上对Excel进行操作主要有两种方式。第一种,把Excel文件看成一个数据库,通过OleDb的方式进行读取与操作;第二种,调用Excel的COM组件。两种方式各有特点。

注意一些简单的问题1.excel文件只能存储65535行数据,如果你的数据大于65535行,那么就需要将excel分割存放了。2.关于乱码,这主要是字符设置问题。



一、OleDb方式

  • 读取Excel文件
 1 //加载Excel
 2 public static DataSet LoadDataFromExcel(string filePath)
 3 {
 4     try
 5     {
 6         string strConn;
 7         strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties=‘Excel 8.0;HDR=False;IMEX=1‘";
 8         OleDbConnection OleConn = new OleDbConnection(strConn);
 9         OleConn.Open();
10         String sql = "SELECT * FROM  [Sheet1$]";//可是更改Sheet名称,比如sheet2,等等
11
12         OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn);
13         DataSet OleDsExcle = new DataSet();
14         OleDaExcel.Fill(OleDsExcle, "Sheet1");
15         OleConn.Close();
16         return OleDsExcle;
17     }
18     catch (Exception err)
19     {
20         MessageBox.Show("数据绑定Excel失败!失败原因:" + err.Message, "提示信息",
21             MessageBoxButtons.OK, MessageBoxIcon.Information);
22         return null;
23     }
24 }  

访问.xls的文件使用的是“Microsoft.Jet.OLEDB.4.0”,访问.xlsx的文件使用的是“Microsoft.Ace.OleDb.12.0”

  • 写入excel文件
 1 /// <summary>
 2 /// 写入Excel文档
 3 /// </summary>
 4 public bool SaveFP2toExcel(string filePathath)
 5 {
 6     try
 7     {
 8         string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ filePathath +";Extended Properties=Excel 8.0;";
 9         OleDbConnection conn = new OleDbConnection(strConn);
10         conn.Open();
11         System.Data.OleDb.OleDbCommand cmd=new OleDbCommand ();
12         cmd.Connection =conn;
13
14         for(int i=0;i<fp2.Sheets [0].RowCount -1;i++)
15         {
16             if(fp2.Sheets [0].Cells[i,0].Text!="")
17             {
18                 cmd.CommandText ="INSERT INTO [sheet1$] (工号,姓名,部门,职务,日期,时间) VALUES(‘"+fp2.Sheets [0].Cells[i,0].Text+ "‘,‘"+
19                 fp2.Sheets [0].Cells[i,1].Text+"‘,‘"+fp2.Sheets [0].Cells[i,2].Text+"‘,‘"+fp2.Sheets [0].Cells[i,3].Text+
20                 "‘,‘"+fp2.Sheets [0].Cells[i,4].Text+"‘,‘"+fp2.Sheets [0].Cells[i,5].Text+"‘)";
21                 cmd.ExecuteNonQuery ();
22             }
23         }
24
25         conn.Close ();
26         return true;
27     }
28     catch(System.Data.OleDb.OleDbException ex)
29     {
30         Console.WriteLine ("写入Excel发生错误:"+ex.Message );
31         return false;
32     }
33 }


二、Excel COM组件

一个.NET组件事实上是一个.NET下的DLL,它包含的不仅是运行程序本身,更重要的是包含这个DLL的描述信息(Meta Data,即元数据),而一个COM组件是用其类库(TLB)储存其描述信息。这些COM组件都是非受管代码,要在Visual C#中使用这些非受管代码的COM组件,就必须把他们转换成受管代码的.NET组件。所以在用Visual C#调用Excel表格之前,必须完成从COM组件的非受管代码到受管代码的类库的转换。

添加COM组件

Create an Automation Client for Microsoft Excel

    1. Start Microsoft Visual Studio .NET.
    2. On the File menu, click New, and then click Project. Select Windows Application from the Visual C# Project types. Form1 is created by default.
    3. Add a reference to the Microsoft Excel Object Library. To do this, follow these steps:
      1. On the Project menu, click Add Reference.
      2. On the COM tab, locate Microsoft Excel Object Library, and click Select.
      3. Click OK in the Add References dialog box to accept your selections. If you are prompted to generate wrappers for the libraries that you selected, click Yes.
      4. using Excel = Microsoft.Office.Interop.Excel;
  • 读取Excel文件
 1 private void button1_Click(object sender, EventArgs e)
 2 {
 3     Excel.Application xlApp ;
 4     Excel.Workbook xlWorkBook ;
 5     Excel.Worksheet xlWorkSheet ;
 6     Excel.Range range ;
 7
 8     string str;
 9     int rCnt = 0;
10     int cCnt = 0;
11
12     xlApp = new Excel.Application();
13     xlWorkBook = xlApp.Workbooks.Open("csharp.net-informations.xls");
14     xlWorkSheet = xlWorkBook.Sheets["Sheet1"];
15
16     range = xlWorkSheet.UsedRange;
17
18     for (rCnt = 1; rCnt <= range.Rows.Count; rCnt++)
19     {
20         for (cCnt = 1; cCnt <= range.Columns.Count; cCnt++)
21         {
22             str = (string)(range.Cells[rCnt, cCnt] as Excel.Range).Value2 ;
23             MessageBox.Show(str);
24         }
25     }
26
27     xlWorkBook.Close(true, null, null);
28     xlApp.Quit();
29 }
  • 写入Excel文件
 1 private void button1_Click(object sender, EventArgs e)
 2 {
 3     Excel.Application xlApp ;
 4     Excel.Workbook xlWorkBook ;
 5     Excel.Worksheet xlWorkSheet ;
 6     object misValue = System.Reflection.Missing.Value;
 7
 8     xlApp = new Excel.Application();
 9     xlWorkBook = xlApp.Workbooks.Add(misValue);
10     xlWorkSheet = xlWorkBook.Sheets["Sheet1"];
11
12     //add some text
13     xlWorkSheet.Cells[1, 1] = "http://csharp.net-informations.com";
14     xlWorkSheet.Cells[2, 1] = "Adding picture in Excel File";
15
16     xlWorkBook.SaveAs("csharp.net-informations.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
17     xlWorkBook.Close(true, misValue, misValue);
18     xlApp.Quit();
19
20     MessageBox.Show ("File created !");
21 }

主要参考:http://csharp.net-informations.com/excel/files/download/csharp-open-excel_download.htm



三、第三方插件-NPOI

摘要: NPOI,顾名思义,就是POI的.NET版本。那POI又是什么呢?POI是一套用Java写成的库,能够帮助开发者在没有安装微软Office的情况下读写Office 97-2003的文件,支持的文件格式包括xls, doc, ppt等。在本文发布时,NPOI的最新版本是2.2.1。

NPOI网址  http://npoi.codeplex.com/

时间: 2024-10-12 22:04:53

C#操作Excel文件的相关文章

java使用POI操作excel文件,实现批量导出,和导入

一.POI的定义 JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI .jxl 只能操作Excel 95, 97, 2000也即以.xls为后缀的excel.而poi可以操作Excel 95及以后的版本,即可操作后缀为 .xls 和 .xlsx两种格式的excel. POI全称 Poor Obfuscation Implementation,直译为"可怜的模糊实现",利用POI接口可以通过JAVA操作Microsoft office 套件工具的读写功能.官网:htt

(5) 如何用Apache POI操作Excel文件-----发现Apache的POI的Bug后,如何给Apache的POI报Bug?

在我上篇文章中,(4) 如何用Apache POI操作Excel文件-----发现了POI-3.12一个回归,通过测试POI-3.12的版本,我发现了一个bug,那么发现bug后,该如何处理.我们有2种处理方式,首先我们到Apache POI的bug库里面搜索,看别人有没有创建类似的bug,如果有创建的,这个是最好的结果,我们只需要关注这个bug什么时候被修复.如果没有搜索不到,这个时候我们就需要给Apache POI报bug了.那么,如何给Apache报Bug? 第一步: 打开https://

Java生成和操作Excel文件

JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该API非Windows操作系统也可以通过纯Java应用来处理Excel数据表.因为它是使用Java编写的,所以我们在Web应用中可以通过JSP.Servlet来调用API实现对Excel数据表的访问. 下载: 官方网站 http://www.andykhan.com/jexcelapi/ 下载最新版本(本人下的是jexcelapi_2_6

java 操作excel 文件

JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该API非Windows操作系统也可以通过纯Java应用来处理Excel数据表.因为它是使用Java编写的,所以我们在Web应用中可以通过JSP.Servlet来调用API实现对Excel数据表的访问. 下载: 官方网站 http://www.andykhan.com/jexcelapi/ 下载最新版本(本人下的是jexcelapi_2_6

(转载)Java生成和操作Excel文件

JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该API非Windows操作系统也可以通过纯Java应用来处理Excel数据表.因为它是使用Java编写的,所以我们在Web应用中可以通过JSP.Servlet来调用API实现对Excel数据表的访问. 下载: 官方网站 http://www.andykhan.com/jexcelapi/ 下载最新版本(本人下的是jexcelapi_2_6

Java生成和操作Excel文件 - 残星 - 博客园 (2)

body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI",Tahoma,Helvetica,Sans-Serif,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5;

Java生成和操作Excel文件 - 残星 - 博客园

body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI",Tahoma,Helvetica,Sans-Serif,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5;

VB操作EXCEL文件大全

Private Sub writeToExcel(strTmp1() As String, colTmp1 As Collection) ' '    Dim tmp1 Dim i1 As Integer, intCol As Integer, intRow As Integer Dim xlApp As New Excel.Application Dim xlBook As New Excel.Workbook Dim xlSheet As New Excel.Worksheet Dim st

C#操作Excel文件(转)

摘要:本文介绍了Excel对象.C#中的受管代码和非受管代码,并介绍了COM组件在.net环境中的使用. 关键词:受管代码:非受管代码:Excel对象:动态连接库 引言 Excel是微软公司办公自动化套件中的一个软件,他主要是用来处理电子表格. Excel以其功能强大,界面友好等受到了许多用户的欢迎.在设计应用系统时,对于不同的用户,他们对于打印的需求是不一样的,如果要使得程序中的打印功 能适用于每一个用户,可以想象程序设计是十分复杂的.由于Excel表格的功能强大,又由于几乎每一台机器都安装了

C#项目中操作Excel文件——使用NPOI库

转载自:http://blog.csdn.net/dcrmg/article/details/52356236# 感谢-牧野- 实际C#项目中经常会涉及到需要对本地Excel文件进行操作,特别是一些包含数据记录.分析.汇总功能模块的项目.常用的操作Excel文件的方法主要有三个: 1. OleDb: 这种方式是把整个Excel文件当做一个数据源来进行数据的读取操作. 优点:实现方式简单,读取速度快: 缺点:读取Excel数据的过程不太灵活,对内存的占用比较高,当数据量变的很大时,容易由于内存空间