[轉]關于C#操作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();//另起一段//}#endregionoWordApp.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博客文章一鍵轉載插件

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/284833.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/284833.shtml
英文地址,請注明出處:http://en.pswp.cn/news/284833.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AI入門到進階到放棄

前些天&#xff0c;發現了一個比較好的AI學習網站&#xff0c;有很多數學基礎&#xff0c;也通俗易懂&#xff0c;我自己先記錄起來防止忘記&#xff0c;猛戳這里&#xff08;學習網站&#xff09;

OAuth認證與授權

什么是OAuth授權&#xff1f; 一、什么是OAuth協議OAuth(開放授權)是一個開放標準。允許第三方網站在用戶授權的前提下訪問在用戶在服務商那里存儲的各種信息。而這種授權無需將用戶提供用戶名和密碼提供給該第三方網站。OAuth允許用戶提供一個令牌給第三方網站&#xff0c;一個…

IO的多路復用

一、概念: 使單線程或者單進程同時監測若干個文件描述符具有執行的能力&#xff1b; 二、作用: 類似于多進程和多線程 三、必要性: 多線程或者多進程對資源需求較高 四、IO模型: 1.阻塞io 不設置的話系統默認 2.非阻塞io 在阻塞io的基礎上調整為不在阻塞狀態 用到的函數接口…

C# 禁用 全局快捷鍵

本文經原作者授權以原創方式二次分享&#xff0c;歡迎轉載、分享。原文作者&#xff1a;唐宋元明清原文地址&#xff1a;https://www.cnblogs.com/kybs0/p/12558056.htmlC# 禁用 全局快捷鍵給軟件添加快捷鍵時&#xff0c;經常遇到其它軟件或者系統已設置的快捷鍵&#xff0c;導…

SegmentFault Hackathon 文藝復興

我有一個 idea&#xff0c;我想實現它&#xff0c;我正實現它&#xff0c;我已實現它。世界上存在一些好奇心旺盛、不愛墨守成規的人&#xff0c;略微偏執但又極度投入的他們崇尚自由&#xff0c;熱衷用技術實現自己的想法&#xff0c;他們帶著不羈的態度生活&#xff0c;利用編…

臥槽!VS Code 上竟然也能畫流程圖了???

作為一款開源的主流代碼編輯器&#xff0c;VSCode 在發布之后一直受到不少開發者的喜愛。 此前&#xff0c;我們也曾在公眾號上分享過多篇文章&#xff0c;向大家推薦了不少 VSCode 上比較實用&#xff08;或沙雕&#xff09;的插件。因此&#xff0c;有很多水友也經常調侃道&…

【QGIS入門實戰精品教程】14.1:QGIS如何加載各種在線地圖?

文章目錄 一、XYZ Tiles連接方式二、插件添加三、WMS/WMTS/OWS連接方式一、XYZ Tiles連接方式 1. 加載OpenStreetMap QGIS默認可以加載OpenStreetMap地圖。在左側點擊XYZ Tiles,默認下面有個OpenStreetMap選項,雙擊打右側會顯示地圖,如下圖所示: 在OpenStreetMap上右鍵→…

Oracle11g不能導出空表問題

ORACLE 11g 用exp命令導出庫文件備份時&#xff0c;發現只能導出來一部分表而且不提示錯誤&#xff0c;之前找不到解決方案只能把沒導出來的表重新建建立。后來發現是所有的空表都沒有導出來。于是想好好查查,因為在以前的10g版本中沒有這樣的問題。查資料發現Oracle 11g中有個…

SkiaSharp 之 WPF 自繪時鐘(案例版)

SkiaSharp是一個跨平臺2D圖形API&#xff0c;用于.NET平臺&#xff0c;基于Googles Skia Graphics庫(skia.org網站). 它提供了一個全面的2D API&#xff0c;可以跨移動、服務器和桌面模型來渲染圖像。該圖形庫可實現獲取指定坐標像素值、繪制2d圖形、繪制文字&#xff08;必須有…

推薦一簡單易用的腦圖制作工具

幕布是什么&#xff1f; 大綱文檔工具&#xff0c;管理你的大腦層級折疊文字&#xff0c;結構化思考助手一鍵轉換思維導圖并編輯&#xff0c;效率翻倍幕布可以做什么&#xff1f; 大綱筆記&#xff0c;思維整理 學習筆記清單工具 管理日程管理待辦購物清單等等內容創作會議記錄…

自動性能統計信息(三)(Automatic Performance Statistics)

1.3 管理自動工作負載庫&#xff08;AWR&#xff09;本節講述如何管理AWR&#xff0c;包含以下主題&#xff1a; 管理快照 管理基線 管理基線模板 傳輸自動工作負載庫數據 使用自動工作負載庫視圖 生成AWR報告 生成AWR對比報告 生成ASH報告 …

su: user tomcat does not exist

http://www.cnblogs.com/allegro/p/5005352.html 問題在于 你的startup.sh 里面設置了 用戶,你需要修改為root或者tomcat用戶 這是開發 遷移碰到的問題 test ".$TOMCAT_USER" . && TOMCAT_USERtomcat # Set JAVA_HOME to working JDK or JRE # JAVA_HOME/op…

【QGIS入門實戰精品教程】4.5:QGIS打開Excel中的點坐標,并生成矢量文件

QGIS中可以很方便添加Excel或其他文本格式的點坐標,并將其轉為矢量等多種格式的文件。 擴展閱讀: 【ArcGIS風暴】ArcGIS 10.2導入Excel數據X、Y坐標(經緯度、平面坐標),生成Shapefile點數據圖層 文章目錄 1. 數據準備2. 添加數據3. 保存文矢量文件1. 數據準備 本實驗使用…

[NOI2014]起床困難綜合癥

從高位往地位貪心即可 # include <bits/stdc.h> # define IL inline # define RG register # define Fill(a, b) memset(a, b, sizeof(a)) using namespace std; typedef long long ll; const int _(1e5 10);IL ll Read(){RG char c getchar(); RG ll x 0, z 1;for(;…

騰訊云EKS 上部署 eshopondapr

騰訊云容器服務&#xff08;Tencent Kubernetes Engine&#xff0c;TKE&#xff09;基于原生 kubernetes 提供以容器為核心的、高度可擴展的高性能容器管理服務。騰訊云容器服務完全兼容原生 kubernetes API &#xff0c;擴展了騰訊云的云硬盤、負載均衡等 kubernetes 插件&…

[轉]一往無前 | 小米十周年,雷軍公開演講全文

2020年8月11日19:30&#xff0c;小米十周年&#xff0c;雷軍公開演講如約而至。在近3小時的演講中&#xff0c;雷軍用20個故事回顧了小米過去的熱血10年&#xff0c;也展望了新的10年&#xff1a; - 創新之火將會照亮每個瘋狂的想法&#xff0c;小米將成為工程師向往的圣地。 -…

JAVA單例之我見

為什么80%的碼農都做不了架構師&#xff1f;>>> 單例模式作為設計模式中最簡單的一種&#xff0c;是一個被說爛了的東西。但是在項目中還是會發現關于單例模式的一些錯誤實現&#xff0c;可見單例也并不是我們想象的那么簡單。最近陸陸續續看了幾篇關于單例的博客&…

「劉一哥GIS」系列專欄《QGIS入門實戰精品教程(配套案例數據)》

「劉一哥GIS」系列專欄《QGIS入門實戰精品教程&#xff08;配套案例數據&#xff09;》全新上線了&#xff0c;歡迎廣大GISer朋友關注&#xff0c;一起探索GIS奧秘&#xff0c;分享GIS價值&#xff01; 本專欄以實戰案例的形式&#xff0c;深入淺出地介紹了QGIS的基本使用方法&…

MyEclipse的Git配置

1.下載&#xff1a;git的插件egit 并解壓 插件 下載地址&#xff1a;http://www.eclipse.org/egit/download/ 所有版本&#xff1a;http://wiki.eclipse.org/EGit/FAQ#Where_can_I_find_older_releases_of_EGit.3F 2.在MyEclipse安裝目錄下的dropins文件夾下創建egit文件夾 3.…

ASP.NET Core 定時刷新第三方 Token

前言在《ASP.NET Core 自動刷新JWT Token》中我們實現了為客戶端自動提供最新的Token。但是&#xff0c;當我們的 ASP.NET Core 應用需要調用第三方 API 時&#xff0c;如何更優雅地刷新第三方提供的 Token 呢&#xff1f;思路我們可以在啟動時就獲取第三方提供的 Token 并保存…