关于程序的一些想法:

单位的全部生日名单保存在excel里,本来我想用config配置文件管理,直接调出。但实际操作的时候出现了问题:操作config需要知道key才可以获得value,换句话说我在知道今天谁生日之前要先知道寿星的名字,这是不符合逻辑的。

最后考虑到用sql语言操作excel表格来完成,但是日期并不好操作,上网搜找到一个脑洞巨大的方法:dayofyear,简直神器,接下来就简单了,在excel新建一列dayofyear,用oledb连接excel,再添加一个timer控件定时刷新sql语言找出寿星,显示在datagridview里。

遇到的问题点:

本来的excel驱动版本

MsWord.Document wordDoc = wordApp.Documents.Add(@"E:\治安要情模板.doc");

vs报错外部表不是预期的格式,问题出在excel2010版不被JET引擎支持(03-07),所以要改为

string strconn="Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+filepath+";Extended Properties='Excel 8.0;HDR=YES;IMEX=1'" ;

就可以顺利进入了

让程序不在下方任务栏显示:

this.ShowInTaskbar = false;

程序要在通知栏显示一个icon,双击弹出,再双击隐藏:

在form设计界面添加一个notifyicon控件并设置图标(必须)

添加notifyicon方法:

private void notifyIcon1_DoubleClick(object sender, EventArgs e){if (this.WindowState == FormWindowState.Normal){this.WindowState = FormWindowState.Minimized;this.Hide();}else if (this.WindowState == FormWindowState.Minimized){this.Show();this.WindowState = FormWindowState.Normal;this.Activate();}}

开机自启动:

1把exe文件添加到开始菜单启动文件夹内

2注册表启动

// 添加到 当前登陆用户的 注册表启动项RegistryKey RKey = Registry.CurrentUser.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run");RKey.SetValue("AppName", @"C:\AppName.exe");
// 添加到 所有用户的 注册表启动项
RegistryKey RKey = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run");
RKey.SetValue("AppName", @"C:\AppName.exe");

完整代码

using System;
using System.Data;
using System.Windows.Forms;
using System.Data.OleDb;//引用oledbnamespace birthdaylist
{public partial class Form1 : Form{public Form1(){InitializeComponent();timer1.Enabled = true;}private void button1_Click(object sender, EventArgs e){string filepath = "E:\\生日慰问一览表(放在e盘根目录下).xls";string strconn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filepath + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1'";//oledb打开excel的操作OleDbConnection oleconn = new OleDbConnection(strconn);oleconn.Open();string sql = textBox1.Text;OleDbDataAdapter oledaexcel = new OleDbDataAdapter(sql, oleconn);DataSet oledsexcel = new DataSet();//新建dataset对象oledaexcel.Fill(oledsexcel, "Sheet1");//映射到ds里oleconn.Close();this.dataGridView1.DataSource = oledsexcel.Tables[0];//dgv数据源来自ds.table0}private void textBox1_KeyDown(object sender, KeyEventArgs e)//回车等于查询按钮{if (e.KeyCode == Keys.Enter)button1_Click(sender,e);}private void timer1_Tick(object sender, EventArgs e){label1.Text = DateTime.Now.DayOfYear.ToString();int today = DateTime.Now.DayOfYear;timer1.Interval =  3600 * 1000;//周期1小时一次//string tmp = DateTime.Now.ToShortTimeString();if (DateTime.Now.Hour.ToString() == "8")//8点钟提示{int yesterday = today - 1;textBox1.Text = "select * from [Sheet1$] where xh='" + yesterday + "' ";button1_Click(sender, e);}}private void button2_Click(object sender, EventArgs e)//停止启动timer{if (timer1.Enabled == true)timer1.Enabled = false;elsetimer1.Enabled = true;}private void Form1_Load(object sender, EventArgs e){this.ShowInTaskbar = false;}private void notifyIcon1_DoubleClick(object sender, EventArgs e){if (this.WindowState == FormWindowState.Normal){this.WindowState = FormWindowState.Minimized;this.Hide();}else if (this.WindowState == FormWindowState.Minimized){this.Show();this.WindowState = FormWindowState.Normal;this.Activate();}}}
}

在茫茫excel寻找寿星------生日慰问用oledb连接excel表并用sql语言操作相关推荐

  1. C#使用oledb连接excel运行Insert Into语句出现“操作必须使用一个可更新的查询”的解决的方法...

    我错误发生时的环境:Windows 7,Framework 4.0,Microsoft Office 2007,VS2010,c# WinForm. 部分代码: string strConn = &q ...

  2. VS2010用OLEDB连接Excel

    新手菜鸟,把用vs2010开发时,如何连接Excel来进行操作的过程记录一下. 今天写个简单的程序,从Excel中对比用户名和密码,然后登陆,如果用户名.密码和Excel中对照,则登陆成功,否则登陆失 ...

  3. Excel VBA(02)工作簿、工作表、单元格操作

    工作簿操作 一.概述 一个 excel 文件对应一个 workbook,打开后对应一个文件窗口 Windows(1).Visible = True 二.基本操作 workbook操作:open.add ...

  4. 连接excel执行Insert Into语句出现“操作必须使用一个可更新的查询”的解决

    C#使用oledb连接excel执行Insert Into语句出现"操作必须使用一个可更新的查询"的解决办法 我发生错误时的环境:Windows 7,Framework 4.0,M ...

  5. 工作小妙招之EXCEL中根据生日日期计算年龄

    excel 中根据生日计算年龄公式 =(YEAR(F2)-YEAR(G2))+IF(MONTH(F2)-MONTH(G2)<0,-1,0) ![在这里插入图片描述](https://img-bl ...

  6. 如何排两列的序计算机考试,excel中两列数据怎么一起排序?excel两列同时排序的方法...

    excel中两列数据怎么一起排序?excel两列同时排序的方法 腾讯视频/爱奇艺/优酷/外卖 充值4折起 我们在使用Excel对数列排序时,有时会碰到需要对两列数据同时排序,下面就跟大家详细介绍操作方 ...

  7. python两个excel字段模糊匹配_Python对两个Excel操作

    简介 现在有个需求,我们根据需要 data.xlsx 中某些单元格的内容来查找 find.xlsx 中的某些內容. 数据内容(为了数据安全,所有数据均已模糊处理) data.xlsx内容: find. ...

  8. python与excel互通_【好消息】Python和Excel终于可以互通了!!

    '''# 希望对大家有帮助哈,请多提问题create by yaoyzdate: 2017/01/24'''importxlrdimportxlwt# workbook相关fromopenpyxl.w ...

  9. Excel向数据库插入数据和数据库向Excel导出数据

    为了熟悉java里工作簿的相关知识点,所以找了"Excel向数据库插入数据和数据库向Excel导出数据"的功能来实现. 注意事项:1,mysql数据库: 2,需要导入的jar包有 ...

最新文章

  1. 04flex弹性布局子项常见属性总结
  2. Python练习-循环及切片-2018.11.27
  3. MFC/UDP通信函数详细解说
  4. heartbeat 日志分析
  5. 第三章计算机网络,第三章-计算机网络及应用.ppt
  6. php curl post上传图片,php curl上传图片问题
  7. 最全的Vue3.0新特性预览(翻译)
  8. Java 面试之算法
  9. gbase数据库中快速备份数据用法
  10. 小米一键解锁system分区_不要浪费小米10的双扬声器!杜比全景音刷入教程分享...
  11. openvn 安装和配置
  12. 用Delphi编写的一个上网助手
  13. .计算机自动关机或重启,电脑自动关机或重启怎么治
  14. 介词 at on about
  15. 量子力学的传说——波尔篇(上)
  16. 970万,看美女是如何炼成巨贪的!
  17. 微信如何为好友设置特殊铃声提醒提示音
  18. 用了接口还有必要用抽象类吗?
  19. 期货换手多换空换(期货交易多换空换是什么意思)
  20. 离散数学学习笔记-02-命题逻辑

热门文章

  1. 保龄球计分系统c语言代码,保龄球计分系统计分方法
  2. 李银河:我想让自由和美丽把生命填满
  3. springboot毕设项目大学生勤工俭学系统09i5r(java+VUE+Mybatis+Maven+Mysql)
  4. oracle必须运行netca,【监听配置】Oracle如何静默运行NETCA,使用netca.rsp文件
  5. 顺丰快递 | 快递单号查询API接口
  6. Deepin 开发任务栏网速插件 lfxSpeed
  7. A*算法中的估价函数
  8. mysql服务一直处于启动状态 无法停止
  9. 最简单的阿拉伯数字转大写(财务专用)存储过程实现
  10. 使用github制作个人网站或者博客