版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C# 读取 EXCEL文件的几种经典方法例子引入(读取时excel 要打开)namespace读取 excel测试publicpartialclassForm1 :FormpublicForm1()InitializeComponent();/ 读取privatevoid simpleButton1_Click(objectsender,EventArgse)bindingSource1.DataSource =null ;OpenFileDialogfd =newOpenFileDialog();fd.Filter = 电子表 格|*.xlsx|电子表格|*.xls|所有文件 |*.*;/
2、打开对话框if(fd.ShowDialog()= DialogResult.OK)/ 得到文件路径名称this.txtPath.Text = fd.FileName;/将excel的对象放到 bindingSource1中预览DataTabledt =returndb(this.txtPath.Text).Tables0;bindingSource1.DataSource = dt;gridView1.BestFitColumns();/读取方法publicDataSetreturndb(stringpath).stringstrConn =Provider=Microsoft.Jet.OLE
3、DB.4.0;+DataSource= + path + ; + Extended Properties=Excel 8.0; ;OleDbConnectionconn =newOleDbConnection(strConn);conn.Open();stringstrExcel = ;OleDbDataAdaptermyCommand =null;DataSetds =null;strExcel =select * from sheet1$;myCommand =newOleDbDataAdapter(strExcel, strConn);ds =newDataSet();myCommand
4、.Fill(ds,table1);returnds;/ 另一种写法/FileInfo fileInfo = newFileInfo(path);/if (!fileInfo.Exists) return null;/string strConn =Provider=Microsoft.Jet.OLEDB.4.0;Data Source=+ path + ;Extended Properties=Excel8.0;HDR=NO;IMEX=1;/OleDbConnection objConn = new OleDbConnection(strConn);/DataSet dsExcel = new
5、 DataSet(); /try/ objConn.Open();/ DataTable table = objConn.GetOleDbSchemaTable(System.Data.OleDb.O leDbSchemaGuid.Tables, null);/ string tableName =.table.Rows0Table_Name.ToString();/ string strSql = select * from + tableName + ;/ OleDbDataAdapterodbcExcelDataAdapter = new OleDbDataAdapter(strSql,
6、 objConn);/odbcExcelDataAdapter.Fill(dsExcel);/ return dsExcel;/catch (Exception ex)/ throw ex;/1. 方法一:采用 OleDB读取 EXCEL文件:把 EXCEL文件当做一个数据源来进行数据的读取操作,实例如下: public DataSet ExcelToDS(string Path)string strConn = Provider=Microsoft.Jet.OLEDB.4.0; +Data Source=+ Path +;+Extended Properties=Excel 8.0;OleD
7、bConnection 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;对于 EXCEL中的表即 sheet(sheet1$)
8、如果不是固定的可以使用下面的.方法得到string strConn = Provider=Microsoft.Jet.OLEDB.4.0; +Data Source=+ Path +;+Extended Properties=Excel 8.0;OleDbConnection conn = new OleDbConnection(strConn); DataTable schemaTable =objConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables,null);string tableName=schemaTab
9、le.Rows02.ToString().Trim();另外:也可进行写入 EXCEL文件,实例如下:public void DSToExcel(string Path,DataSet oldds)/ 先得到汇总 EXCEL的DataSet 主要目的是获得 EXCEL在DataSet 中的结构string strCon = Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =+path1+;Extended Properties=Excel 8.0 ;OleDbConnection myConn = new OleDbConnection(str
10、Con) ; string strCom=select * from Sheet1$;myConn.Open ( ) ;OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom,myConn ); ystem.Data.OleDb.OleDbCommandBuilder builder=newOleDbCommandBuilder(myCommand);/QuotePrefix 和QuoteSuffix 主要是对 builder 生成 InsertComment 命令时使用。builder.QuotePrefix=;/获取 inser
11、t语句中保留字符(起始位置)builder.QuoteSuffix=;/ 获取 insert语句中保留字符(结束位置)DataSet newds=new DataSet();myCommand.Fill(newds ,Table1) ;for(int i=0;ioldds.Tables0.Rows.Count;i+)/ 在这里不能使用 ImportRow方法将一行导入到 news中,因为ImportRow将保留原来 DataRow的所有设置 (DataRowState 状态不变 ) 。在使用 ImportRow后newds内有值,但不能更新到 Excel 中因为所有导.入行的 DataRowS
12、tate!=AddedDataRow nrow=aDataSet.TablesTable1.NewRow(); for(int j=0;jnewds.Tables0.Columns.Count;j+)nrowj=oldds.Tables0.Rowsij;newds.TablesTable1.Rows.Add(nrow);myCommand.Update(newds,Table1);myConn.Close();2. 方法二:引用的 com组件: Microsoft.Office.Interop.Excel.dll 读取 EXCEL文件首先是 Excel.dll 的获取 , 将Office 安装
13、目录下的 Excel.exe 文件 Copy到DotNet 的bin 目录下 ,cmd到该目录下 , 运行TlbImp EXCEL.EXE Excel.dll 得到 Dll 文件。 再在项目中添加引用该 dll 文件 ./ 读取 EXCEL的方法 ( 用范围区域读取数据 ) private void OpenExcel(string strFileName)object missing = System.Reflection.Missing.Value; Application excel = new Application();/lauch excelapplicationif (excel
14、 = null)Response.Write(alert(Cant access excel);elseexcel.Visible = false; excel.UserControl = true;/以只读的形式打开 EXCEL文件Workbook wb = excel.Application.Workbooks.Open(strFileName, missing, true, missing, missing, missing,missing, missing, missing, true, missing, missing,.missing, missing, missing);/ 取得
15、第一个工作薄Worksheet ws = (Worksheet)wb.Worksheets.get_Item(1);/ 取得总记录行数 ( 包括标题列 )int rowsint = ws.UsedRange.Cells.Rows.Count; /得到行数/int columnsint =mySheet.UsedRange.Cells.Columns.Count;/得到列数/ 取得数据范围区域 ( 不包括标题列 )Range rng1 = ws.Cells.get_Range(B2, B + rowsint); /itemRange rng2 = ws.Cells.get_Range(K2, K
16、 + rowsint); /Customerobject, arryItem= (object,)rng1.Value2; /get ranges valueobject, arryCus = (object,)rng2.Value2;/ 将新值赋给一个数组string, arry = new stringrowsint-1, 2;for (int i = 1; i = rowsint-1; i+)/Item_Code列arryi - 1, 0 =arryItemi, 1.ToString();/Customer_Name列arryi - 1, 1 = arryCusi, 1.ToString
17、();Response.Write(arry0, 0 + / + arry0, 1 + # + arryrowsint - 2, 0 + / + arryrowsint - 2, 1);excel.Quit(); excel = null;Process procs = Process.GetProcessesByName(excel); foreach (Process pro in procs)pro.Kill();/没有更好的方法 , 只有杀掉进程GC.Collect();.3. 方法三:将 EXCEL文件转化成 CSV(逗号分隔)的文件,用文件流读取 ( 等价就是读取一个 txt 文本
18、文件 ) 。先引用命名空间 :using System.Text; 和using System.IO; FileStream fs = new FileStream(d:Customer.csv,FileMode.Open, FileAccess.Read, FileShare.None); StreamReader sr = new StreamReader(fs,System.Text.Encoding.GetEncoding(936);string str = ;string s = Console.ReadLine();while (str != null) str = sr.Read
19、Line();string xu = new String2;xu = str.Split(,);string ser = xu0;string dse = xu1;if (ser = s)Console.WriteLine(dse);break;sr.Close();另外也可以将数据库数据导入到一个txt 文件,实例如下:/txt文件名string fn = DateTime.Now.ToString(yyyyMMddHHmmss) + - + PO014 + .txt;OleDbConnection con = new OleDbConnection(conStr); con.Open()
20、;string sql = select ITEM,REQD_DATE,QTY,PUR_FLG,PO_NUM fromTSD_PO014;/OleDbCommand mycom = new OleDbCommand(select * fromTSD_PO014, mycon);/OleDbDataReader myreader = mycom.ExecuteReader(); /也可以用Reader读取数据.DataSet ds = new DataSet();OleDbDataAdapter oda = new OleDbDataAdapter(sql, con); oda.Fill(ds, PO014);DataTable dt = ds.Tables0;FileStreamfs = new FileStream(Server.MapPath(download/+
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 21459.1-2025真菌农药母药产品标准编写规范
- GB/T 46808-2025物流企业温室气体排放数据的数字化管理指南
- GB/T 33018-2025炭素企业节能技术规范
- 2026年云南省丽江地区单招职业倾向性考试题库及参考答案详解1套
- 2026年怀化师范高等专科学校单招职业适应性考试题库及完整答案详解1套
- 2026年潍坊环境工程职业学院单招职业技能考试题库及参考答案详解1套
- 2026年河北省保定市单招职业倾向性测试题库及答案详解1套
- 2026年浙江警官职业学院单招职业适应性考试题库及参考答案详解1套
- 2026年吉林科技职业技术学院单招职业适应性测试题库含答案详解
- 2026年哈尔滨幼儿师范高等专科学校单招职业技能测试题库含答案详解
- 8m深基坑土方开挖施工方案
- 2025中央广播电视总台招聘144人笔试历年题库附答案解析
- 2026年瓦工职业技能鉴定考试题库及答案
- 2025年云南省人民检察院聘用制书记员招聘(22人)笔试考试参考题库及答案解析
- 初一上册体育教案(2025-2026学年)
- 一般固废合同范本
- 胃肠外科围手术期护理要点
- 竣工资料归档与管理流程
- 购车合伙协议书模板
- 二手摩托车买卖合同范本
- 【MOOC】数据结构与算法-北京大学 中国大学慕课MOOC答案
评论
0/150
提交评论