当我们加载 Excel 文件到 Windows 窗体应用程序时,最常见的方法是使用 Streams 去读/写 文件。另一种更好的方法是直接拖拽 Excel 文件到

FlexGrid 上。

这个例子使用 Drag 和 Drop 特性来实现该应用。下面我们分部阐述如何实现:

1.创建用户自定义控件

在用户自定义控件中添加 ComponentOne C1FlexGrid,我们使用 ComponentOne  C1Command's MainMenu 和 ComponentOne DockingTab 控件去模拟 Excel 菜单和 Sheets
Tab。使用 Label 和 TextBox 去展示当前选中索引和内容。
UI 布局如截图:

2.拖拽 Excel 到 C1FlexGrid

是指 C1FlexGrid.DropMode 为 Manual。添加 C1FlexGrid DragEnter 和 DragDrop 事件。在 DragEnter 事件中更改 光标形状。我们我需要创建
“file” 变量去存储添加的文件名称。


string file;private void _flex_DragEnter(object sender, DragEventArgs e){if (e.Data.GetDataPresent(DataFormats.FileDrop, false) == true)e.Effect = DragDropEffects.Move;elsee.Effect = DragDropEffects.None;}

3.现在我们需要在 DragDrop 事件中操作拖拽到 C1FlexGrid 中的 Excel 文件。Drop 事件可以捕捉到文件名和路径。这时我们可以使用 C1FlexGrid
.LoadExcel 方法去加载 Excel 文件。但是我们需要去检查拖拽的文件是否为 BIFF8(.XlS) 或者 OpenXML(xlsx)文件。


private void _flex_DragDrop(object sender, DragEventArgs e){file = string.Empty;string[] str = (string[])e.Data.GetData(DataFormats.FileDrop);foreach (string s in str)file += s;LoadExcelInFlex();}private void LoadExcelInFlex(){if ((file.EndsWith(".xls")) || (file.EndsWith(".xlsx"))){_flex.DataSource = null;_flex.LoadExcel(file);AddTabs();UpdateFields();}else{MessageBox.Show("Please select an Excel file");}}

4.LoadExcelInFiel 方法使用两个方法:AddTabs() 和 UpdateFields() 。这两个方法的作用是创建类似于 Excel 的 SpreadSheet 界面。


private void AddTabs(){_sheetTabs.TabPages.Clear();string[] sheetnames = _flex.LoadExcelSheetNames(file);foreach (string str in sheetnames){C1DockingTabPage dtpage = new C1DockingTabPage();dtpage.Name = str;dtpage.Text = str;_sheetTabs.TabPages.Add(dtpage);}_sheetTabs.SelectedIndex = 0;}//Method to update the fields in the UIprivate void UpdateFields(){SetRowColNames();int selcol = _flex.Col;int selrow = _flex.Row;label1.Text = _flex.GetDataDisplay(0, selcol) + selrow.ToString();try { textBox1.Text = _flex.GetDataDisplay(selrow, selcol); }catch(Exception ex) { System.Diagnostics.Debug.WriteLine(ex.Message);}}

Demo 下载

很高兴能和大家分享 ComponentOne 的使用方法、讨论 ComponentOne 使用过程中遇到的问题。

葡萄城控件产品网站:http://www.gcpowertools.com.cn/ 
葡萄城技术支持论坛:http://gcdn.grapecity.com/

转载于:https://blog.51cto.com/c1supportteam/937019

拽 Excel 到 ComponentOne C1FlexGrid相关推荐

  1. 如何批量合并Excel文件和工作表 - Excel合并器使用教程

    Excel是人们用于创建日常工作表和统计信息的最流行的工具,在我们工作中经常接触到Excel的XLSX和XLS格式文件.不少朋友应该有时会发现,管理太多的Excel工作表和文件是一件头疼的事情,经常需 ...

  2. 软工实践原型设计——PaperRepositories

    软工实践原型设计--PaperRepositories 写在前面 本次作业链接 队友(031602237吴杰婷)博客链接 pdf文件地址 原型设计地址(加载有点慢...) 结对成员:031602237 ...

  3. Kettle实例解析

    参考自 李蒙强 的博客:<ETL利器Kettle实战应用解析系列二> 重新操作.改造.配图 首先建表并插入数据 三张事实表 drop table aa_cust; create table ...

  4. UiPath之邮件发送

    该项目最后结果为发送给指定邮箱邮件,带有表格附件,主题,正文(文字.图片.表格) 在建立序列之前,先做一些准备工作. 以qq邮箱为例,开启SMTP服务,同时获取授权码. 登录QQ邮箱--->点击 ...

  5. BI分析功能详解:Smartbi自助数据准备

    ​Smartbi自助数据准备功能简介 之前我们在<通过数据导航实现企业的数据资源到我的数据资源>一文中讲过通过数据导航可以实现企业的数据资源到我的数据资源,通过开放的企业数据资源目录,个人 ...

  6. origin软件操作1:有关列属性的设置

    添加列:在空白处单击右键-->添加新列:或直接选中一列,右键-->插入(在该列的前面插入一列). 移动列:选中一列-->单击右键-->移动列. 设置列绘图属性:点击列名称选中整 ...

  7. Excel表格快速复制公式到最后一行,无需拖拽!

    工欲善其事,必先利其器!掌握一些Excel表格的操作技巧,很多时候会极大地减轻工作量. 如下图所示,现在在第1行.第E列,输入了一个求和公式(用于计算整行数据的加和). 选中E1单元格后,将鼠标光标移 ...

  8. EXCEL类十字拖拽操作上千条数据的技巧

    使用场景: 今天遇到要给一个文件夹几千张图片写个list,形如:.\sample\6\00001.jpg,末尾序号一直延伸到几千. 本来可以直接在第一行写下.\sample\6\00001.jpg,然 ...

  9. excel怎么把竖排变成横排_excel:斜线表头的制作方法,并且拖拽也不变形,值得收藏...

    我们是Excel技术控,大家看完文章喜欢的话,可以关注下.谢谢支持. 在excel的使用过程中,经常要制作单斜线表头,双斜线表头,以及多斜线表头,实际都不难.一个痛点是,斜线表头的在拖拽,也就是列宽变 ...

最新文章

  1. python中常见的流程结构-Python分支结构(switch)操作简介
  2. 大二暑假周进度报告(三)
  3. JavaScript库开发者们的规则
  4. 一行命令搞定node.js 版本安装、升级与卸载
  5. 手把手教你如何优化C语言程序
  6. Linux grep命令、Linux cd命令、Linux pwd命令
  7. php:修改目录下文档权限(777,644 )
  8. java jpeg压缩算法_在创建JPEG时,我可以更改Java的ImageWriter使用的压缩算法吗?
  9. 在字符串中查找id值MySQL
  10. Go:一次 exit code 是 137 且 无 coredump 的排错经历
  11. Arduino Uno + PAJ7620U2 实现手势识别控制LED灯工作
  12. Windows 7 安装软件错误:“Error 1935 ...HRESULT: 0x800736FD” 的解决办法
  13. 核酸检测预约和结果查询系统
  14. 在网页上播放本地视频
  15. 物品冷启动问题解决办法
  16. RFID固定资产管理系统之茶叶产品资产管理,智能监控防盗管理
  17. burpsuite破解webshell密码+国内黑阔shell密码收集
  18. androidx使用Toolbar
  19. 美国大学生数学建模竞赛选题、经验以及准备材料
  20. [小黄书管理平台]Angularjs 2.0应用的国际化

热门文章

  1. 计算机视觉与深度学习 | 视觉里程计库Libviso2详解
  2. maven pom java版本_Maven更新POM中的JDK版本(比如更新为JDK1.8)
  3. python 单线程_python的单线程多任务的实现
  4. Java基础day11
  5. 【机器学习】为什么GBDT可以超越深度学习
  6. 【论文解读】A Survey on Visual Transformer及引文理解
  7. 【Python基础】关于日期特征,你想知道操作都在这儿~
  8. 【Python基础】盘点 Python 10 大常用数据结构(上篇)
  9. 【科普】不同行业的常见数据分析的指标是什么?
  10. 原文翻译:关于机器学习,我们忽视的东西