天天看點

ExcelForEcms7.0_utf8 V1.0 全功能版

360雲盤現已不能通路 請加QQ群203286137到共享空間下載下傳,加群請注明來由,否則拒入

插件簡介:

ExcelForEcms是一個專門為帝國cms系統開發的插件,用于Office Excel文檔和ecms系統之間的資料導入、導出、批量修改。支援所有系統模型,不修改任何帝國系統檔案,完全遵循帝國中設定的使用者權限,多管理者權限配置;特别适合企業站的應用,資料維護人員無需是網站管理者,如大量産品參數的操作、賬目内容的操作、批量附件上傳等僅操作Excel文檔即可;除系統提供的常用處理函數外使用者還可以自定義函數對轉換過程中的資料做任何處理;插件采用分組操作,理論上不限制資料量的大小。

EXCEL資料導入到帝國中:和通用的EXCEL導入Mysql不同的是您不需要考慮ecms系統Mysql資料庫的系統字段及主副表等,插件無縫對接帝國系統,就像是使用者一條一條錄入的内容一樣,沒有任何差別,無需擔心系統字段資料;可以使用系統提供的或自定義的函數對資料進行中間處理,正式導入前可以預覽資料;具備增加資訊權限時可以對同一系統模型的多個欄目一次性導入;支援本地附件及遠端附件批量上傳,支援設定附件位址字首等

帝國資料導出到EXCEL文檔中:選擇您需要的資料字段進行導出,可以設定導出條件,按釋出時期、按ID段、按釋出者等,可以選擇稽核或未稽核資料,未稽核資料在EXCEL文檔中以紅色标記,可以使用系統提供的常用函數或自定義函數對資料做處理再儲存到EXCEL文檔中,比如時間戳的轉換、去HTML代碼等;具備欄目通路權限的前提下支援對同一系統模型的多個欄目一次性導出…

批量修改:可以将導出的資料進行編輯後再批量修改帝國系統中的資料,或者建立資料進行批量修改,和使用者在帝國中點選資訊的修改按鈕修改資料完全一樣,不同的是以EXCEL為準對資料進行了批量操作,過程中實時顯示正在修改哪一條資料,非常直覺,同樣可以使用系統提供的或自定義的函數對中間資料進行處理,具備編輯權限的前提下可以一次性對同一系統模型的多個欄目資料進行修改…

插件的權限控制:超級管理者可以為背景其他管理者使用者設定基于系統模型的插件使用權限,插件運作後再繼承帝國系統中設定的使用者權限,進行靈活多樣的權限控制。

插件使用請檢視以下具體教程

使用權:

本插件在本地機(localhost及127.0.0.1)可以無限制的永久免費使用,在伺服器環境下可以全功能使用15天,如需繼續使用您需要購買授權,作者花了很多時間及精力開發這個插件,插件的後續發展離不開大家的支援,羅輯思維的羅振宇在節目裡面曾說過“如果你做了一款好的産品出來,你的很多買家希望你去死,他們明明知道企業沒有利潤會倒閉,但是在利潤最薄的時候仍然會問能不能便宜一點,送一個最好了。。。。”。我想這樣的買家應該是少數吧。如果您需要使用,暫時不能給予支援的話可以将資料庫同步到本地機,操作完成後再導回伺服器,作者完全開放本地機權限的目的也在于此,雖然多了些步驟但還是比一條條錄入快的,如果是公司使用請購買授權吧,請支援ExcelForEcms的發展

關于購買:

請您在伺服器試用沒有問題後聯系作者購買,試用中遇到的問題請加QQ群:203286137回報咨詢,軟體屬于不可收回商品,一旦成交不可退款,作者非公司恕不開具發票,購買後您可以加群得到售後服務。聯系QQ:1零12五7肆684 交流QQ群:203286137

關于作者:

本插件由yunke開發,【雲遊天下,作客四方】,接受程式定制開發請聯系QQ:1零12五7肆684

如果您有php程式開發方面的需求可以聯系作者,作為自由職業者将根據當時的工作量決定是否達成合作

yunke 【雲遊天下,做客四方】于2013年10月31日

ExcelForEcms7.0_v1.0全功能版使用教程

ExcelForEcms作者yunke QQ:1零12五7肆684 交流群:203286137

插件安裝使用需求:

1:php版本5.2及以上;php_zip、php_gd2、php_xml擴充必須被啟用

2:session必須能正常使用,用戶端cookie開啟

3:“批量修改”浏覽器端需開啟js

安裝步驟:

1:将ExcelForEcms檔案夾複制到\e\extend\下

2:将ExcelForEcmsList.php放入e/data/html/list/

3:将ExcelForEcmsAddNews.php放入\e\admin 如果此背景位址被您更改,放入更改後的位址即可

4:進入帝國背景,修改需要操作的系統模型(系統/資料表與系統模型/管理資料表/管理系統模型/修改/資訊清單名稱),如下圖,填入ExcelForEcmsList

4:安裝完畢,此時進入帝國背景,任意打開該系統模型的一個欄目資訊清單頁可以看到導入Excel的按鈕了,如需解除安裝,按此步驟傳回即可,插件不修改任何系統檔案

目錄結構:

ExcelForEcms\ AppConfig.php 插件配置檔案(插件入口),唯一需要改動的插件系統檔案

ExcelForEcms\Classes  解析引擎PHPExcel類檔案目錄  PHPExcel版本:1.7.9更新于2013-06-02

ExcelForEcms\ Excelfile 用于存放Excel檔案及其配置檔案,初始時包含了執行個體資料

ExcelForEcms\ js  用于存放js檔案

ExcelForEcms\ Template 模闆目錄,存放各模闆檔案

ExcelForEcms\ CheckExcel.php 導入資料前的預覽檢測程式

ExcelForEcms\DelExcel.php   EXCEL檔案删除執行程式

ExcelForEcms\ ExcelForEcms.php導入資料的主程式

ExcelForEcms\ ExcelForEcmsEdit.php批量修改資料排程程式

ExcelForEcms\ ExcelForEcms\ ExcelForEcmsEditEXE.php批量修改資料執行程式

ExcelForEcms\ ExcelForEcmsOut.php導出已稽核資料主程式

ExcelForEcms\ ExcelForEcmsOutCheck.php導出未稽核資料主程式

ExcelForEcms\FormatFun.php 插件提供的常用格式轉換函數庫,連結包含了使用者自定義函數檔案

ExcelForEcms\GlobalFunc.php 插件系統全局函數

ExcelForEcms\hinfofun.php 提取并修改自ECMS的資訊添加/修改程式,

ExcelForEcms\UserFun.php 使用者自定義函數檔案

測試軟體:

系統初始預帶了測試資料,以便您測試和熟悉本插件,資料是以帝國帶資料初始安裝的新聞模型為對象的,安裝完插件,修改新聞模型的資訊清單名稱為ExcelForEcmsList即可開始測試插件,點選相應按鈕看一看效果吧,推薦您先進行此步驟,以便更好的了解下文描述内容。特别說明:測試資料示例在新裝帝國程式帶測試資料時可用以示範,以ID為1的管理者身份登入操作ID為1的模型(新聞系統模型),您可以測試、熟悉本插件

開始使用:

使用插件首先需要在ExcelForEcms\ Excelfile下建立配置檔案(配置内容見下文),導入及批量修改操作需要在該目錄下放入EXCEL檔案,修改ExcelForEcms\ AppConfig.php檔案,讓系統指向您的配置檔案,進入背景就可以進行相應操作了。

AppConfig.php配置如下:

示例:$ExcelFileConfig[1][1] = "Excelfile/yunke_config.php";

表示:$ExcelFileConfig[管理者使用者ID][資料模型ID]=”配置檔案位址”;

為該ID的管理者登陸帝國背景後有權在屬于此資料模型ID的欄目上面使用本插件,按位址加載配置檔案執行

$ExcelFile[2][4]表示為使用者id為2的管理者在系統模型ID為4的欄目上面具備插件使用權限,具備ftp權限的超級管理者需要為其他管理者配置該選項,一般隻有超級管理者才有FTP權限此處設定需要系統管理者事先設定好

$ShowExcelNum=10;//預覽檢測程式預設顯示多少條Excel資訊,推薦10條,太大反應比較慢,不可以為零;

1:EXCEL文檔導入到ECMS中:

點選導入EXCEL,頁面會進入增加資訊送出頁面,點選“開始導入EXCEL”後,表單内容送出到伺服器,此時插件會從excel裡面讀取相應資訊修改$_POST内容,然後再送入帝國自身的資訊添加程式,循環此過程完成批量導入,這樣就實作了和人工逐條添加一樣的效果,這就是ExcelForEcms導入原理,對excel裡面沒有的内容使用送出的内容,由于EXCEL資料儲存格式和帝國資料儲存格式可能不一樣,系統提供了常用的格式轉換函數,并在正式導入前可以點選預覽檢視轉換後的資料,可以準确檢視資料是否符合要求,如下圖所示:

導入檢測程式運作界面如下:

導入資料的配置選項有7項,設定如下:

假設配置檔案名為yunke_config.php,指定給id為1的管理者在id為1的系統模型上面使用則在AppConfig.php裡面添加:$ExcelFileConfig[1][1] = "Excelfile/yunke_config.php";配置檔案放入Excelfile/下,excel檔案也放入這裡。

$EFE_Workbook= "Excelfile/yunke.xls"; //檔案路徑及名字,盡管yunke.xls檔案和配置檔案在同級目錄,但此處仍然加字首Excelfile/,因為此路徑是相對于執行程式而言,并非相對于配置檔案

$EFE_Worksheet = "Sheet1"; //工作表名字

一個Excel檔案可能會有很多個表單,請輸入您要導入的表單名

$EFE_Field_Col:導入對應配置項,如下:

$EFE_Field_Col = array(

    'title' => 'A',

    'ftitle#1' => 'B',

    'smalltext' => 'C#1',

    'newstext' => 'D#kenger',

    'newstime' => 'E#ExcelTimeToTime');

該配置項為一個PHP數組,鍵名為增加資訊頁面表單的元素name值(注:不一定是模型字段值),鍵值表示EXCEL文檔中的列名,表示将該列資料對應到送出表單的該項,程式以此判斷如何給$_POST元素指派,建名加“#1”表示該項必填,如果excel中該列為空則記錄錯誤,忽略此條繼續導入下一條資料;鍵值加“#1”表示使用預設函數處理EXCEL中的資料後再導入到ECMS中,預設函數名為:“Excel檔案名”+“_”+“大寫列名”+“_”+“送出表單Name”。假設EXCEL檔案名為yunke.xls如果是導入比如A列導入title項,則函數名為:yunke_A_title(),(如果表單Name含有[]則去掉[]),此時您需要自定義該名稱的函數放入使用者自定義函數檔案UserFun.php中,您也可以直接使用鍵值加“#函數名”,表示使用該函數處理資料,該函數可以是帝國connect.php中的函數、php自身函數、插件提供的函數、自定義的函數。有些NAME值是一個數組,如name值為img[],鍵名則為“img[]”,如果同時又是必填項則鍵名為“img[]#1”,此時單元格需要用到分隔符分割多個值,見下文。

$EFE_GroupSize:

為了應對大資料的導入,系統采用分組導入,此處設定資料每組導入多少條資料,為避免伺服器逾時,可以設定小一些的值,比如10條,此最佳值和伺服器性能及記憶體有關

$EFE_Address_Separate:

如果表單NAME值是一個數組,如name[],表示該項可能有多個值,常見的有附件、圖集、投票等,此時EXCEL單元格中也可能有多個值,則每個值使用該處定義的分隔符進行分割,比如“####”等,需要注意的是此字元串不能和資料裡可能出現的字元串相同,否則程式不能正确分隔值,該項一般在進行多圖上傳、設定投票時用到

$EFE_Address_Prefix:

有些資料可能具有相同的字首值,比如上傳圖檔時,一個圖檔位址為/d/file/photo/mingxing/yunketest/a.jpg,在圖集上傳時一個EXCEL單元格中有多個這樣的值,這時看起來會非常亂,且在編輯資料時會很麻煩,使用此配置項可以解決該問題,将相同的字首定義到這裡,則在單元格裡面隻需要輸入後半段的資料即可,如上面的位址在此配置為“/d/file/photo/mingxing/yunketest/”後,單元格裡面隻需要輸入“a.jpg”即可(注意不要漏掉或多加“/”),程式在導入時會自動對資料加上字首,但需要注意的是要使該項生效還需要在$EFE_Address_Prefix_Col配置項裡指定該列啟用字首。一般在多圖上傳、遠端附件時會用到該項配置位址的字首。

$EFE_Address_Prefix_Col:

需要在資料前加$EFE_Address_Prefix字首值的列,如$EFE_Address_Prefix_Col=array('B','C','D','E');表示BCDE的資料在導入時自動為資料加上設定的字首值,不設定則不加字首。

關于附件上傳:

本插件說到的附件上傳實際指的是将附件的位址正确送出到系統中,您還需要使用FTP工具将附件批量傳送到相應位置,這樣頁面就可以通過EXCEL送出的附件位址通路到附件,變相實作了附件上傳,該過程并不通過ECMS的附件管理相關程式,在附件管理裡面檢視不到上傳的附件,進而實作了附件的任意位置存放,實作本地或遠端附件批量傳送,隻需要在EXCEL檔案裡面正确反映該附件位址即可,這樣做在大多數情況下是非常有用的,需要注意的是EXCEL位址列對應的表單元素type不能為file,當type=file時表示通過浏覽器上傳附件,以帝國預設測試資料“圖檔頻道”為例,上傳圖檔有源代碼如下:

<input name=msmallpic[] type=text id='msmallpic1' size=28 οndblclick="SpOpenChFile(1,'msmallpic1');">

<br><input type=file name=msmallpfile[] size=15>

此處鍵名應該是msmallpic[],而不是msmallpfile[],通俗的講就是需要您點選“選擇檔案”頁面傳回附件位址的那個表單輸入項的NAME值。

關于導入需要注意的問題:

1:根據帝國CMS要求标題列任何時候都不能為空,否則标題列為空的EXCEL行不被導入并給出提示

2:Excel檔案指令規則以字母開始且隻含字母數字下劃線,因為此涉及到格式轉換函數的預設指令規則

4:任何情況下值為空則不進行格式轉換,格式轉換函數可以對原值進行任何處理,如翻譯、替換等等

5:插件提供的時間格式轉換函數有可能出現差一秒問題;由于EXCEL時間儲存的是1900年1月1日以來的天數,當不足整數天時由于無窮小數問題導緻差一秒

6:對于一個單元格中使用分隔符分割的多個值是連帶分隔符整體作為一個字元串傳送到格式轉換函數中的,而不是分開或以數組傳送,在處理函數中需要進行相應處理,

7:格式轉換函數隻接受一個參數,且傳回和參數同樣的資料類型

8:EXCEL檔案導入前請将标題行删除,程式從第一行開始導入,而标題并不是真正的資料内容。

9:可以對同一系統模型下的多個欄目一次性批量導入,隻需要在EXCEL文檔中指定classid值即可。

10:導入每條資料前程式會調用帝國的驗證程式驗證是否有權操作,無權則停止運作。

11:EXCEL資料最好将公式等轉換為具體的值,這樣能加快導入速度。

12:非必填項對應的單元格如果為空值,會将$_POST中該項的值替換為空值

2:ECMS資料導出到EXCEL中:

點選導出EXCEL時,程式會依據配置從資料庫中取出值儲存到EXCEL對應的單元格中,導出的配置項可以和導入、批量修改的配置項放在一個配置檔案中,導出有11項配置,如下:

$EFE_Out_Workbook= "Excelfile/yunkeout.xls";

導出的excel檔案儲存路徑及名字,檔案擴充名可以為xls(excel2003預設格式)或者xlsx(excel2007及以上版本預設格式),如果存在則進行追加資料,請注意是追加資料,不存在則自動建立

$EFE_Out_Worksheet= "EFE";

工作表名,如果存在則進行追加資料,請注意是追加資料,不存在則自動建立

$EFE_Out_GroupSize = 2;

分組導出的每組大小,防止伺服器逾時,根據伺服器性能及記憶體來設定,性能越強值可以越大,推薦值為10

$EFE_Out_Column= array(34,35,36);

要導出的欄目ID,這些欄目必須屬于同一個系統模型,且有權通路,導出按鈕所在的欄目自動加入該配置,且需要模型相同

$EFE_Out_Check = 3;

1表示僅導出已稽核的資料,2表示僅導出未稽核資料,3表示全部導出

$EFE_Out_TimeStart = "";

導出條件:導出資料的釋出起始時間,含該時間,不限請留白,格式2012-12-10 15:27:30

$EFE_Out_TimeEnd= "";

導出條件:導出資料的釋出終止時間,含該時間,此值應大于等于$EFE_Out_TimeStart,不限請留白

$EFE_Out_IdStart= 0;

導出條件:導出資料的ID起始值,含該值,0為不限

$EFE_Out_IdEnd = 0;

導出條件:導出資料的ID終止值,含該值,此值應大于等于$EFE_Out_IdStart,0為不限

$EFE_Out_User= array();

導出條件:釋出者會員名,僅導出這些會員釋出的資料,如array("admin","Visitor")

$EFE_Out_Field_Col= array(

    'id' => 'A',

    'classid' => 'B',

    'title' => 'C',

    'befrom' => 'D',

    'smalltext' => 'E',

    'newstext#2' => 'F',

'newstime#TimestampToDate' => 'G');

該配置項為一個PHP數組,鍵名為資料庫字段名(請注意不是送出表單NAME值,不隻是背景檢視模型字段中顯示的字段名),鍵值為對應的EXCEL列名,鍵名包含了您能在phpMyAdmin中看到的所有主副表字段名,也就是說可以将系統字段導出,鍵名加“#1”表示字段值為UNIX時間戳時,此時必須在字段名後加#1,才能在EXCEL裡面正确顯示為日期時間,否則導出的為UNIX時間戳數字字元串(請注意這點和導入不同,導入#1表示調用預設函數處理資料);鍵名加“#2”表示帶HTML标簽的資料,此時程式将去掉HTML标簽及HTML特殊字元後再儲存到EXCEL中;鍵名加“#函數名”表示使用此函數處理值後再儲存到EXCEL中,該函數可以是帝國connect.php中的函數、php自身函數、插件提供的函數、自定義的函數,使用者自定義函數放在檔案UserFun.php中,系統提供了最為常用的TimestampToDate函數将時間戳轉化為2013-09-07 15:31:59格式(此函數在導出修改後再批量導入修改原資料時是很有用的)。如果找不到設定的函數将直接導出儲存;如果什麼也不加表示直接儲存到EXCEL中

關于導出需要注意的問題:

1:鍵名加“#函數名”,是函數名,不帶();

2:如果還需要将導出的資料修改後導回到ECMS中則導出時必須将classid及id導出,否則導出後的資料您将不知道屬于哪個欄目

3:未稽核資料儲存在EXCEL中時A列背景标記為紅色

4:資料處理函數隻接受一個參數,且傳回和參數同樣的資料類型

5:導出到EXCEL中的資料預設是字元串格式

3:使用EXCEL批量修改ECMS中的資料:

批量修改ECMS中資料時,程式會先讀取EXCEL中classid及id對應資訊的值,通過該值調用帝國中的資訊,此步驟相當于使用者點選資訊的“修改”按鈕,資訊調出後JS程式會自動将原值以表單方式送出給插件,插件再根據配置檔案讀取EXCEL檔案修改相應的$_POST值,最後将修改好的資料送入帝國程式完成修改,此過程和使用者手動修改完全一樣,程式會按照excel的内容自動逐條修改完所有的資訊。Excel檔案可以是從ecms中導出的檔案,或者是使用者建立的,但裡面均必須包含classid及id值。批量修改配置有7項,如下:

$EFE_Edit_Workbook = "Excelfile/yunkeout.xls";

用于修改ECMS資訊資料的excel檔案儲存路徑及名字,檔案擴充名可以為xls(excel2003預設格式)或者xlsx(excel2007及以上版本預設格式)

$EFE_Edit_Worksheet = "EFE";

用于修改ECMS資訊資料的excel檔案工作表名字

$EFE_Edit_Field_Col= array(

    'id' => 'A',

    'classid' => 'B',

    'title' => 'C',

    'befrom' => 'D',

    'smalltext' => 'E',

    'newstext' => 'F',

    'newstime' => 'G');

此配置項為php數組,鍵名為點選資訊修改按鈕後頁面的送出表單的表單元素NAME值,鍵值為對應的EXCEL列名,該項配置和導入項的配置完全相同,請參看導入項$EFE_Field_Col的配置,但唯一不同的是批量修改資料必須提供id及classid,需要提供它們對應的列,且文檔中有值;注意在$EFE_Edit_Field_Col配置中不要有多餘的空格

$EFE_Edit_Address_Separate= "####";

代表的意義及配置和導入配置中的$EFE_ Address_Separate完全一樣

$EFE_Edit_Address_Prefix= "";

代表的意義及配置和導入配置中的$EFE_Address_Prefix完全一樣

$EFE_Edit_Address_Prefix_Col = array();

代表的意義及配置和導入配置中的$EFE_Address_Prefix_Col完全一樣

$EFE_Edit_Wait_Time=0;

修改每條資料所間隔的時間,機關秒,0表示以能達到的最快速度修改;該項用于檢查資料,批量修改過程中斷的時候檢視是哪一條資料出現問題,正常情況設定為0即可

關于批量修改需要注意的問題:

1:批量修改沒有分組大小設定,由于過程特性原因,程式是逐條連續進行修改,相當于每組1條。

2:修改時用戶端浏覽器必須支援JS程式,否則使用者可以在顯示修改畫面的時候點選送出按鈕,以此人工代替JS功能

3:EXCEL文檔中必須包含classid及id值,且有修改權限,無此值的行将自動跳過

4:批量修改和資料導入到ECMS中的原理幾乎一樣,可以将導入看成是批量修改的子集,因為批量修改多了一步調出帶資料的修改頁面,是以兩者間很多配置項含義及配置一樣。

5:批量修改可以對未稽核資料進行操作,隻需提供正确的classid及id值即可

插件提供的資訊處理函數清單:

具體參看FormatFun.php檔案内容,每個函數頭均有詳細說明

ExcelForEcms7.0_v1.0全功能版相容問題解決方案

如果您的主機不支援PHPExcel,您又無法更改配置,請按下列步驟可以解決相容問題:

1:在本機安裝伺服器環境,推薦使用phpStudy內建環境(經測試此工具搭建的預設環境支援ExcelForEcms,其他工具未測試,可以自行測試)

2:将伺服器端程式檔案全部下載下傳到本地環境,包括資料庫配置檔案

3:配置hosts檔案,讓您的域名在本機指向本地伺服器,配置本地伺服器環境,讓域名指向帝國目錄

4:完成!這樣就在本機建立了一個和伺服器一樣的網站,使用了同一個資料庫,在本地操作即可,完成後到伺服器端重新整理檔案

以下以phpStudy為列講解過程:

1:安裝phpStudy,它包含了Apache+PHP+MySQL+phpMyAdmin+Zend Loader,一次性安裝,無須配置即可使用

2:建立目錄,為這個目錄配置域名:

打開phpStudy的站點域名配置,輸入如下:

<VirtualHost *:80>

    ServerAdmin [email protected]

    DocumentRoot "C:/e7"

    ServerName www.e7.com

    ServerAlias e7.com

</VirtualHost>

這裡在C槽建立了一個e7檔案夾,并配置域名為www.e7.com 它就是你網站的根目錄了

3:将您網站的程式等檔案都下載下傳到本地的C:/e7

4:修改HOST檔案,在phpStudy裡面有“打開HOSTS”菜單,添加127.0.0.1      www.e7.com

5:完成,這樣你通路www.e7.com就通路到你C:/e7下的網站了,開始使用ExcelForEcms吧

注意:這裡的www.e7.com應該改為您網站的域名,當你輸入您的域名時通路的是你本機的環境,如果要通路真正的伺服器在HOSTS裡取消配置即可,通路本機再添加配置,這樣就解決了相容問題了

本問講的是XP環境下,其他環境相應處理即可,都會的吧

ExcelForEcms作者yunke QQ:1零12五7肆684  交流群:203286137

ExcelForEcms7.0_v1.0全功能版下載下傳位址:http://bbs.phome.net/showthread-31-305661-0.html

或到群共享裡面下載下傳