当前位置: 首页 > 编程日记 > 正文

将DBF,XLS,XML,MDB文件导入C#DataGrid的方法

以下的源码里分别给出了将DBF,XLS,XML,MDB文件导入C#DataGrid的方法,供各位参考。

//PutInDataSet.cs的源码
using System;
using System.Data.Odbc;
using System.Data.OleDb;
using System.Data;
using System.Collections;

namespace PutInDataSet
{
/// <summary>
/// DataSetTransIn 的摘要说明。
/// </summary>
public class PutInDataSet
{
/// <summary>
/// 传入的文件变量
/// </summary>
private DataSet my_Ds;//存放文件的数据集
private string my_Err;//错误信息
private string my_TableName;//传入的文件名
private TableType my_TableType;//传入的文件类型
private string my_TablePath;//传入的文件路径
private int my_TableIndex;//表的索引
OleDbCommandBuilder my_Builder;//命令串

/// <summary>
/// 数据库连接变量
/// </summary>
private string my_StrConnection;//连接字符串
private string my_StrSelect;//select语句

/// <summary>
/// 可以处理的文件类型
/// </summary>
public enum TableType
{
MDB,XLS,DBF,DOC,TXT,XML,HTML
}

public PutInDataSet(string TablePath,string TableName,TableType TableType)
{
///<summary>
///获得传入的路径,文件名及文件类型;
///</summary>
this.my_TablePath=TablePath;//路径
this.my_TableName=TableName;//文件名
this.my_TableType=TableType;//文件类型
}

public DataSet Convert()
{
DataSet iRtn_Ds=new DataSet();
switch (this.my_TableType)
{
case TableType.DBF:
iRtn_Ds = this.DbfToDs();
break;

case TableType.MDB:
iRtn_Ds = this.MdbToDs();
break;

case TableType.XLS:
iRtn_Ds = this.XlsToDs();
break;

case TableType.XML:
iRtn_Ds = this.XmlToDs();
break;
}
return iRtn_Ds;
}

///<summary>
///将DBF文件放入DataSet
///</summary>
private DataSet DbfToDs()
{
//数据库连接定义
OdbcConnection my_conn; //数据连接
OdbcDataAdapter my_Adapter;//数据适配器

//数据库连接
this.my_StrConnection= "Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=" + this.my_TablePath;
this.my_StrSelect="SELECT * FROM " + this.my_TableName;
my_conn = new OdbcConnection(this.my_StrConnection);
my_conn.Open();
my_Adapter = new OdbcDataAdapter(this.my_StrSelect,my_conn);
this.my_Ds=new DataSet();

//填充数据集
my_Adapter.Fill(this.my_Ds,this.my_TableName);
return this.my_Ds;
}

///<summary>
///将MDB文件放入DataSet
///</summary>
private DataSet MdbToDs()
{
//数据库连接定义
OleDbConnection my_conn;
OleDbDataAdapter my_Adapter;

//数据库连接
this.my_StrConnection= "Provider=Microsoft.JET.OLEDB.4.0;data source=" + this.my_TablePath;
this.my_StrSelect="SELECT * FROM " + this.my_TableName;
my_conn = new OleDbConnection(this.my_StrConnection);
my_conn.Open();
my_Adapter = new OleDbDataAdapter(this.my_StrSelect,my_conn);
this.my_Ds=new DataSet();

//填充数据集
my_Adapter.Fill(this.my_Ds,this.my_TableName);
return this.my_Ds;
}

///<summary>
///将XML文件放入DataSet
///</summary>
private DataSet XmlToDs()
{

//填充数据集
this.my_Ds=new DataSet();
this.my_Ds.ReadXml(this.my_TablePath+this.my_TableName,XmlReadMode.ReadSchema);
this.my_Ds.DataSetName="XmlData";
return this.my_Ds;
}

///<summary>
///将Excel文件放入DataSet
///</summary>
private DataSet XlsToDs()
{
OleDbConnection my_conn;
OleDbDataAdapter my_Adapter;

//数据库连接
this.my_StrConnection= "Provider=Microsoft.JET.OLEDB.4.0;Extended Properties=Excel 8.0;data source="+this.my_TablePath+this.my_TableName;
this.my_StrSelect="SELECT * FROM [SHEET1$]";
my_conn = new OleDbConnection(this.my_StrConnection);
my_conn.Open();
my_Adapter = new OleDbDataAdapter(this.my_StrSelect,my_conn);
this.my_Builder=new OleDbCommandBuilder(my_Adapter);
this.my_Ds=new DataSet();

//填充数据集
my_Adapter.Fill(this.my_Ds,"ExcelData");
return this.my_Ds;
}


}
}


//Form_PutInDataSet.cs的源码

using System;
using System.Data;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using DataAccess.SysManage;
using BusinessRules;
using DataSetTrans;


namespace WinForm.Common
{
/// <summary>
/// FormDesktop 的摘要说明。
/// </summary>
public class FormDesktop : System.Windows.Forms.Form
{
private WinForm.Common.DeskTop deskTop1;
private System.Windows.Forms.Button button1;
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;

private DataSet m_ds = new DataSet();
private System.Windows.Forms.DataGrid dataGrid1; //数据源
private string m_TableName; //外部文件名称

public FormDesktop()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();

//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}

/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

#region Windows Form Designer generated code
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.deskTop1 = new WinForm.Common.DeskTop();
this.button1 = new System.Windows.Forms.Button();
this.dataGrid1 = new System.Windows.Forms.DataGrid();
((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).BeginInit();
this.SuspendLayout();
//
// deskTop1
//
this.deskTop1.BackColor = System.Drawing.SystemColors.Desktop;
this.deskTop1.Location = new System.Drawing.Point(168, 440);
this.deskTop1.Name = "deskTop1";
this.deskTop1.Size = new System.Drawing.Size(16, 24);
this.deskTop1.TabIndex = 0;
//
// button1
//
this.button1.Location = new System.Drawing.Point(256, 216);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(88, 40);
this.button1.TabIndex = 1;
this.button1.Text = "GetData";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// dataGrid1
//
this.dataGrid1.DataMember = "";
this.dataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText;
this.dataGrid1.Location = new System.Drawing.Point(192, 40);
this.dataGrid1.Name = "dataGrid1";
this.dataGrid1.Size = new System.Drawing.Size(216, 152);
this.dataGrid1.TabIndex = 2;
//
// FormDesktop
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.BackColor = System.Drawing.SystemColors.AppWorkspace;
this.ClientSize = new System.Drawing.Size(624, 485);
this.Controls.Add(this.dataGrid1);
this.Controls.Add(this.button1);
this.Controls.Add(this.deskTop1);
this.Name = "FormDesktop";
this.Text = "系统控制台";
this.Resize += new System.EventHandler(this.FormDesktop_Resize);
this.Load += new System.EventHandler(this.FormDesktop_Load);
((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit();
this.ResumeLayout(false);

}
#endregion

private void FormDesktop_Load(object sender, System.EventArgs e)
{

}

/// <summary>
/// 当窗口改变大小时自动居中。
/// </summary>
private void FormDesktop_Resize(object sender, System.EventArgs e)
{
if (this.WindowState != FormWindowState.Minimized)
{
if (this.Width > this.deskTop1.Width && this.Height > this.deskTop1.Height )
{
this.deskTop1.Left = (this.Width - this.deskTop1.Width) / 2;
this.deskTop1.Top = (this.Height- this.deskTop1.Height)/ 2;
}
}
}

private void button1_Click(object sender, System.EventArgs e)
{
DataSet out_Ds=new DataSet();
PutInDataSet obj=new PutInDataSet("文件路径","文件名",PutInDataSet.TableType.文件格式);//调用PutInDataSet类
out_Ds=obj.Convert();//转换到DataSet中
this.dataGrid1.DataSource=out_Ds.Tables["表名"];//在DataGrid中显示

}
}
}

相关文章:

超星未来发布新一代高级别自动驾驶车载计算平台

5月25日&#xff0c;由中国汽车工程学会、国家智能网联汽车创新中心主办的第八届国际智能网联汽车技术年会&#xff08;以下称“CICV 2021”&#xff09;在北京亦创国际会展中心举办。超星未来联合创始人、首席技术官梁爽博士应邀出席发表演讲&#xff0c;并在主论坛上发布了超…

Effective Java - Item 1: Consider static factory methods instead of constructors

考虑使用静态工厂方法来替代构造方法, 这样的做的好处有四点. 1. 更好的表意 有的构造方法实际上有特殊的含义, 使用静态工厂方法能更好的表达出他的意思. 例如 BigInteger(int, int, Random) , 它返回一个可能是素数的 BigInteger. 使用工厂方法 BigInteger.probablePrime 可以…

服务器和普通用户电脑的区别

服务器和普通用户电脑的区别 1、硬件方面 经常收到戴尔的广告邮件&#xff0c;看到里面的服务器配置不怎么高&#xff0c;可是价格都很贵。想知道&#xff0c;服务器和普通电脑的区别在哪里呢&#xff1f; 目前使用服务器的站长和企业也比较多&#xff0c;也许有人会觉得二者差…

C#:消息队列应用程序

文章“MSMQ&#xff1a;可伸缩、高可用性的负载平衡解决方案&#xff08;英文&#xff09;”介绍了一种解决方案&#xff0c;用于高可用性消息队列 (MSMQ) 的可伸缩负载平衡解决方案体系结构。此解决方案中涉及了一种将 Windows 服务用作智能消息路由器的开发方案。这样的解决方…

从腾讯实时音视频发家史,看爆发中的 RTC 将何去何从

作者 | 夕颜头图 | 下载于视觉中国出品 | AI 科技大本营&#xff08;ID:rgznai100&#xff09;早在2015年左右&#xff0c;直播和短视频的兴起渗透进普通人的日常生活&#xff0c;人们信息消费的内容已经开始从文字向语音、视频信息转变。而疫情期间全民“家里蹲”的窘境&#…

山寨c 标准库中的getline 函数

2019独角兽企业重金招聘Python工程师标准>>> 要山寨一个函数&#xff0c;只要看两点 原版函数的形参。原函数的返回值。下面是函数原型。 ssize_t getline(char **lineptr, size_t *n, FILE *stream); 函数返回值。 RETURN VALUE On success, getline() and getde…

封ip对爬虫的影响

今天要聊的是封ip对爬虫的影响。我认为封ip能拒绝一部分网络请求&#xff0c;减轻服务器的压力&#xff0c;但是如果要是建立一个好的ip池&#xff0c;封对爬虫的影响不大。 爬取国内一个拍卖公司的网站&#xff0c;刚开始用多进程下载&#xff0c;每分钟能爬取 1000个页面&…

Python 的一万种用法:制作 Web 可视化页面

来源 | 法纳斯特头图 | 下载于ICphoto一谈到Web页面&#xff0c;可能大家首先想到就是HTML、CSS或JavaScript。本次小F给大家介绍一下如何用Python制作一个数据可视化网页&#xff0c;使用到的是Streamlit库&#xff0c;轻松将一个Excel数据文件转换为一个Web页面&#xff0c;提…

【Go语言】LiteIDE使用的个人使用方法

Go语言开发 可以使用的IDE很多 &#xff08;Goclipse&#xff0c;sublime&#xff0c;notepad&#xff0c;vim等&#xff09;目前使用的最顺手的就是LiteIDE了 但是尽管这样&#xff0c;一开始使用LiteIDE也有很多不习惯的地方&#xff0c;下面主要总结了一些自己喜欢的用法 首…

发挥大数据及其产业在推动发展方式转变上的作用

大数据时代的到来&#xff0c;互联网成为基础设施&#xff0c;数据变成重要资源&#xff0c;这不仅意味着海量、多样、快速的数据处理和技术创新&#xff0c;更为重要的是改变了传统要素的组合方式。这种变化客观上要求必须转变传统的经济增长方式&#xff0c;实现创新驱动发展…

Google 全球 IP 地址库一览表(更新中)

IP 地址来源&#xff1a;http://www.kookle.co.nr&#xff0c;共计4351个。【链接】http://www.kookle.co.nr/https://github.com/justjavac/Google-IPsBulgaria93.123.23.193.123.23.293.123.23.393.123.23.493.123.23.593.123.23.693.123.23.793.123.23.893.123.23.993.123.2…

Linux下的阻塞(Block)

阻塞&#xff08;Block&#xff09;这个概念。当进程调用一个阻塞的系统函数时&#xff0c;该进程被置于睡眠&#xff08;Sleep&#xff09;状态&#xff0c;这时内核调度其它进程运行&#xff0c;直到该进程等待的事件发生了&#xff08;比如网络上接收到数据包&#xff0c;或…

发布 128 核 Altra Max,自研内核,明年推出 5nm 处理器,“性能怪兽”Ampere 搞大事?...

作者 | 伍杏玲出品 | AI 科技大本营&#xff08;ID:rgznai100&#xff09;头图 | 下载于ICphoto2015 年&#xff0c;在英特尔就职 28 年的总裁 Renee James 辞职&#xff0c;正在大众纷纷猜测她将如何开启下一段旅程时&#xff0c;她有了创业的想法&#xff0c;2017 年带领新团…

纷纷布局的全光网,是你所熟知的吗?

近日&#xff0c;中国电信甘肃公司举行甘肃全光网建成发布会&#xff0c;至2017年4月30日&#xff0c;甘肃省已建成14个全光网市州、87个全光网县区、1234个全光网乡镇、10000个全光网行政村&#xff0c;全省市、县、乡光网宽带覆盖率达到95%以上&#xff0c;全面实现光纤到户;…

内存转换Image到Icon

时候我们需要在内存中转换Image格式到Icon 根据经验&#xff0c;通常我们应该可以这样做 Image image xxxx;///假设这里已经有一个Image对象 System.IO.MemoryStream mStream new System.IO.MemoryStream();///创建内存流 image.Save(mStream, System.Drawing.Imaging.Ima…

Spring注解@Component、@Repository、@Service、@Controller,@Autowired、@Resource用法

一、Spring定义bean&#xff0c;Component、Repository、Service 和 Controller Spring 2.5 中除了提供 Component 注释外&#xff0c;还定义了几个拥有特殊语义的注释&#xff0c;它们分别是&#xff1a;Repository、Service 和 Controller。在目前的 Spring 版本中&#xff0…

谁是“艾灵”?是腾讯的真国风 AI 虚拟人!

近日&#xff0c;腾讯AI虚拟人艾灵再秀出新技能&#xff0c;首次展示AI作诗、AI书法等国风才艺&#xff0c;并与青年歌手白举纲跨次元合作&#xff0c;共同演唱国风新歌《百川千仞》。AI“艾灵”诞生于腾讯AI Lab&#xff0c;来自实验性、探索性技术项目“多模态虚拟人”。机器…

[Java实现] 图片择优(选择最清楚的图片)

FuzzyDetection 图片择优&#xff08;选择最清楚的图片&#xff09;【Java实现】效果不错&#xff0c;大家可以根据我的源码改成自己使用的语言并应用到自己项目中。 实现思路 获取图片的灰度图数组使用拉普拉斯算子进行卷积运算 {0, 1, 0, 1, -4, 1, 0, 1, 0}获取结果的方差与…

C#获取硬盘序列号

using System; using System.IO; using System.Runtime.InteropServices; using System.Text; using Microsoft.Win32; namespace Wjb.ReadOrWriteIniAndReg { /// <summary> /// HardDiskVal 的摘要说明。 /// 读取指定盘符的硬盘序列号 /// 功能&#xff1a;读…

Arm 发布移动端 v9 体系新架构,CPU、GPU、IP全囊括了

作者 | 夕颜头图 | 下载于ICphoto出品 | AI 科技大本营&#xff08;ID:rgznai100&#xff09;2021年5月25日晚&#xff0c;Arm发布了针对移动端的Armv9体系新架构&#xff0c;除了公布首款全面计算&#xff08;Total Compute&#xff09;解决方案&#xff0c;Arm还发布了首批基…

16条很有用的Chrome浏览器命令

为什么80%的码农都做不了架构师&#xff1f;>>> Google Chrome浏览器有很多的特性在界面菜单中是没有体现的&#xff0c;你可以通过「chrome://命令」来访问。在Chrome的浏览器地址栏中输入命令&#xff0c;就会返回相应的结果。下面是16个非常有用的chrome://命令…

Spring集成Redis方案(spring-data-redis)(基于Jedis的单机模式)(待实践)

说明&#xff1a;请注意Spring Data Redis的版本以及Spring的版本&#xff01;最新版本的Spring Data Redis已经去除Jedis的依赖包&#xff0c;需要自行引入&#xff0c;这个是个坑点。并且会与一些低版本的Spring有冲突&#xff0c;要看官方文档和不断的测试。 继上一篇文章ht…

leetcode -- 3 sum

3-sum 题目描写叙述&#xff1a; Given an array S of n integers, are there elements a, b, c in S such that a b c 0? Find all unique triplets in the array which gives the sum of zero. 题目要求&#xff1a; Elements in a triplet (a,b,c) must be in non-desc…

C#中如何得到机器的IP地址

如何使用DNS类并得到机器的IP地址的技巧 介绍 这篇文章并不是技术纵览或大型讨论&#xff0c;而更像是关于如何得到IP地址或主机名称的技巧集锦。在 Win32 API编程中你可以使用NetWork API&#xff0c;在.NET平台中也是类似的。唯一的不同之处是你要找到并理解为完成这个任务需…

让浏览器开挂的插件,测评师教你如何选

CSDN下起了红包雨399 元智能音箱199 元天猫精灵300元现金红包/会员100元红包/会员更有千万流量曝光100%有奖......作为日常总发现 " 宝藏 " 的你总体验过一些 " 王炸 " 级别的chrome插件让你想 “ 真诚 ” 安利所以&#xff0c;CSDN开启了彩虹屁chrome插件…

JQuery:JQuery 中的CSS()方法

JQuery:CSS()方法jQuery css()方法&#xff1a;css()方法设置或返回被选元素的一个或多个样式属性。1、返回 CSS 属性如需返回指定的 CSS 属性的值&#xff0c;请使用如下语法&#xff1a;css("propertyname");下面的例子将返回首个匹配元素的 background-color 值&a…

j.u.c.locks.AbstractQueuedSynchronizer.Node

2019独角兽企业重金招聘Python工程师标准>>> AQS是JUC当中最核心的部分&#xff0c;大部分多线程讲解&#xff0c;都不会详细讲AQS&#xff0c;AQS的源代码&#xff0c;要看明白还是有点困难的。但是一旦看明白了&#xff0c;结构还是蛮清晰的。这里我们把AQS拆开&a…

使用C#开发COM+组件

一般来说&#xff0c;在IT技术界以及硬件产业&#xff0c;技术的更新换代速度非常得惊人&#xff0c;而惯例是所有的新技术都会遵循向下兼容的原则&#xff0c;但是.NET技术不仅仅做到了这一点&#xff0c;.NET甚至实现了相互之间的各自调用&#xff0c;这一点是非常难能可贵的…

香奈儿的 AI 实验室里,发生了什么?

作者 | 库珀来源 | 数据实战派头图 | 下载于ICphotoAI 已经能够在给你播报今日天气时提供穿衣建议。相信你大多数情况下都听进去了。如果它给你提供美妆建议呢&#xff1f;包括香奈儿在内&#xff0c;越来越多的美容品牌正在将 AI 技术结合到其产品之中。可是&#xff0c;人工智…

VS code for python开发利器

转发点赞支持引言最近在整理python自动化测试课程的内容&#xff0c;发现了微软出的vs code编辑器太牛逼了&#xff0c;非常好用&#xff0c;而且轻量的不要不要的&#xff0c;特此记录下&#xff0c;有选择纠结症的朋友我强烈推荐使用ta。PS&#xff1a;兼容win10且兼容高分辨…