要用VisualStudio2010做一个信息管理系统,

家里的电脑和办公处的电脑中安装的数据库版本不一样,

家里的是SQLServer2008,办公处的是SQLServer2014,SQLServer数据库具有向下兼容性,

也就是说2008的数据库可以在2014版本上修改;

但是2014一旦修改过的数据库将不能再通过2008版本的来进行附加和修改了。

为了想赶进度,重新下载了一个SQLServer2014,安装过程中都还算顺利,但是出现了这个问题,

提示:需要更新以前的Visual Studio 2010 实例,

查了一下大多都在说的意思就是:

SQLServer2014比起VisualStudio2010来讲是贵族,2010配的上2008但是配不上2014

所以需要对VS2010的相关配置进行一下更新,然后我就找到了相关的更新工具包:

【cn_visual_studio_2010_sp1_x86_x64_dvd_651704.iso】

大喇叭广播啦==>不要着急下载安装,所以下载地址我在文章末尾再追加。准备工作还没有完嘞!!!

1、同时按下windows键+R键---输入regedit---点击确定

2、点击确定后会打开“注册表编辑器”

找到HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VSTO Designtime Setup

然后展开VSTO Designtime Setup这个目录,找到VS10之后右击-->删除

只删除这一个,其他的不用管噢

3、这个时候该下载安装那个更新文件了

链接:https://www.sxzhongrui.com/s/1SfkSQy83O__HvB6ZxHK7jg? 提取码:xxxx?

这里有它的压缩包,下载之后解压,然后从目录中找到Setup.exe? ??

双击打开就可以进行安装啦!

ps1:我在从发现这个问题的时候到安装完这个更新文件期间都没有管SQLServer2014的安装,一直停在最开始提示的那个界面。等着这些工作都做完了,然后点击了那个页面的“重新运行”,之后不再显示错误,然后就继续安装啦。

ps2:你们可能会问,我的电脑上已经装了SQLServer2008,那么再装SQLServer2014会不会冲突?刚开始我也想过这个问题,但是2008这个版本里面我的数据库比较多,所以不想一一分离再备份了,想直接安装下2014看看行不行,我在上网查的时候发现好多再说要把2008卸载掉,但是我没有卸载。所以就出现了一个问题,哈哈。

遇到了这个问题,因为我电脑上已经安装了SQLServer2008,而当初2008的实例名就是默认的MSSLQSERVER,

所以我就把这里给改了,改成了MSSLQSERVER2,就是在原基础上追加了个2,后面就OK啦,

安装成功后这里也就是服务器的名称后面就是********2啦。

出处:https://www.sxzhongrui.com/ouyangyanlan/article/details/48597951

说到操作excel,可能用java来写更方便一些。mfc确实不太适合这种操作,个人感觉要比java复杂一点,尤其是在数据类型的转换和操作上,java简单有效。下面进入正题,环境为vs2010。

1. 这个小的mfc程序实现的是读取excel中的数据,然后经过数据处理,生成一个新的excel来存放处理结果。

2.我们用到的技术是通过OLE/COM对excel进行操作。

步骤:

1.新建MFC对话框。注意勾选自动化,否则后面加入不了需要的库,导致启动服务失败等错误。有的博客说需要加入

1 if (!AfxOleInit())

2 {

3 AfxMessageBox(IDP_OLE_INIT_FAILED);

4 return FALSE;

5 }

笔者实验发现自己的环境自动添加了这部分代码。

? ? ? ? 2.?向项目工程中添加基本的7个类(?Excel?作为?OLE/COM?库插件,定义好了各类交互的接口,这些接口是跨语言的接口。?VC?可以通过导入这些接口,并通过 ? 接口来对?Excel?的操作),?由于本文只关心对?Excel?表格中的数据的读取,主要关注7个接_?Application、?Workbooks?、?_Workbook?、Worksheets?、?_Worksheet?、Range、Font?。

VS2012?导入?OLE/COM?组件的接口的步骤为:?项目->类向导->添加类->类型库中的MFC类?,先选择要导入的组件所在的路径,即?Excel.exe?所在的路 ? ? ?径,然后再选择?要导入的?Excel?类型库中的接口。组件路径一般为C:\Program Files\Microsoft Office\Office15\EXCEL.exe;格式类似。

? ? ? ? 3. 导入之后需要“#import?"C:\\Program?Files\\Microsoft?Office\\Office12\\EXCEL.EXE"?no_namespace”注释掉,然后添加头文 ? ? ? ? ? ? ? ? 件:#include?到上面7个文件中去。

4.如果有错误error?C2059双击error?C2059,将VARIANT?DialogBox()改成VARIANT?_DialogBox()再次编译,通过!!

5.读写excel。

在对话框头文件中*Dlg.h定义变量

1 //定义接口类变量

2 CApplication app;

3 CWorkbook book;

4 CWorkbooks books;

5 CWorksheet sheet;

6 CWorksheets sheets;

7 CRange range;

8 CMyFont font;

9 CRange cols;

10 LPDISPATCH lpDisp;

以上部分来自网络,经试验,正确无误。

6.功能可以分为三个模块,第一个模块是一个文件选择器,第二个模块是读取excel,第三个模块为创建excel.

(1)文件选择部分

void CTXDlg::OnBnClickedButton1(){// TODO: 在此添加控件通知处理程序代码CFileDialog OpenDlg(true);if(OpenDlg.DoModal() == IDOK){CEdit* ECtr = (CEdit *)GetDlgItem(IDC_EDIT1);fileNameTrans = OpenDlg.GetPathName();ECtr->SetWindowText(fileNameTrans);}}

(2)导入excel并读取数据,放到list里面暂存待处理

void CTXDlg::OnBnClickedButton2(){// TODO: 在此添加控件通知处理程序代码int mCount=0;CString str,str1;double num1,num2;double d_skewing =0.004;COleVariant vResult;COleVariant covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);if(!app.CreateDispatch(_T("Excel.Application"))){this->MessageBox(_T("无法创建Excel应用!"));return;}books.AttachDispatch(app.get_Workbooks());lpDisp = www.sxzhongrui.com(fileNameTrans,covOptional, covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional);book.AttachDispatch(lpDisp);sheets.AttachDispatch(book.get_Worksheets());//得到当前活跃sheetlpDisp = book.get_ActiveSheet();sheet.AttachDispatch(lpDisp);//获得行数CRange usedRange;CRange mRange;usedRange.AttachDispatch(sheet.get_UsedRange());mRange.AttachDispatch(usedRange.get_Rows(),true);int count = mRange.get_Count();usedRange.ReleaseDispatch();mRange.ReleaseDispatch();//读取一个值range.AttachDispatch(sheet.get_Cells());range.AttachDispatch(range.get_Item(COleVariant((long)1),COleVariant((long)2)).pdispVal);vResult = range.get_Value2();if(vResult.vt == VT_BSTR){str1 = vResult.bstrVal;}else if(vResult.vt == VT_R8){str1.Format(L"%f",vResult.dblVal);}else{str1 = "数据类型错误!";this->MessageBox(str1);return;}num1 = _wtof(str1.GetBuffer(0));mList1.AddTail(1);mList2.AddTail(str1);//添加第一个值++mCount;//读取单元格值for(int i=2;iMessageBox(str);break;}num2 = _wtof(str.GetBuffer(0));if(num2-num1>=0.004){mList1.AddTail(i);mList2.AddTail(str);num1 = num2;++mCount;}range.ReleaseDispatch();}books.Close();sheet.ReleaseDispatch();book.ReleaseDispatch();books.ReleaseDispatch();app.ReleaseDispatch();app.Quit();this->MessageBox(_T("数据已导入,请点击导入按键!"));}

(3)对读取的数据进行处理,结果保存,生成新的excel

void CTXDlg::OnBnClickedButton3(){// TODO: 在此添加控件通知处理程序代码if(!app.CreateDispatch(_T("Excel.Application"),NULL)){AfxMessageBox(_T("启动Excel服务器失败!"));return ;}//判断当前的Excel的版本CString strExcelVersion = app.get_Version();int iStart =0;strExcelVersion = strExcelVersion.Tokenize(_T("."),iStart);if(_T("11")==strExcelVersion){AfxMessageBox(_T("当前的Excel的版本是2003"));}else if(_T("12")==strExcelVersion){AfxMessageBox(_T("当前的Excel的版本是2007"));}else{AfxMessageBox(_T("当前的Excel的版本是其他版本"));}app.put_Visible(true);app.put_UserControl(false);//得到工作薄容器books.AttachDispatch(app.get_Workbooks());//打开一个工作薄,如不存在,则创建CString strBookPath = _T("D:\\tmp.xls");try{lpDisp = www.sxzhongrui.com(strBookPath,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing);book.AttachDispatch(lpDisp);}catch(...){lpDisp = books.Add(vtMissing);book.AttachDispatch(lpDisp);}//得到工作薄中的sheet的容器sheets.AttachDispatch(book.get_Sheets());//打开一个sheet,如不存在,就新增一个sheetCString strSheetName = _T("NewSheet");try{//尝试打开一个已有的sheetlpDisp = sheets.get_Item(_variant_t(strSheetName));sheet.AttachDispatch(lpDisp);}catch(...){//创建一个新的sheetlpDisp = sheets.Add(vtMissing,vtMissing,_variant_t((long)1),vtMissing);sheet.AttachDispatch(lpDisp);sheet.put_Name(strSheetName);}range.AttachDispatch(sheet.get_Cells());//插入数据POSITION ps1 = mList1.GetHeadPosition();POSITION ps2 = mList2.GetHeadPosition();int aa;CString mStr1,mStr2,strr;for(int i=1;ps1!=NULL&&ps2!=NULL;mList1.GetNext(ps1),mList2.GetNext(ps2),i++){iCells.AttachDispatch(range.get_Item(COleVariant((long)i),COleVariant((long)1)).pdispVal,true);aa = mList1.GetAt(ps1);strr.Format(L"%d",aa);iCells.put_Value2(COleVariant(strr));iCells.AttachDispatch(range.get_Item(COleVariant((long)i),COleVariant((long)2)).pdispVal,true);strr = mList2.GetAt(ps2);iCells.put_Value2(COleVariant(strr));}//www.sxzhongrui.com();range.ReleaseDispatch();sheet.ReleaseDispatch();sheets.ReleaseDispatch();book.ReleaseDispatch();books.ReleaseDispatch();app.Quit();app.ReleaseDispatch();}

---------根据自己程序需要补充区域----------------------------------------------------------------

?

1》sharepoint 2010开发概述;2》VS2010 开发SHAREPOINT 2010;3》sharepoint 2010 UI 改进;4》sharepoint 2010 LISTS;5》sharepoint 2010 LINQ;6》sharepoint 2010 Client Object Model;7》SharePoint 2010 工作流;8》sharepoint 2010 服务架构;9》sharepoint 2010 整合外部数据;10》sharepoint 2010 企业信息管理ECM;11》sharepoint 2010 搜索;12》sharepoint 2010 沙盒解决方案;13》sharepoint 2010 声明认证的安全。

?

1》sharepoint 2010开发概述;????? a.新功能????? b.开发概述????? c.新开发工具????? d.与powershell整合

? 2007,2010介绍:???? SHAREPOINT 2007:站点引擎,协作服务(EMAIL,SEARCH,WORK FLOW);???? SHAREPOINT 2010:MSS,WSF,支持客户端多系统开发;???? SHAREPOINT 2010介绍:基于WEB的企业级商业协作平台;????????????????? 特点:低成本的统一基础架构;对业务需求快速相应;? a. 新功能:?????? 改进UI,UX:???????????? RIBBON???????????? 即时编辑???????????? DEMO BLANK ?????? 更好的设计,开发工具;?????? 更好的集成POWERSHELL;?????? 改进LIST,EVENT?????? 新的WSS集成LINQ;?????? 新的客户端对象模型和运行时; ?????? 改进对工作流开发的支持;?????? 新的可扩展应用程序架构;?????? 改进针圣外部数据的集成; ?????? 新的连接器框架改进搜索框架;?????? 用户解决方案,部分信任的代码;?????? 声明式安全认证;

????????????????????? ?? b . 术语回忆:SPWEBAPPLICATION,SPSITE,SPWEB,SPLIST,SPLISTITEM,SPFILE,SPFOLDER?????? ? static void Main()? {? string url="http://sp249:35253/";

?Datatable tb=new datatable();

? using (spsite sitecollection=new spsite(url))?? {??????using(spweb web=sitecollection.openweb())

???????? {

????????????? datacolumn dc=new datacolumn("name");

???????????? ?tb.columns.add(dc);

?

?????????????? SPlist list=web.lists["inputdate1"];

?????????????? splistitemcollection items=list.items;?????????????? for(int i=0;i

??????????????????? {

?????????????????????????? datarow dr=dt.newrow();

??????????????????????????? splisteitem item=items[i];

??????????????????????????? dr["name"]=item["name"].tostring();

??????????????????? }

???????? }??? }? }

?? c. 新开发工具:?????? VS2010 团队开发;?????? SHAREPOINT DESIGNER:展示各对象结构关系;??????????????????????????? 定制化工作可以导出到.WSP文件导入到VS2010;?????? ?????? 调试仪表板:???????? 调试,代码路径,?????? SHAREPINT 2010 调试代码:??????????? 要以管理员身份运行VS2010,附加到IIS工作进程W3WP.EXE

?? d. 与POWERSHELL整合????? POWERSHELL介绍:基于命今行和脚本管理;???????????????????? 代替命今行的新工具;强大的脚本一环境;???????????????? CMDLETS;???????????????? 管道和格式化;? ???????????????? 基于的PROVIDER资源存取模型????? 使用powershell:?????????????????? .ps1?????????????????? snap-in?????????????????? 自定议powershell snap-in

???????????????????

?private string ReplaceString(string inputstr)

?{

?? string strreturn=inputstr.replace("&",&").replace("\",\\'").replace("\r\n","").tostring();

?? return strreturn;

}