C#操作EXCEL以及生成公司公章

最近项目需求 做了个小工具 操作EXCEL以及生成公司公章

TestOnSeal _top = new TestOnSeal();
            _top.TextFont = new System.Drawing.Font("黑体", 16, FontStyle.Bold);
            _top.FillColor = Color.Red;
            //_top.ColorTOP = Color.Black;
            _top.Text = comname;
            _top.BaseString = "";
            _top.ShowPath = true;
            _top.LetterSpace = 1;
            _top.SealSize = 180;
            _top.CharDirection = Char_Direction.Center;
            _top.SetIndent(20);
            Graphics g = this.CreateGraphics();
            g.DrawImage(_top.TextOnPathBitmap(), 0, 0);

            _top.CharDirection = Char_Direction.ClockWise;
            g.DrawImage(_top.TextOnPathBitmap(), 180, 0);

            _top.CharDirection = Char_Direction.AntiClockWise;
            g.DrawImage(_top.TextOnPathBitmap(), 0, 180);

            _top.SetIndent(20);
            _top.CharDirection = Char_Direction.Center;
            g.DrawImage(_top.TextOnPathBitmap(), 180, 180);

            _top.TextOnPathBitmap().Save(System.Windows.Forms.Application.StartupPath + "/tp/" + comname + ".png",  System.Drawing.Imaging.ImageFormat.Png);

            g.Dispose();

项目下载

微信公众号开发 – 获取所有关注的用户openid

需要的类 用于反序列化

public class GuanZhuModel2
{
    public int total { get; set; }
    public int count { get; set; }
    public OpenIdListData data { get; set; }
    public string next_openid { get; set; }
}
public class OpenIdListData
{
    /// <summary>
    /// OPENID的列表
    /// </summary>
    public List<string> openid { get; set; }
}

具体方法:

string returnStr = HttpUtil.Send("", "https://api.weixin.qq.com/cgi-bin/user/get?access_token=" + Convert.ToString(PayCenter.getCache("wxModelAccess")) + "&next_openid=");
       
        var obj = JsonConvert.DeserializeObject<GuanZhuModel2>(returnStr);
        for (int i = 0; i < obj.data.openid.Count; i++)
        {
            var openid = Convert.ToString(obj.data.openid[i]);
            UserOpen openmodel = new UserOpenDAL().GetOpenIDOrType(openid, 1);
            new WXAPICommon(null, null, null).ReturnTxt(openid, "尊敬的用户,由于惠号网帐户体系升级,您的帐户类型已变更!");
            if (openmodel == null)
            {
                WeiXinCommon.GuanZhuList.Add(new GuanZhuModel()
                {
                    fromUserName = openid,
                    EventKey = ""
                });
            }
        }

C#常用错误全局捕获并记录方法

我从来都不废话 能用代码解决的 绝不说废话 (<_>)

 void Application_Error(object sender, EventArgs e)
    {
        // 在出现未处理的错误时运行的代码
        //在出现未处理的错误时运行的代码  周祥
        Exception ex = Server.GetLastError().GetBaseException();
        StringBuilder str = new StringBuilder();
        str.Append("\r\n" + DateTime.Now.ToString("yyyy.MM.dd HH:mm:ss"));
        str.Append("\r\n.客户信息:");
        string ip = "";
        if (Request.ServerVariables.Get("HTTP_X_FORWARDED_FOR") != null)
        {
            ip = Request.ServerVariables.Get("HTTP_X_FORWARDED_FOR").ToString().Trim();
        }
        else
        {
            ip = Request.ServerVariables.Get("Remote_Addr").ToString().Trim();
        }
        str.Append("\r\n\tIP:" + ip);
        str.Append("\r\n\t浏览器:" + Request.Browser.Browser.ToString());
        str.Append("\r\n\t浏览器版本:" + Request.Browser.MajorVersion.ToString());
        str.Append("\r\n\t操作系统:" + Request.Browser.Platform.ToString());
        str.Append("\r\n\t访问路径:" + Request.Url.ToString());
        str.Append("\r\n\t请求参数:" + Server.UrlDecode(Request.Form.ToString()));
        str.Append("\r\n.错误信息:" + ex.ToString());
        Log.ErrorLog(str);
       
    }

log.cs 文件下载 错误会存储在根目录 app_data 里面
Log

微信公众号开发 – 获取授权

下面是获取公众号的授权,注意的是 公众号授权与网页授权不一样的 获取到后 缓存起来 保存2小时

string url2 = string.Format(
   "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}",
       WeiXinPay.WxConfig.appid, WeiXinPay.WxConfig.appsecret);
        string returnStr2 = HttpGet.PageGet(url2, null, "text/HTML");
        var obj2 = JsonConvert.DeserializeObject<WxModelAccessToken>(returnStr2);
        if (obj2 != null && obj2.access_token != "")
        {
            if (PayCenter.getCache("wxModelAccess") != null)
            {
                PayCenter.removeCache("wxModelAccess");
            }
            PayCenter.addCache("wxModelAccess", obj2.access_token, 2);
        }