using System.Net; 
using System.IO; 
using System.Text.RegularExpressions; 
private string getHtml(string url, string charSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 
{ 
WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient 
// 需要注意的: 
//有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 
//这是就要具体问题具体分析比如在头部加入cookie 
// webclient.Headers.Add("Cookie", cookie); 
//这样可能需要一些重载方法。根据需要写就可以了 

//获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 
myWebClient.Credentials = CredentialCache.DefaultCredentials; 
//如果服务器要验证用户名,密码 
//NetworkCredential mycred = new NetworkCredential(struser, strpassword); 
//myWebClient.Credentials = mycred; 
//从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) 
byte[] myDataBuffer = myWebClient.DownloadData(url); 
string strWebData = Encoding.Default.GetString(myDataBuffer); 

//获取网页字符编码描述信息 
Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)\"", RegexOptions.IgnoreCase | RegexOptions.Multiline); 
string webCharSet = charSetMatch.Groups[2].Value; 
if (charSet == null || charSet == "") 
charSet = webCharSet; 

if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default) 
strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer); 
return strWebData; 
} 

 

posted @ 2012-05-22 16:58 为乐而来 阅读(7) 评论(0) 编辑

这是一片非常好的文章,修改下CSS就可以改变左侧导航栏的样式,在网上找了一些都是要写代码的。怕连接失效,所以直接将文章考了过来,希望作者原谅,如有不妥,请通知一声,我会将文章删掉!

 

WSS3SDK之:如何定制快速启动的显示样式(转载自Sunmoonfire's artistic matrix

 
我们可以通过修改导航控件的属性来定制快速启动。该控件位于default.master母板页文件中,默认部署在 (Local_Drive:\Programe Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\GLOBAL)文件夹中。该文件是WSS的母板页,包含了站点的页面布局,包括SharePoint页面中导航区域的模板。
在母板页里包括了两个控件的模板,这是在现有主页上默认可用的。一个是Microsoft.SharePoint.WebControls.Menu控件,用于在左侧导航区中显示标准的快速启动视图;另一个是Microsoft.SharePoint.WebControls.SPTreeView控件,用于显示站点文件夹视图。我们可以在用户界面上选择究竟显示哪一个视图。

选择在站点页面的左侧导航要显示的视图控件

1、选择网站操作中的网站设置,在外观一节中,选择树视图
2、选中启用快速启动,来显示快速启动视图,或者选中启用树视图来显示文件夹视图。
作为一个对左侧导航定制的例子,我们可以把快速启动折叠起来,然后设置Menu控件的属性添加“感应鼠标经过的弹出菜单”(fly-out menu)的方式来显示。这类定制需要我们使用Microsoft Office SharePoint Designer 2007修改default.master,或者创建一个custom.master文件,然后利用对象模型将站点指向新的母版页文件。

使用SharePoint Designer修改default.mater在站点母版页库中的实例来显示带fly-out菜单的折叠视图

1、选择网站操作中的网站设置,在一节中,选择母版页
2、在母版页库页面中,在下拉菜单中选择在Mirosoft Office SharePoint Designer中编辑
3、在代码视图里,找到对应的ContentPlaceHolder容器控件,其ID为PlaceHolderLeftNavBar。在PlaceHolderLeftNavBar中,找到AspMenu控件,其ID为QuickLaunchMenu
4、将Menu控件的StaticDisplayLevels和MaximumDynamicDisplayLevels的值都设为1。如下所示:
复制代码
<asp:AspMenu
id="QuickLaunchMenu"
DataSourceId
="QuickLaunchSiteMap"
runat
="server"
Orientation
="Vertical"
StaticDisplayLevels
="1"
ItemWrap
="true"
MaximumDynamicDisplayLevels
="1"
StaticSubMenuIndent
="0"
SkipLinkText
=""
>
复制代码

5、保存文件,打开网站页面查看效果。

在这里附上效果图:

通过创建自定义的母版页文件并使用SharePoint对象模型来显示带fly-out菜单的折叠视图

1、拷贝一份default.master(位于\12\TEMPLATE\GLOBAL文件夹),并重命名为myDefault.master。
2、打开新建的myDefault.master文件,找到对应的ContentPlaceHolder容器控件,其ID为PlaceHolderLeftNavBar
3、在PlaceHolderLeftNavBar中,找到AspMenu控件,其ID为QuickLaunchMenu。然后将StaticDisplayLevels和MaximumDynamicDisplayLevels的值都设为1。如下所示:
复制代码
<asp:AspMenu
id="QuickLaunchMenu"
DataSourceId
="QuickLaunchSiteMap"
runat
="server"
Orientation
="Vertical"
StaticDisplayLevels
="1"
ItemWrap
="true"
MaximumDynamicDisplayLevels
="1"
StaticSubMenuIndent
="0"
SkipLinkText
=""
>
复制代码
4、创建一个网站,在Visual Studio里,使用Microsoft.SharePoint.SPWeb.MasterUrl属性将站点母版页指向自定义的.master文件,如下所示:
C#
SPWeb subSite = SPControl.GetContextWeb(Context);
subSite.MasterUrl 
= "/Site/SubSite/_catalogs/masterpage/myDefault.master";

由于该代码含有变更内容数据库的操作,所以在运行该代码的.aspx页面里,要有一个Microsoft.SharePoint.WebControls.FormDigest控件(可以放在一个WebPart里运行,Web部件页里自带该控件。也可以在一般的aspx页面中的Form标签中添加该控件,以便在页面中运行该代码)。同时,别忘了引用Microsoft.SharePointMicrosoft.SharePoint.WebControls命名空间。
5、重启IIS,使变更生效。然后打开网站页面查看效果。

用TreeView替换Menu控件

1、打开我们前面创建的myDefault.master文件,找到对应的ContentPlaceHolder容器控件,其ID为PlaceHolderLeftNavBar
2、在PlaceHolderLeftNavBar中,找到AspMenu控件,其ID为QuickLaunchMenu。然后将SharePoint:AspMenu的起始标签和结束标签都替换成SharePoint:SPTreeView
3、移除新SPTreeView元素包含的下列LevelMenuItemStyles元素。
复制代码
<LevelMenuItemStyles>
<asp:MenuItemStyle CssClass="ms-navheader"/>
<asp:MenuItemStyle CssClass="ms-navitem"/>
</LevelMenuItemStyles>
<LevelSubMenuStyles>
<asp:SubMenuStyle CssClass="ms-navSubMenu1"/>
<asp:SubMenuStyle CssClass="ms-navSubMenu2"/>
</LevelSubMenuStyles>
复制代码
4、重启IIS使改动生效。
SPTreeView控件提供了很多属性,允许我们轻松对其进行定制。
posted @ 2012-05-21 16:38 为乐而来 阅读(33) 评论(0) 编辑
摘要: window下如何使用命令行创建schedule task(计划任务)Windows/javasky发表于2008-07-16, 14:55最近遇到了一个客户, 这个客户是从Unix/Linux阵营过来的, 不太熟悉windows平台下面的窗口操作, 这次他的要求是希望能像crontab一样使用 windows 下面的 计划任务, 经过search之后, 发现可以这么使用(schtasks )这个命令行来创建:Schtasks安排命令和程序定期运行或在指定时间内运行。从计划表中添加和删除任务,按需要启动和停止任务,显示和更改计划任务。若要查看该命令语法,请单击以下命令:schtasks cre阅读全文
posted @ 2012-05-16 16:37 为乐而来 阅读(3) 评论(0) 编辑

string strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties='Excel 12.0;HDR=NO;IMEX=1';";

System.Data.OleDb.OleDbConnection myConn = new System.Data.OleDb.OleDbConnection(strCon);
  myConn.Open();
  //获取excel第一标签名 
  System.Data.DataTable schemaTable = myConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
  string tableName = schemaTable.Rows[0][2].ToString().Trim();//标签名  
  string strCom = "SELECT * FROM [" + tableName + "]";//查询语句  
  System.Data.OleDb.OleDbDataAdapter myCommand = new System.Data.OleDb.OleDbDataAdapter(strCom, myConn);

  //得到自己的DataSet对象  
  myCommand.Fill(myDataSet);
  //关闭此数据链接  
  myConn.Close();


Excel文件是xlsx格式的2007的
本来是103150122226
用上面的方法读出来就显示成1.0315012223e+011

我说要办法就是在不改动Excel文件的条件啊。因为Excel文件是自动生生的。会有很多不可能一个一个改。


网上找到一个http://www.cnblogs.com/alein/archive/2008/11/04/1326604.html

方法是连接字符串改成string strCon ="Provider=Microsoft.ACE.OleDb.12.0;Data Source=" + FileName + ";Extended Properties='Excel 12.0;HDR=YES;IMEX=1'";

而且HDR必须为YES,如果改成NO即不可用

 

如果提示未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序,说明没有安装office2007

安装一个组件就成了,叫AccessDatabaseEngine 2007 Office system 驱动程序:数据连接组件,下载地址如下
http://www.microsoft.com/downloads/zh-cn/details.aspx?displaylang=zh-cn&FamilyID=7554f536-8c28-4598-9b72-ef94e038c891

posted @ 2012-05-14 17:15 为乐而来 阅读(22) 评论(0) 编辑

需要引用using System.Net.Mail;

 

方法如下:   

public class Mail
    {
        /// <summary>
        /// 发送电子邮件
        /// </summary>
        /// <param name="MessageFrom">发件人邮箱地址</param>
        /// <param name="MessageTo">收件人邮箱地址</param>
        /// <param name="MessageSubject">邮件主题</param>
        /// <param name="MessageBody">邮件内容</param>
        /// <returns></returns>
        public static bool Send(MailAddress MessageFrom, string MessageTo, string MessageSubject, string MessageBody)
        {
            MailMessage message = new MailMessage();
           
            message.From = MessageFrom;
            message.To.Add(MessageTo); //收件人邮箱地址可以是多个以实现群发
            message.Subject = MessageSubject;
            message.Body = MessageBody;
            message.IsBodyHtml = false; //是否为html格式
            message.Priority = MailPriority.High; //发送邮件的优先等级

            SmtpClient sc = new SmtpClient();
            sc.Host = "smtp.163.com"; //指定发送邮件的服务器地址或IP
            sc.Port = 25; //指定发送邮件端口

            //测试账号:zwtest2012@163.com/zwtest20122012 ,随便注册的一个163账号要是自己的可以填自己的
            sc.Credentials = new System.Net.NetworkCredential("zwtest2012@163.com", "zwtest20122012"); //指定登录服务器的用户名和密码(发件人的邮箱登陆密码)

            try
            {
                sc.Send(message); //发送邮件
            }
            catch(Exception ex)
            {
                //throw(ex);
               
                ExcelDBA.WriteLog("----------------------------");//日志小分割
                ExcelDBA.WriteLog("发送邮件到["+MessageTo.ToString()+"]失败!");
                ExcelDBA.WriteLog("错误信息:"+ex.Message.ToString());
                return false;
            }
            return true;

        }


    }

 

调用如下:

protected void Button1_Click(object sender, EventArgs e)
        {
            MailAddress MessageFrom = new MailAddress("zwtest2012@163.com"); //发件人邮箱地址 ,与方法里面的发送账号必须一致
            string MessageTo = "abc@qq.com"; //收件人邮箱地址
            string MessageSubject = "邮件标题标题"; //邮件主题
            string MessageBody = "这里是邮件内容内容内容。"; //邮件内容


            if (Mail.Send(MessageFrom, MessageTo, MessageSubject, MessageBody))
            {
                Response.Write("发送邮件成功111" + DateTime.Now.ToString());
            }
            else
            {
                Response.Write("发送邮件失败222" + DateTime.Now.ToString());
            }

        }

posted @ 2012-04-20 10:58 为乐而来 阅读(26) 评论(0) 编辑
摘要: 如果项目中引用了其他没有源码的dll文件,并且此dll文件是没有强名称的程序集,则编译时会出现类似 "Assembly generation failed -- 引用的程序集 'xxxxxxxxxxx' 没有强名称" 这样的错误。我这里引用的是ABC.dll程序集(你的dll名称不一样把ABC换成你的dll名称即可),它不是强名称的,则需要进行以下操作:1.打开SDK 命令提示窗口;开始菜单 - 程序 - Visual Studio2008(你的版本可能不一样) - Visual Studio Tools -Visual Studio 2008 命令提示把A阅读全文
posted @ 2012-04-17 12:03 为乐而来 阅读(36) 评论(0) 编辑
摘要: 未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序。说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidOperationException: 未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序。下载2007 Office system 驱动程序:数据连接组件安装http://download.microsoft.com/download/7/0/3/703ffbcb-dc0c-4e19-b0da-1463960fd阅读全文
posted @ 2012-03-29 14:22 为乐而来 阅读(245) 评论(0) 编辑
摘要: public DateTime dt; protected void Page_Load(object sender, EventArgs e) { } protected override void OnPreInit(EventArgs e) { dt = DateTime.Now; base.OnPreInit(e); } protected override void OnLoadComplete(EventArgs e) { base.OnLoadComplete(e); TimeSpan ts = DateTime.Now - dt; Response.Write("加载阅读全文
posted @ 2012-03-22 10:45 为乐而来 阅读(28) 评论(0) 编辑
摘要: 在System.Web.Mvc命名空间ActionResultContentResultEmptyResultFileResultHttpStatusCodeResultHttpNotFoundResultHttpUnauthorizedResultJavaScriptResultJsonResultRedirectResultRedirectToRouteResultViewResultBasePartialViewResultViewResult示例代码:public class ActionResultController : Controller { public ActionResu阅读全文
posted @ 2012-03-21 14:15 为乐而来 阅读(483) 评论(0) 编辑
摘要: 下面是调用DataSet DS = new DataSet(); if (ExcelDBA.ExcelToDataSet(SaveAsPath, DS)) { DataTable DT = DS.Tables[0]; }下面是方法/// <summary> /// 方法一(OLEDB):导出Excel表格第一个工作到DataSet(excel2007,兼容2003) /// </summary> ...阅读全文
posted @ 2012-03-07 14:38 为乐而来 阅读(197) 评论(0) 编辑