推荐文章

Winform 全屏显示

Winform 全屏显示

Winform程序无边框、置顶、全屏显示
WPF之Image控件

WPF之Image控件

Image控件加载图片包括加载动态图片,加载静态图片两种方式。加载动态图片通过生成一个BitmapImage,创建该对象后,赋给Image的Source即可。加载的形式:BitmapImage myBitmapImage =new BitmapImage();myBitmapImage.BeginInit();取得数据库存储的图片字段,MSSQL的Image类型Byte[] mybyte = Re
wpf list<T>与ObservableCollection<T>的区别

wpf list<T>与ObservableCollection<T>的区别

List《T》与ObservableCollection《T》的用法基本上是一样的。区别:list《T》:当T继承于INotifyPropertyChanged时,如果list《T》中的属性发生改变,则通知UI属性值已发生改变。但当list《T》添加一项时,list《T》就无法通知前端UI了(此时,ObservableCollection《T》闪亮登场)。ObservableCollection《
WPF调用线程复制文件并显示进度条

WPF调用线程复制文件并显示进度条

在WPF中复制文件时,如何调用线程,显示进度条。《Window x:Class="WpfThreadTest.MainWindow"xmlns="http:schemas.microsoft.comwinfx2006xamlpresentation"xmlns:x="http:schemas.microsoft.comwinfx2006xaml"Title="MainWindow" Closed=
WPF中对XML的读写

WPF中对XML的读写

已知有一个XML文件(bookste.xml)如下:《?xmlversion="1.0" encoding="gb2312"?》《bookste》《bookgenre="fantasy" ISBN="236314"》《title》OberonsLegacy《title》《auth》Cets,Eva《auth》《price》5.95《price》《book》《bookste》 1、往《bookste

WPF导入Excel

日期:2018-08-17 点击:1815 来源:PB2.CN

引用.net 4.0的组件Microsoft.Office.Interop.Excel;


//获取表格中的数据
public System.Data.DataTable LoadExcel(string pPath)
{
    string connString = "Driver={Driver do Microsoft Excel(*.xls)};DriverId=790;SafeTransactions=0;ReadOnly=1;MaxScanRows=16;Threads=3;MaxBufferSize=2024;UserCommitSync=Yes;FIL=excel 8.0;PageTimeout=5;";  //连接字符串  
    //简单解释下这个连续字符串,Driver={Driver do Microsoft Excel(*.xls)} 这种连接写法不需要创建一个数据源DSN,DRIVERID表示驱动ID,Excel2003后都使用790,
    //FIL表示Excel文件类型,Excel2007用excel 8.0,MaxBufferSize表示缓存大小, 如果你的文件是2010版本的,也许会报错,所以要找到合适版本的参数设置。
    connString += "DBQ=" + pPath; //DBQ表示读取Excel的文件名(全路径)
    OdbcConnection conn = new OdbcConnection(connString);
    OdbcCommand cmd = new OdbcCommand();
    cmd.Connection = conn;
    //获取Excel中第一个Sheet名称,作为查询时的表名
    string sheetName = this.GetExcelSheetName(pPath);
    string sql = "select * from [" + sheetName.Replace('.', '#') + "$]";
    cmd.CommandText = sql;
    OdbcDataAdapter da = new OdbcDataAdapter(cmd);
    DataSet ds = new DataSet();
    try
    {
         da.Fill(ds);
         return ds.Tables[0];    //返回Excel数据中的内容,保存在DataTable中
    }
    catch (Exception x)
    {
         ds = null;
         throw new Exception("从Excel文件中获取数据时发生错误!可能是Excel版本问题,可以考虑降低版本或者修改连接字符串值");
    }
    finally
    {
         cmd.Dispose();
         cmd = null;
         da.Dispose();
         da = null;
         if (conn.State == ConnectionState.Open)
         {
             conn.Close();
         }
         conn = null;
    }
}
 
// 获取工作表名称
private string GetExcelSheetName(string pPath)
{
    //打开一个Excel应用
    Microsoft.Office.Interop.Excel.Application excelApp;
    Workbook excelWB;//创建工作簿(WorkBook:即Excel文件主体本身)
    Workbooks excelWBs;
    Worksheet excelWS;//创建工作表(即Excel里的子表sheet)
    Sheets excelSts;
    excelApp = new Microsoft.Office.Interop.Excel.Application();
    if (excelApp == null)
    {
         throw new Exception("打开Excel应用时发生错误!");
    }
    excelWBs = excelApp.Workbooks;
    //打开一个现有的工作薄
    excelWB = excelWBs.Add(pPath);
    excelSts = excelWB.Sheets;
    //选择第一个Sheet页
    excelWS = excelSts.get_Item(1);
    string sheetName = excelWS.Name;
    ReleaseCOM(excelWS);
    ReleaseCOM(excelSts);
    ReleaseCOM(excelWB);
    ReleaseCOM(excelWBs);
    excelApp.Quit();
    ReleaseCOM(excelApp);
    return sheetName;
}
 
// 释放资源
private void ReleaseCOM(object pObj)
{
    try
    {
         System.Runtime.InteropServices.Marshal.ReleaseComObject(pObj);
    }
    catch
    {
          throw new Exception("释放资源时发生错误!");
    }
    finally
    {
           pObj = null;
    }
}


这篇文档对您是否有帮助?

上一篇:WPF导出CSV
下一篇:WPF导出Excel
Winform 全屏显示

Winform 全屏显示

Winform程序无边框、置顶、全屏显示
WPF之Image控件

WPF之Image控件

Image控件加载图片包括加载动态图片,加载静态图片两种方式。加载动态图片通过生成一个BitmapImage,创建该对象后,赋给Image的Source即可。加载的形式:BitmapImage myBitmapImage =new BitmapImage();myBitmapImage.BeginInit();取得数据库存储的图片字段,MSSQL的Image类型Byte[] mybyte = Re
wpf list<T>与ObservableCollection<T>的区别

wpf list<T>与ObservableCollection<T>的区别

List《T》与ObservableCollection《T》的用法基本上是一样的。区别:list《T》:当T继承于INotifyPropertyChanged时,如果list《T》中的属性发生改变,则通知UI属性值已发生改变。但当list《T》添加一项时,list《T》就无法通知前端UI了(此时,ObservableCollection《T》闪亮登场)。ObservableCollection《
WPF调用线程复制文件并显示进度条

WPF调用线程复制文件并显示进度条

在WPF中复制文件时,如何调用线程,显示进度条。《Window x:Class="WpfThreadTest.MainWindow"xmlns="http:schemas.microsoft.comwinfx2006xamlpresentation"xmlns:x="http:schemas.microsoft.comwinfx2006xaml"Title="MainWindow" Closed=
WPF中对XML的读写

WPF中对XML的读写

已知有一个XML文件(bookste.xml)如下:《?xmlversion="1.0" encoding="gb2312"?》《bookste》《bookgenre="fantasy" ISBN="236314"》《title》OberonsLegacy《title》《auth》Cets,Eva《auth》《price》5.95《price》《book》《bookste》 1、往《bookste