C#操作Excel!

转载 2004年08月19日 09:12:00

 public class ImportExportToExcel
ExpandedBlockStart.gif    
{
InBlock.gif        
private string strConn ;
InBlock.gif        
InBlock.gif        
private System.Windows.Forms.OpenFileDialog openFileDlg=new System.Windows.Forms.OpenFileDialog();
InBlock.gif        
private System.Windows.Forms.SaveFileDialog saveFileDlg=new System.Windows.Forms.SaveFileDialog();      
InBlock.gif        
InBlock.gif        
public ImportExportToExcel()
ExpandedSubBlockStart.gif        
{
InBlock.gif            
//
InBlock.gif            
// TODO: 在此处添加构造函数逻辑
InBlock.gif            
//
InBlock.gif
            this.openFileDlg.DefaultExt = "xls";
InBlock.gif            
this.openFileDlg.Filter = "Excel文件 (*.xls)|*.xls";
InBlock.gif
InBlock.gif            
this.saveFileDlg.DefaultExt="xls";
InBlock.gif            
this.saveFileDlg.Filter= "Excel文件 (*.xls)|*.xls";
InBlock.gif
ExpandedSubBlockEnd.gif        }

InBlock.gif
ExpandedSubBlockStart.gif        
#region 从Excel文件导入到DataSet
InBlock.gif        
//        /// <summary>
InBlock.gif        
//        /// 从Excel导入文件
InBlock.gif        
//        /// </summary>
InBlock.gif        
//        /// <param name="strExcelFileName">Excel文件名</param>
InBlock.gif        
//        /// <returns>返回DataSet</returns>
InBlock.gif        
//        public DataSet ImportFromExcel(string strExcelFileName)
InBlock.gif        
//        {
InBlock.gif        
//            return doImport(strExcelFileName);
InBlock.gif        
//        }
ExpandedSubBlockStart.gif
        /// <summary>
InBlock.gif        
/// 从选择的Excel文件导入
InBlock.gif        
/// </summary>
ExpandedSubBlockEnd.gif        
/// <returns>DataSet</returns>

InBlock.gif        public DataSet ImportFromExcel()
ExpandedSubBlockStart.gif        
{
InBlock.gif            DataSet ds
=new DataSet();
InBlock.gif            
if (openFileDlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
InBlock.gif                ds
=doImport(openFileDlg.FileName);
InBlock.gif            
return ds;
ExpandedSubBlockEnd.gif        }

ExpandedSubBlockStart.gif        
/// <summary>
InBlock.gif        
/// 从指定的Excel文件导入
InBlock.gif        
/// </summary>
InBlock.gif        
/// <param name="strFileName">Excel文件名</param>
ExpandedSubBlockEnd.gif        
/// <returns></returns>

InBlock.gif        public DataSet ImportFromExcel(string strFileName)
ExpandedSubBlockStart.gif        
{
InBlock.gif            DataSet ds
=new DataSet();
InBlock.gif            ds
=doImport(strFileName);
InBlock.gif            
return ds;
ExpandedSubBlockEnd.gif        }

ExpandedSubBlockStart.gif        
/// <summary>
InBlock.gif        
/// 执行导入
InBlock.gif        
/// </summary>
InBlock.gif        
/// <param name="strFileName">文件名</param>
ExpandedSubBlockEnd.gif        
/// <returns>DataSet</returns>

InBlock.gif        private DataSet doImport(string strFileName)
ExpandedSubBlockStart.gif        
{
InBlock.gif            
if (strFileName==""return null;
InBlock.gif              
InBlock.gif            strConn 
= "Provider=Microsoft.Jet.OLEDB.4.0;" +
InBlock.gif                
"Data Source=" +  strFileName + ";" +
InBlock.gif                
"Extended Properties=Excel 8.0;";
InBlock.gif            OleDbDataAdapter ExcelDA 
= new OleDbDataAdapter("SELECT * FROM [Sheet1$]", strConn);
InBlock.gif
InBlock.gif            DataSet ExcelDs 
= new DataSet();
InBlock.gif            
try
ExpandedSubBlockStart.gif            
{
InBlock.gif                ExcelDA.Fill(ExcelDs, 
"ExcelInfo");
InBlock.gif                
ExpandedSubBlockEnd.gif            }

InBlock.gif            
catch(Exception err)
ExpandedSubBlockStart.gif            
{
InBlock.gif                System.Console.WriteLine( err.ToString() );
ExpandedSubBlockEnd.gif            }

InBlock.gif            
return ExcelDs;
InBlock.gif            
InBlock.gif            
InBlock.gif        
ExpandedSubBlockEnd.gif        }

ExpandedSubBlockEnd.gif        
#endregion

InBlock.gif
ExpandedSubBlockStart.gif        
#region 从DataSet到出到Excel
ExpandedSubBlockStart.gif        
/// <summary>
InBlock.gif        
/// 导出指定的Excel文件
InBlock.gif        
/// </summary>
InBlock.gif        
/// <param name="ds">要导出的DataSet</param>
ExpandedSubBlockEnd.gif        
/// <param name="strExcelFileName">要导出的Excel文件名</param>

InBlock.gif        public void ExportToExcel(DataSet ds,string strExcelFileName)
ExpandedSubBlockStart.gif        
{
InBlock.gif            
if (ds.Tables.Count==0 || strExcelFileName==""return;
InBlock.gif            doExport(ds,strExcelFileName);
InBlock.gif    
InBlock.gif
ExpandedSubBlockEnd.gif        }

ExpandedSubBlockStart.gif        
/// <summary>
InBlock.gif        
/// 导出用户选择的Excel文件
InBlock.gif        
/// </summary>
ExpandedSubBlockEnd.gif        
/// <param name="ds">DataSet</param>

InBlock.gif        public void ExportToExcel(DataSet ds)
ExpandedSubBlockStart.gif        
{
InBlock.gif            
if (saveFileDlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
InBlock.gif                doExport(ds,saveFileDlg.FileName);
InBlock.gif            
ExpandedSubBlockEnd.gif        }

ExpandedSubBlockStart.gif        
/// <summary>
InBlock.gif        
/// 执行导出
InBlock.gif        
/// </summary>
InBlock.gif        
/// <param name="ds">要导出的DataSet</param>
ExpandedSubBlockEnd.gif        
/// <param name="strExcelFileName">要导出的文件名</param>

InBlock.gif        private void doExport(DataSet ds,string strExcelFileName)
ExpandedSubBlockStart.gif        
{
InBlock.gif            
InBlock.gif            Excel.Application excel
= new Excel.Application();
InBlock.gif            
InBlock.gif            
//            Excel.Workbook obj=new Excel.WorkbookClass();
InBlock.gif            
//            obj.SaveAs("c:/zn.xls",Excel.XlFileFormat.xlExcel9795,null,null,false,false,Excel.XlSaveAsAccessMode.xlNoChange,null,null,null,null);
InBlock.gif

InBlock.gif            
int rowIndex=1;
InBlock.gif            
int colIndex=0;
InBlock.gif
InBlock.gif            excel.Application.Workbooks.Add(
true);
InBlock.gif            
InBlock.gif    
InBlock.gif            System.Data.DataTable table
=ds.Tables[0] ;
InBlock.gif            
foreach(DataColumn col in table.Columns)
ExpandedSubBlockStart.gif            
{
InBlock.gif                colIndex
++;    
InBlock.gif                excel.Cells[
1,colIndex]=col.ColumnName;                
ExpandedSubBlockEnd.gif            }

InBlock.gif
InBlock.gif            
foreach(DataRow row in table.Rows)
ExpandedSubBlockStart.gif            
{
InBlock.gif                rowIndex
++;
InBlock.gif                colIndex
=0;
InBlock.gif                
foreach(DataColumn col in table.Columns)
ExpandedSubBlockStart.gif                
{
InBlock.gif                    colIndex
++;
InBlock.gif                    excel.Cells[rowIndex,colIndex]
=row[col.ColumnName].ToString();
ExpandedSubBlockEnd.gif                }

ExpandedSubBlockEnd.gif            }

InBlock.gif            excel.Visible
=false;    
InBlock.gif            excel.Sheets[
0= "sss";
InBlock.gif            excel.ActiveWorkbook.SaveAs(strExcelFileName
+".XLS",Excel.XlFileFormat.xlExcel9795,null,null,false,false,Excel.XlSaveAsAccessMode.xlNoChange,null,null,null,null);
InBlock.gif            
InBlock.gif            
InBlock.gif            
//wkbNew.SaveAs strBookName
InBlock.gif
InBlock.gif
InBlock.gif            
//excel.Save(strExcelFileName);
InBlock.gif
            excel.Quit();
InBlock.gif            excel
=null;
InBlock.gif            
InBlock.gif            GC.Collect();
//垃圾回收
ExpandedSubBlockEnd.gif
        }

ExpandedSubBlockEnd.gif        
#endregion

InBlock.gif
ExpandedSubBlockStart.gif        
#region 从XML导入到Dataset
InBlock.gif
ExpandedSubBlockStart.gif        
/// <summary>
InBlock.gif        
/// 从选择的XML文件导入
InBlock.gif        
/// </summary>
ExpandedSubBlockEnd.gif        
/// <returns>DataSet</returns>

InBlock.gif        public DataSet ImportFromXML()
ExpandedSubBlockStart.gif        
{
InBlock.gif            DataSet ds
=new DataSet();
InBlock.gif            System.Windows.Forms.OpenFileDialog openFileDlg
=new System.Windows.Forms.OpenFileDialog();
InBlock.gif            openFileDlg.DefaultExt
="xml";
InBlock.gif            openFileDlg.Filter
= "xml文件 (*.xml)|*.xml";
InBlock.gif            
if (openFileDlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
ExpandedSubBlockStart.gif                
try{ds.ReadXml(openFileDlg.FileName,System.Data.XmlReadMode.ReadSchema);}
ExpandedSubBlockStart.gif                
catch{}
InBlock.gif            
return ds;
ExpandedSubBlockEnd.gif        }

ExpandedSubBlockStart.gif        
/// <summary>
InBlock.gif        
/// 从指定的XML文件导入
InBlock.gif        
/// </summary>
InBlock.gif        
/// <param name="strFileName">XML文件名</param>
ExpandedSubBlockEnd.gif        
/// <returns></returns>

InBlock.gif        public DataSet ImportFromXML(string strFileName)
ExpandedSubBlockStart.gif        
{
InBlock.gif            
if (strFileName=="")
InBlock.gif                
return null;
InBlock.gif            DataSet ds
=new DataSet();
ExpandedSubBlockStart.gif            
try{ds.ReadXml(strFileName,System.Data.XmlReadMode.ReadSchema);}
ExpandedSubBlockStart.gif            
catch{}
InBlock.gif            
return ds;
ExpandedSubBlockEnd.gif        }

InBlock.gif        
ExpandedSubBlockEnd.gif        
#endregion

InBlock.gif
ExpandedSubBlockStart.gif        
#region 从DataSet导出到XML
ExpandedSubBlockStart.gif        
/// <summary>
InBlock.gif        
/// 导出指定的XML文件
InBlock.gif        
/// </summary>
InBlock.gif        
/// <param name="ds">要导出的DataSet</param>
ExpandedSubBlockEnd.gif        
/// <param name="strXMLFileName">要导出的XML文件名</param>

InBlock.gif        public void ExportToXML(DataSet ds,string strXMLFileName)
ExpandedSubBlockStart.gif        
{
InBlock.gif            
if (ds.Tables.Count==0 || strXMLFileName==""return;
InBlock.gif            doExportXML(ds,strXMLFileName);
ExpandedSubBlockEnd.gif        }

ExpandedSubBlockStart.gif        
/// <summary>
InBlock.gif        
/// 导出用户选择的XML文件
InBlock.gif        
/// </summary>
ExpandedSubBlockEnd.gif        
/// <param name="ds">DataSet</param>

InBlock.gif        public void ExportToXML(DataSet ds)
ExpandedSubBlockStart.gif        
{
InBlock.gif            System.Windows.Forms.SaveFileDialog saveFileDlg
=new System.Windows.Forms.SaveFileDialog(); 
InBlock.gif            saveFileDlg.DefaultExt
="xml";
InBlock.gif            saveFileDlg.Filter
= "xml文件 (*.xml)|*.xml";
InBlock.gif            
if (saveFileDlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
InBlock.gif                doExportXML(ds,saveFileDlg.FileName);
ExpandedSubBlockEnd.gif        }

InBlock.gif
ExpandedSubBlockStart.gif        
/// <summary>
InBlock.gif        
/// 执行导出
InBlock.gif        
/// </summary>
InBlock.gif        
/// <param name="ds">要导出的DataSet</param>
ExpandedSubBlockEnd.gif        
/// <param name="strExcelFileName">要导出的XML文件名</param>

InBlock.gif        private void doExportXML(DataSet ds,string strXMLFileName)
ExpandedSubBlockStart.gif        
{
InBlock.gif            
try
ExpandedSubBlockStart.gif            
{ds.WriteXml(strXMLFileName,System.Data.XmlWriteMode.WriteSchema );}
InBlock.gif            
catch(Exception ex)
ExpandedSubBlockStart.gif            
{System.Windows.Forms.MessageBox.Show(ex.Message,"Errol") ;}    
ExpandedSubBlockEnd.gif        }

InBlock.gif
ExpandedSubBlockEnd.gif        
#endregion

InBlock.gif
InBlock.gif    
InBlock.gif    
ExpandedBlockEnd.gif    }

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

实际C#项目中经常会涉及到需要对本地Excel文件进行操作,特别是一些包含数据记录、分析、汇总功能模块的项目。常用的操作Excel文件的方法主要有三个: 1. OleDb: 这种方式是把整个Exc...
  • dcrmg
  • dcrmg
  • 2016年08月29日 20:23
  • 16173

C#操作Excel总结

0. 导入命名空间:  1 2 3 4 using Microsoft.Office.Core; using Microsoft.Office....
  • weizhiai12
  • weizhiai12
  • 2015年08月28日 20:34
  • 2801

C#学习之操作excel表格

-------------------自己的实践方案          今天开始学习C#使用Excel。          首先,要先添加引用:   若发现没有这个项,可以重新安装office,我...
  • HK_5788
  • HK_5788
  • 2015年10月18日 01:21
  • 3299

操作EXCEL代码(c#完全版)

using System;     using System.Collections;     using Excel=Microsoft.Office.Interop.Excel;    ...
  • my98800
  • my98800
  • 2016年11月08日 09:26
  • 1045

C#(源码)操作Excel大全1

C#对excel的操作
  • u011981242
  • u011981242
  • 2015年09月24日 10:35
  • 360

C#操作excel(多种方法比较)

我们在做excel资料的时候,通常有以下方法。 一.导入导出excel常用方法: 1.用查询表的方式查询并show在数据集控件上。 public static string st...
  • u012543266
  • u012543266
  • 2014年03月26日 21:30
  • 1550

C#中操作Excel(4)—— 向Excel中插入两种图表以及设置图表格式

引言         本文主要讨论下向Excel中插入图表的两种方式。在Excel中图表是有两种级别的,一种是和sheet同级别的图表,也就是说整个excel的标签页就是一个图表;还有一种就是我们最...
  • lzhui1987
  • lzhui1987
  • 2016年11月18日 11:41
  • 2832

C#中操作Excel(3)—— Excel中操作文本、图片和批注

一 引言        本文主要介绍向Excel中插入文本和图片的方法。相信大家对Excel的模型对象都有了一定的了解,和Word相似,Excel中插入文本和图片也需要依靠Range对象。但是与Wor...
  • lzhui1987
  • lzhui1987
  • 2016年11月17日 11:35
  • 1580

C#操作Excel的OLEDB方式与COM方式比较

在对Excel进行读写操作时,使用微软自身提供的解决方案,有两种,分别是OLEDB方式和调用COM组件的方式 1. OLEDB方式 用这种方法读取Excel速度相对调用COM组件来讲是非常的快的,...
  • sundacheng1989
  • sundacheng1989
  • 2013年03月14日 15:45
  • 5014

C#操作Excel文件(读取Excel,写入Excel)

C#操作Excel文件(读取Excel,写入Excel)        2009-01-09 10:25157690人阅读评论(59)收藏举报 excelc#datasetexceptions...
  • kirawoo
  • kirawoo
  • 2015年06月17日 20:30
  • 4864
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#操作Excel!
举报原因:
原因补充:

(最多只允许输入30个字)