首页

文章

如何把Winform 和 Excel 连接到一起 。

发布网友 发布时间:2022-04-19 19:30

我来回答

2个回答

热心网友 时间:2023-09-06 02:15

这两天做东西,用到了Excel。需要将Excel中的数据读取到内存中,经过处理后,保存到数据库中。也可以让某列的值显示到制定控件上。。

1.引用Microsoft.Office.Interop.Excel

2.代码:
/// <summary>
/// 导入Excel文件,并显示在列表
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnImport_Click(object sender, EventArgs e)
{
string worksheetname = string.Empty;
importtpye = cmbTicketType.Text;
supplier = cmbSupplier.SelectedValue.ToString();

#region 导入本地Excel文件

//导入本地文件
OpenFileDialog file = new OpenFileDialog();
file.Filter = "文档(*.xls)|*.xls";
if (file.ShowDialog() == DialogResult.OK)
btnImport.Tag = file.FileName;
//判断有没有文件导入
if (file.FileName.Length == 0)
{
MessageBox.Show("请选择要导入的文件", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}

#endregion

#region 获取Excel的工作表名称
//创建Excel实例,获取worksheet Name
Microsoft.Office.Interop.Excel.Application oExcel = new Microsoft.Office.Interop.Excel.Application();
object objMissing = System.Reflection.Missing.Value;
Microsoft.Office.Interop.Excel.Workbook myBook = (Microsoft.Office.Interop.Excel.Workbook)oExcel.Workbooks.Open(file.FileName, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing);
Microsoft.Office.Interop.Excel.Sheets sheets = myBook.Worksheets;
Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)sheets.get_Item(1);
worksheetname = worksheet.Name;//获取worksheet Name
oExcel.Quit();
#endregion

dataTable.Rows.Clear();
//将Excel表中的数据导入到Datatable中
DataTable table = LoadExcelToDataTable(file.FileName, worksheetname);

}

3.代码:
/// <summary>
/// 加载Excel表到DataTable,跟原始Excel表形式一样,需要筛选自己有用的数据
/// </summary>
/// <param name="filename">需要读取的Excel文件路径</param>
/// <param name="sheetname">工作表名称</param>
/// <returns>DataTable</returns>
public static DataTable LoadExcelToDataTable(string filename, string worksheetname)
{
DataTable table;
//连接字符串
String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + filename + ";" + "Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\"";
OleDbConnection myConn = new OleDbConnection(sConnectionString);
string strCom = " SELECT * FROM [" + worksheetname + "$]";
myConn.Open();
OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, myConn);
table = new DataTable();
myCommand.Fill(table);
myConn.Close();
return table;
}

4.注意:有的人的连接字符串写成这样:
//连接字符串
String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" +filename + ";" + "Extended Properties=Excel 8.0;";
这样也可以读取到数据,但是,如果Excel表里的某一列中既有文本类型的值,又有数字类型的值,即混合类型的列,那么就会只读取到一种类型的值,另一种类型的就会为NULL。

//连接字符串
String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + filename + ";" + "Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\"";

这样,后边加上"HDR=Yse;IMEX=1",并且这句必须用引号引住,这样就会把混合类型的数据同一当作文本读取,不会出现丢数据的现象。

二、方法二
/// <summary>
/// ExcelUtils 的摘要说明
/// </summary>
public class ExcelUtils
{

public static DataSet ReadExcelToDS(string Path)
{
try
{
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Path + ";" + "Extended Properties='Excel 8.0;HDR=NO;IMEX=1';";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
DataTable schemaTable = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
if (schemaTable != null)
{
string sheetName = schemaTable.Rows[0][2].ToString().Trim();
//第一张sheet的名称,这个索引为什么是[0][2]也是尝试出来的

if (sheetName != null && sheetName.Length > 0)
{
string strExcel = "select * from [" + sheetName + "]";
OleDbDataAdapter myAdp = new OleDbDataAdapter(strExcel, conn);
DataSet ds = new DataSet();
myAdp.Fill(ds);
return ds;
}

}
return null;
}
catch (Exception e)
{
throw new WebAppException(e.Message) ;
}
}

}

热心网友 时间:2023-09-06 02:15

http://zhidao.baidu.com/question/106536746.html?fr=qrl&cid=1069&index=1&fr2=query
看看这个有帮助吗?
八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 使用puppeteer实现将htmll转成pdf 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档 【译】将HTML转为PDF的几种实现方案 变形金刚08动画怎么样 变形金刚08动画的问题 变形金刚08动画日语版剧情介绍 高分!换显卡nvidia控制面板被我卸了,重新安装显卡驱动后没了nvidia控... 我的nvidia控制面板被卸载了 怎么找回啊 卸载后 这个画面看着很奇怪_百 ... 李卓彬工作简历 林少明工作简历 广东工业职业技术学院怎么样 郑德涛任职简历 唐新桂个人简历 土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 扦插绿萝多久发芽 炖牛排骨的做法和配料 网络诈骗定罪标准揭秘 “流水不争先”是什么意思? mc中钻石装备怎么做 为什么我的MC里的钻石块是这样的?我想要那种。是不是版本的问题?如果是... 带“偷儿”的诗句 c# winform程序,类似于这样的表格是怎么做出啦的... winform如何画表格? winform中怎么用入excel表格功通知 C# winform 想做个如图所示的表格,用什么控件来做... C# WinForm窗体中,嵌入类似于Excel表格 哪位大神知道winform有没有可以支持合并单元格的表... winform怎么实现表格效果? C# winform 表格 C#winform怎么绘制表格 winForm中表格拉伸关闭控制 C# winform中以excel的方式编辑表格 行车记录仪在停车状态下,能24小时监控吗?蓄电池... 雅迪电动车怎么看电量? 哈罗单车的停车区域怎么查询 享骑电单车停点还车区域如何查看及选择? 怎么判断电瓶在停车是还在放电? 我弟弟今年8月8号下午在不知情的情况下把电动车停... 红绿灯路口的监控能看到车里的人吗 北京电子停车怎么缴费 别人的车险电子保单平安好车主上能不能查看到? WinForm控件大全,要详细的. winform中有表格吗?如果用datagridview的话,怎样... winform中用chart控件做一个用于房间温度监控的图... C# winform 的listView控件如何将单元格写入值 winform是否可以根据数据表的列项自动生成一个可编... C#请问winform怎么做出复杂表格的界面 DX控件,winform中chartcontrol如何和数据库中的表... pr可以加特效么? 华为手机下拉菜单设置? 视频在pr剪辑完了,可以在ae上加特效么? 华为手机如何设置下拉菜单栏 如何在excel 表格里添加word文档 华为nova7下拉状态栏快捷键怎么调 手机添加微信的步骤 如何在excel中添加word链接 如何在excel里加入word文档 怎么添加微信? excel中怎么插入Word? 有对方怎么加微信 在excel中怎么插入一个word文件
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com