[转]关于C#操作WPS和office兼容性的问题_c# 打开ppt用office不使用wps-程序员宅基地

技术标签: office  

           最近一直在做的开发是关于导出word的功能,一开始的做法是在VS中直接添加引用office PIA,Microsoft.Office.Interop.Word,VS08有两个版本,V11和V12,V11对应的是office03,V12对应的office07,试验之后得出结论,这两个PIA的引用只会影响开发机器的使用,就是说要与开发机器的office版本相对应。在目标机器上都是可以使用的,没有问题。
            接下来说一下关于PIA的事情,Primary Interop Assembly,中文解释为:主互程序操作集。通过查阅MSDN 可以了解到,VS在调用COM和COM+组件时会通过解析自动生成 Interop Assembly,即程序操作集,成为IA,这个IA包含我们代码中可以调用的COM的接口,属性一类的东西,可以这样理解,IA就是你的程序和COM组件之间的一个桥接。而PIA是.NET官方生成的IA,这个是开发者根据常用的COM组件生成的专门用于.NET运行环境的IA,具有更高的可靠性。到这一步,经过验证,任何word的操作只需引用.net环境的下
Microsoft.Office.Interop.Word组件,操作EXCEL需要引用.net环境下的Microsoft.Office.Interop.Excel组件。
        关于word的实际操作代码可以查阅相应的API,在后面我会给出我的代码,主要涉及到操作页眉,设置字体,设置间距,插入表格等操作。
       问题来了,销售人员反应有的客户不使用office,只使用WPS。我差点就问WPS是个什么鬼。还是自己查查资料看看中国人写的办公软件吧。WPS发展到目前最新版本为WPS2016。版本就有点多了  02、03 、05、07、10、 13 等等。作为程序员我只关心你的二次开发用的是什么,经过测试,WPS10之前的版本需要自己生成.net支持的IA,WPS2013有两个版本,个人版和企业版,个人版中没有提供PIA,企业版中提供了WPSOFFICEPIA.EXE生成工具,安装之后,就会生成.net环境下可以用的PIA。不知道什么原因,我的VS2008没有在“引用”中没有看到生成的PIA,个人猜测由于我的VS2008是破解版,所以看不到,没什么关系,可以自己找到,在“运行”中输入“C:\windows\assembly\gac-32”回车之后就可以进入一个文件目录,这个目录中就是所有的PIA程序,找到Kingsoft开头的目录,有8个,分别提供了word、excel 、ppt 等操作,每个类型各有两个版本,分别是V8和V9,通过分别引用之后,可以看出 V8是支持老版本WPS的API。例如可以用et.Application创建ET表格,用WPS.Application创建wps文档。V9版本就比较高级了。提供了对于office相同的操作dll。可以直接使用word.application创建word文档或者wps文档。网上有人说V9版本提供了Kwps.Application创建wps文档,我努力一番,也没有找到这种方法,不过目前来说只要V9兼容office对我来说就足够了。
    接下来就是解决wps和office兼容的问题了,目标机器上有三种情况,一是安装了WPS,二是安装了office ,三是同时安装了office和wps。估计第三种也就是我这个开发人员会这么干!!为了兼容性,需要这么干,把office的PIA-->> Microsoft.Office.Interop.Word添加引用 把wps 的V9版PIA--->>Kingsoft.Office.Interop.Wpsapi添加引用,接下来在代码中直接用wps的方法创建word 并执行所有操作。OK !在这种情况下,当目标机器只安装了offcie时,由于V9版本的兼容性会直接生成word。为了可以兼容word03.我在代码中也做了一些其他的操作,可以参考。
    上代码 !!!
 
 
  private void ExportToWps()
        {
            try
            {
                string strFileName = label14.Text + "-" + label15.Text;
                string saveFileName = "";
                SaveFileDialog saveDialog = new SaveFileDialog();
                saveDialog.DefaultExt = "doc";
                saveDialog.Filter = "Word文件|*.doc";
                saveDialog.FileName = strFileName;
                saveDialog.ShowDialog();
                saveFileName = saveDialog.FileName;
                if (saveFileName.IndexOf(":") < 0) return; //被点了取消 
               
            //   Word.ApplicationClass oWordApp = new Word.ApplicationClass();//建立Word   对象,启动word程序  
               Word.Application oWordApp = new Word.Application();
               
                if (oWordApp == null)
                {
                    MessageBox.Show("word版本错误!", "error");
                    return;
                }
                object missing = System.Reflection.Missing.Value;
                object oTemplate = System.Windows.Forms.Application.StartupPath + "\\Normal.dot";
 
              Word.Document oWordDoc = oWordApp.Documents.Add(ref oTemplate, ref missing, ref missing, ref missing);//新建word文档   
 
                oWordApp.Visible = false;//设置Word程序可见,如果为false   那么word不可见   
                //页面设置   
                oWordDoc.PageSetup.TopMargin = oWordApp.CentimetersToPoints(2.5f);       //上   
                oWordDoc.PageSetup.BottomMargin = oWordApp.CentimetersToPoints(2f);//下   
                oWordDoc.PageSetup.LeftMargin = oWordApp.CentimetersToPoints(2.2f);//左   
                oWordDoc.PageSetup.RightMargin = oWordApp.CentimetersToPoints(2.2f);//右   
                添加页眉   林总不需要
                //oWordDoc.ActiveWindow.ActivePane.View.SeekView = Microsoft.Office.Interop.Word.WdSeekView.wdSeekCurrentPageHeader;   //激活页眉的编辑   
                //oWordApp.Selection.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphLeft;   //设置对齐方式   
                //string headtext1 =PcaSettings.GetSettingString (101);
                //oWordApp.Selection.Font.Name = "宋体";   //设置字体   
                //oWordApp.Selection.Font.Size = 10.5f;
                //oWordApp.Selection.Font.UnderlineColor = Microsoft.Office.Interop.Word.WdColor.wdColorAutomatic;
                //oWordApp.Selection.Font.Underline = Microsoft.Office.Interop.Word.WdUnderline.wdUnderlineNone;   //bu添加下划线   
                //oWordApp.Selection.TypeText(headtext1);
                //oWordApp.Selection.Font.Underline = Microsoft.Office.Interop.Word.WdUnderline.wdUnderlineNone;
                //添加页脚   
                string foottext1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                oWordDoc.ActiveWindow.ActivePane.View.SeekView = Word.WdSeekView.wdSeekCurrentPageFooter;   //激活页脚的编辑   
                oWordApp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;
                oWordApp.Selection.Font.Name = "仿宋_GB2312";
                oWordApp.Selection.Font.Size = 8;
                oWordApp.Selection.TypeText(foottext1);
                //添加正文   
                oWordDoc.ActiveWindow.ActivePane.View.SeekView = Word.WdSeekView.wdSeekMainDocument;//激活页面内容的编辑   
                oWordApp.Selection.Font.Name = "黑体";//标题使用黑体
                oWordApp.Selection.Font.Scaling = 100;//视图里面的比例控制
                //oWordApp.Selection.ParagraphFormat.LineSpacingRule = Microsoft.Office.Interop.Word.WdLineSpacing.wdLineSpaceSingle;
                oWordApp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;
                oWordApp.Selection.Font.Size = 16;
                oWordApp.Selection.Font.Bold = 1;
                oWordApp.Selection.TypeText(label14.Text);//主标题
                oWordApp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;
                oWordApp.Selection.TypeParagraph();//另起一段  
                oWordApp.Selection.ParagraphFormat.LineSpacingRule = Word.WdLineSpacing.wdLineSpaceSingle;
                oWordApp.Selection.TypeText(label15.Text);//副标题
                oWordApp.Selection.Font.Name = "宋体";
                oWordApp.Selection.TypeParagraph();//另起一段  
                //oWordApp.Selection.TypeParagraph();//另起一段   
                oWordApp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft;
                oWordApp.Selection.Font.Size = 11;
                oWordApp.Selection.Font.Bold = 0;
                #region 项不加粗
                //oWordApp.Selection.TypeText(layoutControlItem3.Text + label6.Text); oWordApp.Selection.TypeText(",    ");
                //oWordApp.Selection.TypeText(layoutControlItem4.Text + label1.Text);
                //oWordApp.Selection.TypeParagraph();//另起一段 
                //oWordApp.Selection.TypeText(layoutControlItem5.Text + label2.Text); oWordApp.Selection.TypeText(",    ");
                //oWordApp.Selection.TypeText(layoutControlItem6.Text + label3.Text);
                //oWordApp.Selection.TypeParagraph();//另起一段 
                //oWordApp.Selection.TypeText(layoutControlItem7.Text + label4.Text); oWordApp.Selection.TypeText(",    ");
                //oWordApp.Selection.TypeText(layoutControlItem8.Text + label5.Text);
                //oWordApp.Selection.TypeParagraph();//另起一段 
                //oWordApp.Selection.TypeText(layoutControlItem10.Text);
                oWordApp.Selection.TypeParagraph();//另起一段 
                //oWordApp.Selection.TypeText(label10.Text);
                //SectDoc doc = GetDocument() as SectDoc;
                //if (doc.FileCount > 1)
                //{
                //    switch (doc.FileCount)
                //    {
                //        case 2:
                //            {
                //                oWordApp.Selection.TypeParagraph();//另起一段 
                //                oWordApp.Selection.TypeText(layoutControlItem12.Text);
                //                oWordApp.Selection.TypeParagraph();//另起一段 
                //                oWordApp.Selection.TypeText(label17.Text);
                //                oWordApp.Selection.TypeParagraph();//另起一段 
                //                oWordApp.Selection.TypeText(layoutControlItem15.Text + label11.Text);
 
                //                if (label12.Visible)
                //                {
                //                    oWordApp.Selection.TypeText(layoutControlItem16.Text + label12.Text);
                //                }
                //                if (label13.Visible)
                //                {
                //                    oWordApp.Selection.TypeText(layoutControlItem18.Text+label13.Text);
                //                }
                //                oWordApp.Selection.TypeParagraph();//另起一段 
                //                oWordApp.Selection.TypeText(label8.Text+";");
                //                oWordApp.Selection.TypeText(label9.Text);
                //                //oWordApp.Selection.TypeParagraph();//另起一段 
                //                break;
                //            }
                //        case 3:
                //            {
                //                oWordApp.Selection.TypeParagraph();//另起一段 
                //                oWordApp.Selection.TypeText(layoutControlItem12.Text);
                //                oWordApp.Selection.TypeParagraph();//另起一段 
                //                oWordApp.Selection.TypeText(label17.Text);
                //                oWordApp.Selection.TypeParagraph();//另起一段 
                //                oWordApp.Selection.TypeText(layoutControlItem14.Text);
                //                oWordApp.Selection.TypeParagraph();//另起一段 
                //                oWordApp.Selection.TypeText(label19.Text);
                //                oWordApp.Selection.TypeParagraph();//另起一段 
                //                oWordApp.Selection.TypeText(layoutControlItem15.Text + label11.Text);
                //                //oWordApp.Selection.TypeParagraph();//另起一段
                //                break;
                //            }
                //        default:
                //            break;
                //    }
                //}
                //else
                //{
                //    oWordApp.Selection.TypeParagraph();//另起一段 
                //    oWordApp.Selection.TypeText(layoutControlItem15.Text + label11.Text); oWordApp.Selection.TypeText(", ");
                //    oWordApp.Selection.TypeText(layoutControlItem16.Text + label12.Text); oWordApp.Selection.TypeText(", ");
                //    oWordApp.Selection.TypeText(layoutControlItem18.Text + label13.Text); oWordApp.Selection.TypeText(", ");
                //    oWordApp.Selection.TypeParagraph();//另起一段
                //}
                #endregion
                oWordApp.Selection.Font.Bold = 1; oWordApp.Selection.TypeText(layoutControlItem3.Text);//加粗标题
                oWordApp.Selection.Font.Bold = 0; oWordApp.Selection.TypeText(label6.Text);//不加粗的值
                oWordApp.Selection.TypeText(",    ");//各项之间间隔
                oWordApp.Selection.Font.Bold = 1; oWordApp.Selection.TypeText(layoutControlItem4.Text);//加粗标题
                oWordApp.Selection.Font.Bold = 0; oWordApp.Selection.TypeText(label1.Text);//不加粗的值
                oWordApp.Selection.TypeText(",    ");//各项之间间隔
                oWordApp.Selection.TypeParagraph();//另起一段 
                oWordApp.Selection.Font.Bold = 1; oWordApp.Selection.TypeText(layoutControlItem5.Text);//加粗标题
                oWordApp.Selection.Font.Bold = 0; oWordApp.Selection.TypeText(label2.Text);//不加粗的值
                oWordApp.Selection.TypeText(",    ");//各项之间间隔
                oWordApp.Selection.Font.Bold = 1; oWordApp.Selection.TypeText(layoutControlItem6.Text);//加粗标题
                oWordApp.Selection.Font.Bold = 0; oWordApp.Selection.TypeText(label3.Text);//不加粗的值
                oWordApp.Selection.TypeText(",    ");//各项之间间隔
                oWordApp.Selection.TypeParagraph();//另起一段 
                oWordApp.Selection.Font.Bold = 1; oWordApp.Selection.TypeText(layoutControlItem7.Text);//加粗标题
                oWordApp.Selection.Font.Bold = 0; oWordApp.Selection.TypeText(label4.Text);//不加粗的值
                oWordApp.Selection.TypeText(",    ");//各项之间间隔
                oWordApp.Selection.Font.Bold = 1; oWordApp.Selection.TypeText(layoutControlItem8.Text);//加粗标题
                oWordApp.Selection.Font.Bold = 0; oWordApp.Selection.TypeText(label5.Text);//不加粗的值
                oWordApp.Selection.TypeText(",    ");//各项之间间隔
                oWordApp.Selection.TypeParagraph();//另起一段 
                oWordApp.Selection.Font.Bold = 1; oWordApp.Selection.TypeText(layoutControlItem10.Text);//加粗标题
                oWordApp.Selection.Font.Bold = 0; oWordApp.Selection.TypeText(label10.Text);//不加粗的值
                SectDoc doc = GetDocument() as SectDoc;
                if (doc.FileCount > 1)
                {
                    switch (doc.FileCount)
                    {
                        case 2:
                            {
                                oWordApp.Selection.TypeParagraph();//另起一段 
                                oWordApp.Selection.Font.Bold = 1; oWordApp.Selection.TypeText(layoutControlItem12.Text);//加粗标题
                                //oWordApp.Selection.TypeParagraph();//另起一段 
                                oWordApp.Selection.Font.Bold = 0; oWordApp.Selection.TypeText(label17.Text);//不加粗的值
                                oWordApp.Selection.TypeParagraph();//另起一段 
                                oWordApp.Selection.Font.Bold = 1; oWordApp.Selection.TypeText(layoutControlItem15.Text);//加粗标题
                                oWordApp.Selection.Font.Bold = 0; oWordApp.Selection.TypeText(label11.Text);//不加粗的值
                                oWordApp.Selection.TypeText(",    ");//各项之间间隔
                                if (label12.Visible)
                                {
                                    oWordApp.Selection.TypeText(layoutControlItem16.Text + label12.Text);
                                }
                                if (label13.Visible)
                                {
                                    oWordApp.Selection.TypeText(layoutControlItem18.Text + label13.Text);
                                }
                                //oWordApp.Selection.TypeParagraph();//另起一段 
                                break;
                            }
                        case 3:
                            {
                                oWordApp.Selection.TypeParagraph();//另起一段 
                                oWordApp.Selection.TypeText(layoutControlItem12.Text);
                                oWordApp.Selection.TypeParagraph();//另起一段 
                                oWordApp.Selection.TypeText(label17.Text);
                                oWordApp.Selection.TypeParagraph();//另起一段 
                                oWordApp.Selection.TypeText(layoutControlItem14.Text);
                                oWordApp.Selection.TypeParagraph();//另起一段 
                                oWordApp.Selection.TypeText(label19.Text);
                                oWordApp.Selection.TypeParagraph();//另起一段 
                                oWordApp.Selection.TypeText(layoutControlItem15.Text + label11.Text);
                                //oWordApp.Selection.TypeParagraph();//另起一段
                                break;
                            }
                        default:
                            break;
                    }
                }
                else
                {
                    oWordApp.Selection.TypeParagraph();//另起一段 
                    oWordApp.Selection.Font.Bold = 1; oWordApp.Selection.TypeText(layoutControlItem15.Text);//加粗标题
                    oWordApp.Selection.Font.Bold = 0; oWordApp.Selection.TypeText(label11.Text);//不加粗的值
                    oWordApp.Selection.TypeText(",    ");//各项之间间隔
                    oWordApp.Selection.Font.Bold = 1; oWordApp.Selection.TypeText(layoutControlItem16.Text);//加粗标题
                    oWordApp.Selection.Font.Bold = 0; oWordApp.Selection.TypeText(label12.Text);//不加粗的值
                    oWordApp.Selection.TypeText(",    ");//各项之间间隔
                    oWordApp.Selection.Font.Bold = 1; oWordApp.Selection.TypeText(layoutControlItem18.Text);//加粗标题
                    oWordApp.Selection.Font.Bold = 0; oWordApp.Selection.TypeText(label13.Text);//不加粗的值
                    //oWordApp.Selection.TypeParagraph();//另起一段 
                }
                oWordApp.Selection.Font.Size = 11.5f;
                //表插入行
                object start = oWordApp.Selection.Start;//在内容的最后插入表格
                object end = oWordApp.Selection.End; ;
                Word.Range tableLocation = oWordDoc.Range(ref start, ref end);
                oWordDoc.Tables.Add(tableLocation, dataGridView1.RowCount + 1, dataGridView1.ColumnCount, ref missing, ref missing);
                Word.Table newTable = oWordDoc.Tables[1];
                //设置表格的格式
                newTable.Borders.InsideLineStyle = Word.WdLineStyle.wdLineStyleSingle;//内实体边框
                newTable.Borders.OutsideLineStyle = Word.WdLineStyle.wdLineStyleSingle;//外实体边框
                newTable.AllowAutoFit = true;
                newTable.AutoFitBehavior(Word.WdAutoFitBehavior.wdAutoFitContent);
                //写入标题
                for (int i = 0; i < dataGridView1.ColumnCount; i++)
                {
                    newTable.Cell(1, i + 1).Range.Text = dataGridView1.Columns[i].HeaderText;
                }
                //写入数值
                for (int r = 0; r < dataGridView1.Rows.Count; r++)
                {
                    for (int i = 0; i < dataGridView1.ColumnCount; i++)
                    {
                        //电阻计算                    
                        if (dataGridView1.Rows[r].Cells[i].Value == null)
                        {
                            newTable.Cell(r + 2, i + 1).Range.Text = "";
                        }
                        else
                        {
                            newTable.Cell(r + 2, i + 1).Range.Text = dataGridView1.Rows[r].Cells[i].Value.ToString();
                        }
                        if (i == 6)
                        {
                            newTable.Cell(r + 2, i + 1).Range.ParagraphFormat.Alignment =Word.WdParagraphAlignment.wdAlignParagraphCenter;
                        }
                        else if (i == 7)
                        {
 
                        }
                        else
                        {
                            newTable.Cell(r + 2, i + 1).Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphRight;
                        }
                    }
                    System.Windows.Forms.Application.DoEvents();
                }
                object wdUnits;
                wdUnits = Word.WdUnits.wdLine;
                object nCount = dataGridView1.RowCount + 1+1;
                oWordApp.Selection.MoveDown(ref wdUnits, ref nCount, ref missing);
                oWordApp.Selection.Font.Size = 12;
                oWordApp.Selection.Font.Bold = 1;//防腐层和综合等级项加粗显示
                oWordApp.Selection.TypeText(label8.Text); oWordApp.Selection.TypeText(", ");
                oWordApp.Selection.TypeText(label9.Text);
                string strfilename = saveFileName;
                object filename = strfilename;
                //保存文档为word2000格式   
                oWordDoc.SaveAs2000(ref   filename, ref   missing, ref   missing, ref   missing, ref   missing, ref   missing, ref   missing, ref   missing, ref   missing, ref   missing, ref   missing);
                MessageBox.Show(strFileName + "导出成功", "提示", MessageBoxButtons.OK);
 
                //以下关闭Word程序   
                object nochanges = Word.WdSaveOptions.wdDoNotSaveChanges;
                oWordApp.Quit(ref   nochanges, ref   missing, ref   missing);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

 

 
 

---------------------
作者:leader0414
来源:CSDN
原文:https://blog.csdn.net/yanpengliumin/article/details/50344799
版权声明:本文为作者原创文章,转载请附上博文链接!
内容解析By:CSDN,CNBLOG博客文章一键转载插件

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/admans/article/details/107336217

智能推荐

HDU 1455 Sticks(DFS+剪枝)_基本思路:设所有木棍的总长度为 sum, 最终的答案是 l。首先,sum一定能被 l 整除,l-程序员宅基地

文章浏览阅读1.3k次。题目链接~~> 这题确实很经典,需要强烈的剪枝。解题思路: 一个接一个的把木棍拼起来,最后把木棍用光。* 关键的地方是几个剪枝技巧:* 设所有木棍的总长度为 Sum, 最终的答案(长度)是 L。 * 1. 首先要明白, Sum一定要能被 L 整除。_基本思路:设所有木棍的总长度为 sum, 最终的答案是 l。首先,sum一定能被 l 整除,l

SQLAlchemy的使用(二)--使用Automap-程序员宅基地

文章浏览阅读6.7k次。使用SQLAlchemy四部曲:首先总结上一章的内容:使用create_engine()连接数据库Base = declarative_base() 生成orm基类,用于创建classesBase.metadata.create_all(engine) 关联engine使用metadata创建数据库表使用 session = Session(engine) 创建一个会话,便于后面对数据...

引用--交叉引用--题注--书签---设置快捷键方法_word 插入交叉引用快捷键-程序员宅基地

文章浏览阅读1w次,点赞4次,收藏3次。1、论文里得图片-表格--右键--选择插入题注-题注可以自定义;自己可以新建标签;2、对于文中想输入图片-表格--编号;可以用”交叉引用“设置快捷键--Alt+J;具体设置方法:(1)给[插入]-[引用]-[题注]---设置快捷键:Alt+Ttips:[工具]-[自定义]-[键盘]-[编辑]-[InsertCaption]--设置-[Alt+T]-确定;(2)给[插入]--[引用]--[交叉引用]..._word 插入交叉引用快捷键

深入浅出MFC:DDX_Control本质探究-程序员宅基地

文章浏览阅读1.6k次。注:以下以名为Test的对话框工程为例讲解对话框程序中,如果我们有拖标准控件到界面中,并且有和控件类变量绑定,则会有void CTestDlg::DoDataExchange(CDataExchange* pDX){ CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_BTN_TEST, m_testBtn); D..._ddx_control

神经网络学习3【计算流程公式推导+Python代码框架】_神经网络计算流程-程序员宅基地

文章浏览阅读593次。在上一篇文章 神经网络学习2【分类器+升华至神经元 搭建神经网络】中由浅入深的理解了从分类器开始如何理解神经网络的内部计算。接下来我们借用数学工具去逐步推导其计算公式,并同时建立出Python代码框架。1.神经网络公式推导1.1两层神经网络计算尝试使用只有两层、每层两个神经元的较小的神经网络,来演示神经网络如何工作:两个输入值分别为1.0和0.5,每个节点使用激活函数。使用一些随机权重:第一层仅作输入层,不需要使用激活函数。第二层中需要做一些计算,以及使用激活函数,当然,在这个简单的网络_神经网络计算流程

用 Vue3 手撕了个企业级项目,真香!-程序员宅基地

文章浏览阅读1.9k次。最近几年,随着短视频、小程序、直播带货的火爆,前端开发工程师越来越热门,薪资待遇也快接近后端开发工程师了,前端领域进化为内卷重灾区。然而伴随着 Vue 3.0 的发布,前端技术也迎来了一次大革新,像是字节跳动、腾讯等开始重点考察,前端程序员对 Vue 3 框架的理解和实际应用能力。不再是当年懂个生命周期、虚拟 DOM,就可以轻松进大厂的时代了。同时网上也掀起了一股学习 Vue 3 的热潮,面对着网..._手撕vue3 双向

随便推点

[Paper每周读]KDD2016 GLMix: Generalized Linear Mixed Models For Large-Scale-程序员宅基地

文章浏览阅读670次。论文链接:GLMix 文章来自于LinkedIn Job Recommendation的团队。文章想说的事情其实很简单,那就是用了一个Generalized Linear Mixed Model,在Job Recommendation的Task上效果还不错。传统的评分模型,用到Linear Regression Model; 传统的投票模型,用到Logistic Regression Model_glmix

还在用if判空?试试Optional吧!-程序员宅基地

文章浏览阅读325次。我相信,每一个Java程序员都必然会遇到过这样一个异常:NullPointerException(NPE),空指针异常。这个异常让我们很痛疼,如果写的代码不够鲁棒,导致尝试访问空对象的方法或字段时就会抛出这个异常。因此合格的程序员都会在使用对象前进行判空,常见的是用if条件判断,如果对象不为空则可以继续进行访问对象字段和方法的操作,如果对象为空那么不可以进行访问对象的字段和方法的操作。常用编程范..._空判断有没有必要用optional

linux ntfs 速度慢,将U盘磁盘格式改成NTFS解决u盘复制速度慢问题-程序员宅基地

文章浏览阅读786次。1、我们首先要看看U盘的文件系统是哪个?打开计算机-可移动磁盘-右击属性。2、目前打多数U盘采用的都是FAT32格式,这也是大多数USB2.0船速速度比较慢的原因。我们先用文件大小测试一个它的读写速度,格子这里用的是一个大概四百兆的文件,为了让大家更直观的看到真实结果,我们以直接拷贝文件看看。3、如果你的文件系统是FAT32的话,我们就需要进行一些优化,需要将U盘磁盘格式改成NTFS格式。我们可以..._金士顿ntfs格式linux传输慢

Apache Zeppelin安装_apache zeppelin 正式版本-程序员宅基地

文章浏览阅读1.5k次。欢迎来到Apache Zeppelin!本页面是有助于开始使用的说明。安装Apache Zeppelin正式支持并在以下环境下进行测试:NameValueOracle JDK1.7 (set JAVA_HOME)OSMac OSX Ubuntu 14.X _apache zeppelin 正式版本

iOS之UIImageView和UIImage_uiimageview image-程序员宅基地

文章浏览阅读5.1k次。1.UIImageView中的视图内容显示模式 UIImageView *imageV=[[UIImageViewalloc]init]; imageV.scaleToFill------默认缩放填充; imageV.scaleAspectfit-------有留白; imageV.AspectFill------自适应填充,视图会被裁剪;..._uiimageview image

解决 /dev/mapper/centos-root 空间不足的问题-程序员宅基地

文章浏览阅读4.6k次。Last login: Mon Feb 25 04:53:40 2019 from 10.0.0.3[root@vmhzpmysql ~]# df -hlFilesystem Size Used Avail Use% Mounted on/dev/mapper/centos-root 4.4G 3.5G 962M 79% /devtmpfs ..._ivextend -l 1.95t /dev/mapper/centos-rootrounding size to boundary between p