博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
读取Excel任务列表并显示在Outlook日历上
阅读量:6922 次
发布时间:2019-06-27

本文共 7205 字,大约阅读时间需要 24 分钟。

前几天,公司发了一个任务安排,时间不固定,但要求准时到,为了给自己加一个提醒,也为了回顾一下以前的技术,特做了一个Demo。

读取Excel就不多说了,代码很简单,但支持老版本Excel和的版本Excel。

代码如下:

public class ExcelConn    {        private string FilePath;        private string m_filePath = string.Empty;        private OleDbConnection conn;        public ExcelConn(string filePath)        {            this.FilePath = filePath;            string fileType = System.IO.Path.GetExtension(filePath);            if (fileType == ".xls")            {                conn = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source ='" + this.FilePath + "';Extended Properties=Excel 8.0;");            }            else            {                conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source ='" + this.FilePath + "';Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1\"");                            }            if (conn.State != System.Data.ConnectionState.Open)            {                conn.Open();            }        }        private DataTable GetData(OleDbCommand cmd)        {            try            {                if (cmd.Connection != null)                {                    using (DataSet ds = new DataSet())                    {                        using (OleDbDataAdapter da = new OleDbDataAdapter())                        {                            da.SelectCommand = cmd;                            da.Fill(ds);                            return ds.Tables[0];                        }                    }                }                else                {                    using (OleDbTransaction trans = conn.BeginTransaction(IsolationLevel.ReadUncommitted))                    {                        try                        {                            cmd.Transaction = trans;                            using (DataSet ds = new DataSet())                            {                                using (OleDbDataAdapter da = new OleDbDataAdapter())                                {                                    da.SelectCommand = cmd;                                    da.SelectCommand.Connection = conn;                                    da.Fill(ds);                                    return ds.Tables[0];                                }                            }                        }                        finally                        {                            trans.Commit();                        }                    }                }            }            finally            { }        }        public DataSet GetDataSet(string sql)        {            try            {                OleDbTransaction trans = conn.BeginTransaction(IsolationLevel.ReadUncommitted);                try                {                    using (OleDbCommand cmd = conn.CreateCommand())                    {                        cmd.Transaction = trans;                        cmd.CommandType = CommandType.Text;                        cmd.CommandText = sql;                        using (DataSet ds = new DataSet())                        {                            using (OleDbDataAdapter da = new OleDbDataAdapter())                            {                                da.SelectCommand = cmd;                                da.SelectCommand.Connection = conn;                                da.Fill(ds);                                return ds;                            }                        }                    }                }                finally                {                    trans.Commit();                }            }            finally            {            }        }        public void ExecuteNonQuery(string sql)        {            OleDbTransaction trans = conn.BeginTransaction(IsolationLevel.ReadUncommitted);            OleDbCommand cmd = new OleDbCommand(sql);            cmd.Connection = conn;            cmd.Transaction = trans;            cmd.ExecuteNonQuery();            trans.Commit();        }        public object ExecuteScalar(OleDbCommand cmd)        {            try            {                using (OleDbTransaction trans = conn.BeginTransaction(IsolationLevel.ReadUncommitted))                {                    cmd.Connection = conn;                    cmd.Transaction = trans;                    object res = cmd.ExecuteScalar();                    trans.Commit();                    return res;                }            }            finally            {            }        }        public void Close()        {            conn.Close();        }        public DataSet ExcelToDS()        {            OleDbDataAdapter myCommand;            DataTable schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { });            DataSet ds = new DataSet();            try            {                int i = 0;                {                    DataRow dr = schemaTable.Rows[i];                    string strExcel = "select * from [" + dr["TABLE_NAME"].ToString().Trim() + "]";                    myCommand = new OleDbDataAdapter(strExcel, conn);                    myCommand.Fill(ds);                }            }            catch            {            }            finally            {                conn.Close();            }            return ds;        }    }

调用示例:DataTable dtExl = new Calendar.ExcelConn(@"d:\桌面\Temp\net开发团队生产突击报名表(1).xlsx").ExcelToDS().Tables[0];

在OutLook上添加日历,其实就是添加一个约会。

新建约会也就是调用OutLook的ApplicationClass。

主要代码如下:

ApplicationClass oApp = new Microsoft.Office.Interop.Outlook.ApplicationClass();                //会议是约会的一种                AppointmentItem oItem = (AppointmentItem)oApp.CreateItem(OlItemType.olAppointmentItem);                oItem.MeetingStatus = OlMeetingStatus.olMeeting;                oItem.Subject = "生产突击";                oItem.Body = "内容";                oItem.Location = "地点";                //开始时间                 oItem.Start = DateTime.Now.AddDays(1);                //结束时间                oItem.End = DateTime.Now.AddDays(1).AddHours(4);                //提醒设置                oItem.ReminderSet = true;                oItem.ReminderMinutesBeforeStart = 5;                //是否全天事件                oItem.AllDayEvent = false;                oItem.BusyStatus = OlBusyStatus.olBusy;                //索引从1开始,而不是从0                //发件人的帐号信息                var acc = oApp.Session.Accounts;                oItem.SendUsingAccount = oApp.Session.Accounts[1];                //添加必选人                Recipient force = oItem.Recipients.Add("wufei@china.com");                force = oItem.Recipients.Add("zaijun@china.com");                force.Type = (int)OlMeetingRecipientType.olRequired;                ////添加可选人                //Recipient opt = oItem.Recipients.Add("mailuser3@p.mailserver.com");                //opt.Type = (int)OlMeetingRecipientType.olOptional;                ////添加会议发起者                //Recipient meetingSender = oItem.Recipients.Add("mailuser1@mailserver.com");                //meetingSender.Type = (int)OlMeetingRecipientType.olOrganizer;                oItem.Recipients.ResolveAll();                oItem.Send();

既读取了Excel,又能发约会,下面就是Excel中数据的筛选和调用了,相信难不倒各位,就不多说了。

至此,这个简单的Demo算是完成了,希望对大家有用。

转载于:https://www.cnblogs.com/ushou/p/3358961.html

你可能感兴趣的文章
BackTrack上运行Chrome出现“Google Chrome can not be run as root”错误
查看>>
Mac上git自动补全功能
查看>>
看了一些帖子的疑问
查看>>
分享一个批量添加nagios的脚本
查看>>
编写小***软件
查看>>
彻底征服Windows上Open×××客户端的源地址选择问题
查看>>
使用ZeroMQ彻底重构Open×××的设想以及一些新想法
查看>>
mysql常用命令
查看>>
我的友情链接
查看>>
白话Kubernetes网络
查看>>
浅析正则表达式
查看>>
oracle备份之-- 使用数据泵 闪回
查看>>
Mysql5.7 查看表结构基本语句之describe
查看>>
mongodb的资料
查看>>
分享平时工作中那些给力的shell命令
查看>>
我的友情链接
查看>>
redis配置,状态监控与性能调优
查看>>
使用CDC捕获SQLSERVER数据变更
查看>>
在mac os中安装nginx,php
查看>>
JavaScript这些代码你都不会,你还有什么好说的!!!
查看>>