Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 日韩爱爱视频,天天操天天干天天拍,国产成人精品白浆免费视频试看

          整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          .NET導(dǎo)出Excel的四種方法及評(píng)測(cè)

          .NET導(dǎo)出Excel的四種方法及評(píng)測(cè)

          導(dǎo)出Excel是.NET的常見需求,開源社區(qū)、市場(chǎng)上,都提供了不少各式各樣的Excel操作相關(guān)包。本文,我將使用NPOI、EPPlus、OpenXML、Aspose.Cells四個(gè)市面上常見的庫(kù),各完成一個(gè)導(dǎo)出Excel示例。然后對(duì)其代碼風(fēng)格和性能做一個(gè)橫向比較。最后我將說出我自己的感想。

          文中所有的示例代碼可以在這里下載:

          https://github.com/sdcb/blog-data/tree/master/2019/20190824-dotnet-excel-compare

          NPOI

          NPOI源自于Java的Apache POI(https://poi.apache.org/),目前最新版本是2.4.1。NPOI是開源項(xiàng)目,作者是華人(https://github.com/tonyqus/),項(xiàng)目地址是:https://github.com/tonyqus/npoi。

          幾年前大家導(dǎo)出Excel都使用COM,但COM不方便,這個(gè)組件的推出無疑彌補(bǔ)了.NET在Excel方面組件的空白,大家都說比COM好用。

          NPOI還加入了.NET Core Community組織,項(xiàng)目地址是:https://github.com/dotnetcore/NPOI。

          EPPlus

          EPPlus是另一個(gè)開源的Excel操作庫(kù),目前最新版本是4.5.3.2。Github地址是:https://github.com/JanKallman/EPPlus。

          EPPlus僅依賴基礎(chǔ)類庫(kù)BCL,完全沒有第三方包依賴,也是.NET原生庫(kù)。

          EPPlus只支持導(dǎo)出Office 2007之后的格式,也就是xlsx。這已經(jīng)是存在12年的格式了,但如果有客戶想要導(dǎo)出xls,EPPlus將不支持。

          OpenXML

          OpenXML的NuGet包全稱是DocumentFormat.OpenXml:是微軟推出的較為低層的Excel操作庫(kù),最新穩(wěn)定版本是2.9.1。OpenXML也是開源項(xiàng)目,地址是:https://github.com/OfficeDev/Open-XML-SDK。

          從該項(xiàng)目的名字可以看出,OpenXML比較涉及底層,因此很容易令人浮想聯(lián)翩,感覺它的性能、速度很可能是最快的,但真的如此嗎?

          Aspose.Cells

          這是Aspose Pty Ltd公司推出的Excel操作庫(kù)。它是眾多Aspose File Format API產(chǎn)品其中之一。目前最新版本是19.8.0(基于年/月)。Aspose提供了應(yīng)有盡有的文件格式支持,除了.NET外,Aspose還提供了C++和Java的包。

          據(jù)我所知Aspose的客戶支持服務(wù)也不錯(cuò),客戶提出的問題經(jīng)常可以在下一次發(fā)布時(shí)解決。

          Aspose.Cells是不開源,付費(fèi)的庫(kù),但提供無限期的試用,據(jù)[官方網(wǎng)站](https://docs.aspose.com/display/cellsnet/Licensing#Licensing-EvaluationVersionLimitations)顯示,試用版將

          限制打開文件數(shù)量100個(gè)

          限制使用Aspose.Cells.GridWeb功能

          生成的Excel將添加如下水印:

          但經(jīng)過我的試用,無論是并行還是串行,都沒找到限制打開文件數(shù)量100個(gè)的限制。因此,“試用版”對(duì)我們的物理限制,就只有這個(gè)水印了(當(dāng)然加了這個(gè)水印,客戶肯定也不會(huì)有好表情)。

          Excel-COM

          COM是隨著Excel安裝而自帶的庫(kù),Excel的包名叫Microsoft.Office.Interop.Excel。本文不會(huì)深入解析,具體可以看[這篇文檔](https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/interop/how-to-access-office-onterop-objects)。

          我想要多說兩句的是,COM的old-fashion(過時(shí))不是沒有原因的,據(jù)我所知COM有以下缺點(diǎn):

          • 調(diào)用時(shí)會(huì)啟動(dòng)一個(gè)進(jìn)程外的excel.exe,可能因?yàn)樗鼮槭菍iT為Office設(shè)計(jì)的(不是為.NET集成設(shè)計(jì)的)

          • 要求目標(biāo)環(huán)境安裝相關(guān)軟件,沒安裝將無法運(yùn)行

          • 顯然也沒辦法跨平臺(tái)

          • 使用了大量動(dòng)態(tài)/多參數(shù)接口,對(duì)開發(fā)不是很友好

          • 不像托管內(nèi)存,COM對(duì)資源釋放也有要求,具體參見[這篇文章](https://www.breezetree.com/blog/common-mistakes-programming-excel-with-c-sharp)

          橫向比較


          NPOI
          EPPlus
          OpenXML
          Aspose
          包依賴
          有1個(gè)

          封裝程度正常
          正常
          低層
          正常
          支持格式
          完善
          僅xlsx
          僅xlsx
          完善
          開源協(xié)議
          Apache-2.0
          LGPLMIT
          不開源
          收費(fèi)類型
          免費(fèi)
          免費(fèi)
          免費(fèi)
          收費(fèi)

          評(píng)測(cè)說明

          版本與數(shù)據(jù)

          所有代碼的版本號(hào)基于上文中提到的最新穩(wěn)定版本:


          最新穩(wěn)定版本號(hào)
          NPOI
          2.4.1
          EPPlus
          4.5.3.2
          OpenXML2.9.1
          Aspose.Cells
          19.8.0

          數(shù)據(jù)全部基于我上篇文章使用的6萬條/10列的數(shù)據(jù),總共數(shù)據(jù)量19,166 KB。所有數(shù)據(jù)可以從這里下載:https://github.com/sdcb/blog-data/tree/master/2019/20190821-generate-lorem-data

          環(huán)境

          項(xiàng)目
          CPUE3-1230 v3 @ 3.30GHz
          內(nèi)存
          24GB DDR3-1600 MHz (8GBx3)
          操作系統(tǒng)Windows 10 1903 64
          電源選項(xiàng)已設(shè)置為“高性能”
          軟件
          LINQPad 6.0.18
          運(yùn)行時(shí)環(huán)境
          .NET Core 3.0-preview8-28405-07

          注意,LINQPad設(shè)置了optimize+,代碼都是優(yōu)化后執(zhí)行的;代碼都指定了Util.NewProcess=true;,確保每次運(yùn)行都會(huì)在新進(jìn)程中運(yùn)行,不會(huì)互相影響。

          我的性能測(cè)試函數(shù)介紹

          IEnumerable<object> Measure(Action action, int times=5){ return Enumerable.Range(1, times).Select(i=> { var sw=Stopwatch.StartNew;
          long memory1=GC.GetTotalMemory(true); long allocate1=GC.GetTotalAllocatedBytes(true); { action; } long allocate2=GC.GetTotalAllocatedBytes(true); long memory2=GC.GetTotalMemory(true);
          sw.Stop; return new { 次數(shù)=i, 分配內(nèi)存=(allocate2 - allocate1).ToString("N0"), 內(nèi)存提高=(memory2 - memory1).ToString("N0"), 耗時(shí)=sw.ElapsedMilliseconds, }; });}

          除了時(shí)間,內(nèi)存占用實(shí)際也是非常非常重要、但容易被人忽略的性能指標(biāo)。大家都以為“內(nèi)存不值錢”,但——

          • 一旦訪問量大,內(nèi)存就會(huì)瞬間上漲,導(dǎo)致頻繁GC,導(dǎo)致性能下降;

          • 內(nèi)存高也會(huì)導(dǎo)致服務(wù)器分頁(yè),這時(shí)性能就會(huì)急劇下降;

          • 吞吐量下降會(huì)導(dǎo)致隊(duì)列排滿,此時(shí)服務(wù)器就會(huì)報(bào)503等錯(cuò)誤,客戶就發(fā)現(xiàn)服務(wù)器“宕機(jī)了”。

          (提示:除非你的客戶真的愿意多花錢再升級(jí)一下服務(wù)器,否則不要提“內(nèi)存不值錢”。)

          在我的性能測(cè)試函數(shù)中,使用了如下兩個(gè)函數(shù)來測(cè)試內(nèi)存占用:

          • GC.GetTotalAllocatedBytes(true) 獲取分配內(nèi)存大小

          • GC.GetTotalMemory(true) 獲取占用內(nèi)存大小

          占用內(nèi)存可能會(huì)比分配內(nèi)存小,因?yàn)榇嬖诶厥眨℅C),但GC會(huì)影響性能。

          通過調(diào)用Measure函數(shù),可以測(cè)得傳入的action的耗時(shí)和內(nèi)存占用。默認(rèn)會(huì)調(diào)用5次,可以從5次測(cè)試結(jié)果中取出能反映性能的值。

          測(cè)試基準(zhǔn)

          string Export<T>(List<T> data, string path){ PropertyInfo props=typeof(User).GetProperties; string noCache=; for (var i=0; i < props.Length; ++i) { noCache=props[i].Name; } for (var i=0; i < data.Count; ++i) { for (var j=0; j < props.Length; ++j) { noCache=props[j].GetValue(data[i]).ToString; } } return noCache;}

          注意:

          • 我有意使用了反射,這符合我們導(dǎo)出Excel代碼簡(jiǎn)單、易學(xué)、好用、好擴(kuò)展的愿意;

          • 我有意使用了泛型T,而不是實(shí)際類型,這也讓這些代碼容易擴(kuò)展;

          • 里面的noCache用來規(guī)避編譯器優(yōu)化刪除代碼的行為

          測(cè)試結(jié)果:

          次數(shù)
          分配內(nèi)存
          內(nèi)存提高
          耗時(shí)
          1
          9,863,5208,712
          156
          29,852,5920
          138
          39,852,5920147
          4
          9,873,0969,240
          136
          59,853,936776
          133

          可見,基于反射操作6萬/10列數(shù)據(jù),每次需要分配約9MB內(nèi)存,但這些內(nèi)存都會(huì)被快速GC,最終內(nèi)存提高較少。這些使用反射的代碼運(yùn)行耗時(shí)在130ms-150ms左右。

          各個(gè)庫(kù)的使用和性能表現(xiàn)

          NPOI

          void Export<T>(List<T> data, string path){ IWorkbook workbook=new XSSFWorkbook; ISheet sheet=workbook.CreateSheet("Sheet1");
          var headRow=sheet.CreateRow(0); PropertyInfo props=typeof(User).GetProperties; for (var i=0; i < props.Length; ++i) { headRow.CreateCell(i).SetCellValue(props[i].Name); } for (var i=0; i < data.Count; ++i) { var row=sheet.CreateRow(i + 1); for (var j=0; j < props.Length; ++j) { row.CreateCell(j).SetCellValue(props[j].GetValue(data[i]).ToString); } }
          using var file=File.Create(path); workbook.Write(file);}

          注意:

          里面用到了XSSFWorkBook,其中XSSF這個(gè)前綴是從Java的POI庫(kù)傳過來的,全稱是XML SpreadSheet Format。

          這種前綴在NPOI包中很常見。

          XSSFWorkbook提供了bool Dispose方法,但它未實(shí)現(xiàn)(因此千萬別調(diào)用它):

          性能測(cè)試結(jié)果:

          次數(shù)
          分配內(nèi)存
          內(nèi)存提高
          耗時(shí)
          1
          1,598,586,416537,0486590
          21,589,239,7287,712
          10155
          31,589,232,056-5,36810309
          4
          1,589,237,0647,144
          10355
          51,589,245,0009,56010594

          分配內(nèi)存穩(wěn)定在1.48GB的樣子,首次內(nèi)存會(huì)提高524KB左右,后面趨于穩(wěn)定。首次耗時(shí)6秒多,后面穩(wěn)定在10秒多。

          EPPlus

          void Export<T>(List<T> data, string path){ using var stream=File.Create(path); using var excel=new ExcelPackage(stream); ExcelWorksheet sheet=excel.Workbook.Worksheets.Add("Sheet1"); PropertyInfo props=typeof(User).GetProperties; for (var i=0; i < props.Length; ++i) { sheet.Cells[1, i + 1].Value=props[i].Name; } for (var i=0; i < data.Count; ++i) { for (var j=0; j < props.Length; ++j) { sheet.Cells[i + 2, j + 1].Value=props[j].GetValue(data[i]); } } excel.Save;}

          注意,不同于NPOI/Aspose.Cells,EPPlus的下標(biāo)是基于1的(而不是0)。

          次數(shù)
          分配內(nèi)存
          內(nèi)存提高
          耗時(shí)
          1
          534,970,328156,0483248
          2533,610,23214,8962807
          3533,595,9367,6482853
          4
          533,590,7764,408
          2742
          5533,598,44011,2802759

          分配內(nèi)存約508MB,耗時(shí)首次稍長(zhǎng),約3.2秒,后面穩(wěn)定在2.7-2.8秒。

          OpenXML

          void Export<T>(List<T> data, string path){ using SpreadsheetDocument excel=SpreadsheetDocument.Create(path, SpreadsheetDocumentType.Workbook);
          WorkbookPart workbookPart=excel.AddWorkbookPart; workbookPart.Workbook=new Workbook;
          WorksheetPart worksheetPart=workbookPart.AddNewPart<WorksheetPart>; worksheetPart.Worksheet=new Worksheet(new SheetData);
          Sheets sheets=excel.WorkbookPart.Workbook.AppendChild<Sheets>(new Sheets); Sheet sheet=new Sheet { Id=excel.WorkbookPart.GetIdOfPart(worksheetPart), SheetId=1, Name="Sheet1" }; sheets.Append(sheet); SheetData sheetData=worksheetPart.Worksheet.GetFirstChild<SheetData>;
          PropertyInfo props=typeof(User).GetProperties; { // header var row=new Row { RowIndex=1 }; sheetData.Append(row); row.Append(props.Select((prop, i)=> new Cell { CellReference=('A' + i - 1) + row.RowIndex.Value.ToString, CellValue=new CellValue(props[i].Name), DataType=new EnumValue<CellValues>(CellValues.String), })); } sheetData.Append(data.Select((item, i)=> { var row=new Row { RowIndex=(uint)(i + 2) }; row.Append(props.Select((prop, j)=> new Cell { CellReference=('A' + j - 1) + row.RowIndex.Value.ToString, CellValue=new CellValue(props[j].GetValue(data[i]).ToString), DataType=new EnumValue<CellValues>(CellValues.String), })); return row; })); excel.Save;}

          注意,因?yàn)閌OpenXML`比較偏低層,東西比較復(fù)雜,所以我們慢慢說:

          • 對(duì)于一些對(duì)象,它需要?jiǎng)?chuàng)建相應(yīng)的Part,如WorksheetPart;

          • Excel可以使用SharedStringTable來共享變量值,適合相同字符串非常多的場(chǎng)景。

            但此示例共享變量值收益很低,但會(huì)極大地增加代碼復(fù)雜性(普通用戶可能很難寫出),因此本示例未使用SharedStringTable;

          • 它基于單元格位置標(biāo)識(shí),如B3(第三行第二列),因此索引方式比EPPlus/NPOI都要復(fù)雜;

          • 代碼示例中使用'A' + i - 1來計(jì)算位置標(biāo)識(shí),因此這個(gè)示例不能用于超過26列(字母數(shù))的數(shù)據(jù);

          • 代碼使用LINQ(而不是循環(huán))來枚舉所有行/列,可以讓代碼在已經(jīng)非常復(fù)雜的情況下,更簡(jiǎn)潔一點(diǎn);

            經(jīng)測(cè)試,將LINQ改成for循環(huán)對(duì)性能結(jié)果變化影響極其微小。

          測(cè)試結(jié)果如下:

          次數(shù)
          分配內(nèi)存
          內(nèi)存提高
          耗時(shí)
          1
          556,937,896145,8324009
          2555,981,2163123783
          3555,985,9362,7603884
          4
          555,984,3841,8723869
          5555,989,1203,8803704

          內(nèi)存占用約530MB左右,第一次比后面多1MB的樣子,耗時(shí)3.7-4.0秒之間。

          Aspose.Cells

          void Export<T>(List<T> data, string path){ using var excel=new Workbook; Worksheet sheet=excel.Worksheets["Sheet1"]; PropertyInfo props=typeof(User).GetProperties; for (var i=0; i < props.Length; ++i) { sheet.Cells[0, i].Value=props[i].Name; } for (var i=0; i < data.Count; ++i) { for (var j=0; j < props.Length; ++j) { sheet.Cells[i + 1, j].Value=props[j].GetValue(data[i]); } } excel.Save(path);}

          注意,Aspose.Cells像Excel軟件一樣,提供了Sheet1/Sheet2/Sheet3三個(gè)默認(rèn)的工作表,因此取這三個(gè)工作表時(shí),不要?jiǎng)?chuàng)建,而是取出來。

          性能測(cè)試結(jié)果如下:

          次數(shù)
          分配內(nèi)存
          內(nèi)存提高
          耗時(shí)
          1
          404,004,9443,619,5203316
          2357,931,6486,0482078
          3357,934,7447,2162007
          4
          357,933,3766,2802017
          5357,933,3606,4242007

          Aspose.Cells首次占用內(nèi)存385MB,用于3.3秒,后面每次降低為內(nèi)存341MB,用時(shí)2.0秒。

          總結(jié)

          四種導(dǎo)出Excel庫(kù)的橫向評(píng)測(cè)數(shù)據(jù)如下,數(shù)據(jù)取5次數(shù)值的內(nèi)存消耗中位數(shù)

          ,百分比以EPPlus的測(cè)試數(shù)據(jù)為100%基準(zhǔn):

          次數(shù)
          分配內(nèi)存
          內(nèi)存占比
          耗時(shí)
          耗時(shí)占比
          基準(zhǔn)(僅反射)
          9,853,9361.85%1334.82%
          NPOI1,589,237,064297.83%10355375.32%
          EPPlus533,598,440100%2759100%
          OpenXML
          555,985,936104.19%3884140.78%
          Aspose357,933,36067%200772.74%

          可以得出以下結(jié)論:

          1. Demo基于反射,但反射總損耗的性能不高,內(nèi)存、耗時(shí)均不超過5%;

          2. NPOI的性能表現(xiàn)是所有項(xiàng)目中最差的,每次需要分配1.5GB的內(nèi)存和超過10秒的耗時(shí);

          3. EPPlus表現(xiàn)不錯(cuò),內(nèi)存和耗時(shí)在開源組中表現(xiàn)最佳;

          4. 收費(fèi)的Aspose.Cells表現(xiàn)最佳,內(nèi)存占用最低,用時(shí)也最短;

          5. 較為底層的OpenXML表現(xiàn)非常一般,比EPPlus要差,更不能與收費(fèi)的Aspose相提并論;

          我的感想

          在真的愿意嘗試一下之前,人們很容易相信自己的直覺。底層庫(kù),通常能帶來更大的可擴(kuò)展性,能做出上層庫(kù)很難做的事來。底層庫(kù)有時(shí)性能會(huì)更快,就像更底層的C/C++比上層的JavaScript更快一樣。但事情也不都如此,如

          • 更高層的React.js能在性能上將較底層的DOM操作比下去

          • 數(shù)據(jù)庫(kù)基于集合的操作也比基于游標(biāo)的操作要快得多

          在導(dǎo)出Excel這個(gè)例子中,我了解到Excel的xlsx格式是非常復(fù)雜的、多個(gè)xml的集合。如果基于xml做抽象——也是很正常的做法,拼出6萬/10列的數(shù)據(jù),需要至少60萬個(gè)xml標(biāo)簽做拼接,很顯然這需要分配/浪費(fèi)大量?jī)?nèi)存,因此性能上不來。

          我基于以下幾點(diǎn)無責(zé)任猜測(cè):Aspose內(nèi)部可能沒xml做抽象,而是純數(shù)據(jù)做抽象(就像React.js那樣),然后再統(tǒng)一寫入到Excel文件。因此性能可以達(dá)到其它庫(kù)達(dá)不到的目標(biāo):

          1. Aspose.Cells對(duì)xml等實(shí)現(xiàn)相關(guān)技術(shù)只字未提(可能因?yàn)橐С侄喾N文件格式);

          2. Aspose.Cells是先在內(nèi)存中創(chuàng)建,再寫入文件/流(NPOI也是);

          3. Aspose.Cells創(chuàng)建Excel時(shí)要求客戶直接使用Workbook類(NPOI也是);

          4. Aspose.Cells完全隱藏了Excel的位置(如B3)信息,下標(biāo)從0開始(NPOI也是)

          比較這幾點(diǎn),NPOI也與Aspose.Cells有幾分相似,但導(dǎo)出不到6MB的`Excel`它內(nèi)存分配居然高達(dá)1.5GB,是后者的444%!畢竟迭代更新了這么多年了,代碼質(zhì)量我相信應(yīng)該沒問題。因此我再次無責(zé)任推測(cè):這可能因?yàn)樗菑腏ava那邊移植過來的。

          我的選擇/推薦

          在我做這個(gè)性能評(píng)測(cè)前,我一直使用的是EPPlus,因?yàn)槲也幌矚gNPOI有第三方依賴,也不喜歡NPOI那些“XSSF”之類的前綴命名,也顯然不會(huì)去費(fèi)心思寫那么多費(fèi)力不討好的OpenXML代碼。

          更別提這次評(píng)測(cè)發(fā)現(xiàn)EPPlus的性能確實(shí)不錯(cuò),唯一的缺點(diǎn)就是它單元格下標(biāo)從1開始的設(shè)計(jì)。即便如此,我還是首選推薦EPPlus。

          近期也經(jīng)常使用Aspose.Cells這種商業(yè)庫(kù),它的功能強(qiáng)大,API清晰好用,這個(gè)評(píng)測(cè)也證明它的性能卓越。除了高昂(https://purchase.aspose.com/pricing/cells/net)的價(jià)格,沒別的缺點(diǎn)了。乃有錢客戶/老板的不二之選!

          出處:本文轉(zhuǎn)載于微信公眾號(hào)【DotNet騷操作】,作者【周杰DotNet 】

          出處:微信公眾號(hào)【DotNet騷操作】

          微信不能留言,請(qǐng)點(diǎn)擊原文鏈接去博客園留言。

          原文鏈接:https://www.cnblogs.com/sdflysha/p/20190824-dotnet-excel-compare.html

          . 前言

          本章是完善用戶管理的一個(gè)小功能---導(dǎo)入數(shù)據(jù),本章將使用第三方庫(kù)Magicodes.IE.Excel.AspNetCore

          2. 類庫(kù)簡(jiǎn)介

          Magicodes.IE.Excel.AspNetCore庫(kù)是心萊科技麥扣出品的一個(gè)支持Excel導(dǎo)入導(dǎo)出的功能。有興趣的同學(xué)可以去搜索一下。類庫(kù)是支持Dto導(dǎo)入導(dǎo)出以及動(dòng)態(tài)導(dǎo)出,支持Excel、Word、Pdf和Html功能較多。不過作者維護(hù)的Github上的倉(cāng)庫(kù)。但是該庫(kù)有個(gè)缺點(diǎn)是Excel導(dǎo)入不支持“.xls”文件,即不支持Excel97-2003。也許未來可以支持。

          3. 代碼示例

          3.1 安裝庫(kù)Magicodes.IE.Excel.AspNetCore

          我們僅演示使用Excel來完成學(xué)生數(shù)據(jù)的導(dǎo)入。我們需要在已準(zhǔn)備好的工程中安裝以下包,參考如下所示:

          3.2 創(chuàng)建導(dǎo)入Student

          創(chuàng)建導(dǎo)入類Student.ts并設(shè)置必要的屬性

          如上述代碼所示,我們定義了以上學(xué)生數(shù)據(jù)類,主要注意事項(xiàng)如下

          • ExcelImporter特性可以設(shè)置一些導(dǎo)入的全局設(shè)置,比如是否標(biāo)注錯(cuò)誤、導(dǎo)入Sheet名稱(如不設(shè)置則自動(dòng)獲取第一個(gè))、截止讀取的列數(shù)、表頭位置。
          • 支持常用的數(shù)據(jù)驗(yàn)證設(shè)置,比如必填、最大長(zhǎng)度。
          • 支持?jǐn)?shù)據(jù)重復(fù)校驗(yàn),比如身份證號(hào)碼。見ImporterHeader特性的IsAllowRepeat設(shè)置。
          • 支持列頭設(shè)置,將ImporterHeader的Name屬性。除此之外,ImporterHeader還支持自動(dòng)過濾空格(默認(rèn)啟用)、處理掉所有的空格、列索引等。
          • 對(duì)數(shù)據(jù)列啟用了忽略設(shè)置,見SchoolId的”[ImporterHeader(IsIgnore=true)]”。
          • 使用了值映射,見“Gender”屬性。啟用值映射之后,將不會(huì)從枚舉定義中獲取值映射。
          • 支持枚舉,支持從枚舉的Display、Description特性中獲取值映射。

          3.3 注冊(cè)導(dǎo)入接口

          創(chuàng)建在項(xiàng)目FlyingHat.Extensions中創(chuàng)建OfficeService.cs類并單例注冊(cè)IExcelImporter

          打開Program.cs中寫入builder.Services.AddOfficeService();

          builder.Services.AddOfficeService();

          3.4 生成導(dǎo)入模板并填充數(shù)據(jù)

          通過構(gòu)造函數(shù)注入 IExcelImporter ,然后開始編寫導(dǎo)入功能,在導(dǎo)入之前是不是得準(zhǔn)備一份模板?對(duì)于我們,手寫模板?這是不存在的。Magicodes.IE.Excel.AspNetCore封裝了根據(jù)DTO自動(dòng)生成Excel導(dǎo)入模板的方法,我們可以直接調(diào)用。這里我們來看下導(dǎo)入的相關(guān)方法。

          通過導(dǎo)出的文件完成數(shù)據(jù)填充后導(dǎo)入到數(shù)據(jù)庫(kù)

          3.5 前端代碼

          界面展示:

          JS代碼展示:

          注意:

          popup.panelWebBtn是我封裝的一個(gè)方法,您可以下載源碼并查看。關(guān)于數(shù)據(jù)錯(cuò)誤提示,我是返回前5項(xiàng),這樣前端頁(yè)面也容易展示,這個(gè)上傳后的邏輯可以根據(jù)實(shí)際情況而修改。

          結(jié)語(yǔ)

          本章實(shí)現(xiàn)了Excel文件的導(dǎo)入導(dǎo)出,僅僅是類庫(kù)的簡(jiǎn)單使用介紹,當(dāng)然導(dǎo)入的方式也有其他類庫(kù)例如NPOI等。詳細(xì)功能請(qǐng)獲取源碼查看。各位同學(xué)在閱讀實(shí)踐過程中有看不懂或有其他想法的可以在評(píng)論區(qū)留言或者私信。教程有幫助的話請(qǐng)各位同學(xué)幫忙評(píng)論點(diǎn)贊關(guān)注三連,感謝大家!

          ----------------------------------------------------

          私信: 校園圖書管理系統(tǒng) 可以獲取Gitee的鏈接

          son.NET

          http://json.codeplex.com/

          Json.Net 是一個(gè)讀寫Json效率比較高的.Net框架.Json.Net 使得在.Net環(huán)境下使用Json更加簡(jiǎn)單。通過Linq To JSON可以快速的讀寫Json,通過JsonSerializer可以序列化你的.Net對(duì)象。讓你輕松實(shí)現(xiàn).Net中所有類型(對(duì)象,基本數(shù)據(jù)類型 等)和Json的轉(zhuǎn)換。

          Math.NET

          http://www.mathdotnet.com/

          Math.NET的目標(biāo)是為提供一款自身包含清晰框架的符號(hào)運(yùn)算和數(shù)學(xué)運(yùn)算/科學(xué)運(yùn)算,它是C#開發(fā)的開源類庫(kù)。Math.NET含了一個(gè)支持線性代數(shù)的解析器,分析復(fù)雜微分,解方程等等功能。

          Faker.Net

          https://github.com/jonwingfield/Faker.Net

          開發(fā)的時(shí)候是不是為測(cè)試數(shù)據(jù)煩惱?Faker.Net可以非常方便幫你生成大批量測(cè)試數(shù)據(jù)。例如人員表里面的姓名、性別什么的。

          Html Agility Pack

          http://htmlagilitypack.codeplex.com/

          Html Agility Pack 是CodePlex 上的一個(gè)開源項(xiàng)目。它提供了標(biāo)準(zhǔn)的DOM API 和XPath 導(dǎo)航--即使 HTML 不是適當(dāng)?shù)母袷剑TML Agility Pack 搭配 ScrapySharp,徹底解除Html解析的痛苦。

          NCrawler

          http://ncrawler.codeplex.com/

          NCrawler是一款國(guó)外的開源網(wǎng)絡(luò)爬蟲軟件,遵循LGPL許可協(xié)議。其HTML處理使用的是htmlagilitypack開源庫(kù),采用xpath的方式處理定位網(wǎng)頁(yè)元素,十分方便。

          SuperWebSocket

          http://superwebsocket.codeplex.com/

          SuperWebSocket是基于.NET開源Socket框架SuperSocket開發(fā)的, SuperSocket所支持的大部分功能在SuperWebSocket中得到了繼承。用戶可通過SuperWebSocket來快速的構(gòu)建可靠的,高性能的websocket服務(wù)器端應(yīng)用程序。

          SuperSocket

          http://supersocket.codeplex.com/

          SuperSocket 是 一個(gè)輕量級(jí)的可擴(kuò)展的 Socket 開發(fā)框架,可用來構(gòu)建一個(gè)服務(wù)器端 Socket 程序,而無需了解如何使用 Socket,如何維護(hù)Socket連接,Socket是如何工作的。該項(xiàng)目使用純 C# 開發(fā),易于擴(kuò)展和集成到已有的項(xiàng)目。只要你的已有系統(tǒng)是使用.NET開發(fā)的,你都能夠使用 SuperSocket來輕易的開發(fā)出你需要的Socket應(yīng)用程序來集成到你的現(xiàn)有系統(tǒng)之中。

          Quartz.NET

          http://www.quartz-scheduler.net/

          Quartz.NET 是一個(gè)開源的作業(yè)調(diào)度框架,是 OpenSymphony 的 Quartz API的.NET移植,它用C#寫成,可用于winform和asp.net應(yīng)用中。它提供了巨大的靈活性而不犧牲簡(jiǎn)單性。你能夠用它來為執(zhí)行一個(gè)作業(yè)而 創(chuàng)建簡(jiǎn)單的或復(fù)雜的調(diào)度。它有很多特征,如:數(shù)據(jù)庫(kù)支持,集群,插件,支持cron-like表達(dá)式等等。

          Lucene.Net

          http://lucenenet.apache.org/

          Lucene.net是Lucene的.net移植版本,是一個(gè)開源的全文檢索引擎開發(fā)包,即它不是一個(gè)完整的全文檢索引擎,而是一個(gè)全文檢索引擎的架構(gòu),提供了完整的查詢引擎和索引引擎。開發(fā)人員可以基于Lucene.net實(shí)現(xiàn)全文檢索的功能。

          HttpLib

          http://httplib.codeplex.com/

          一個(gè)基于C#語(yǔ)言的http協(xié)議的類庫(kù),Httplib讓異步交互處理數(shù)據(jù)更容易了。類庫(kù)的方法包括:上傳文件到服務(wù)器,獲取頁(yè)面數(shù)據(jù)等等。

          Smart Thread Pool

          http://www.codeproject.com/Articles/7933/Smart-Thread-Pool

          智能線程池,用SmartThreadPool可以簡(jiǎn)單就實(shí)現(xiàn)支持多線程的程序,由線程池來管理線程,可以減少死鎖的出現(xiàn)。SmartThreadPool還支持簡(jiǎn)單的生產(chǎn)者-消費(fèi)者模式,當(dāng)不需要對(duì)任務(wù)進(jìn)行持久化時(shí),還是很好用的。

          DocX

          https://docx.codeplex.com/

          DocX是一個(gè)用來操作word的輕量級(jí)的類庫(kù)。借助DocX,開發(fā)人員可以在不需要安裝Microsoft Word的情況下操縱word2007/2010文件。

          NPOI

          http://npoi.codeplex.com/

          NPOI 是 POI 項(xiàng)目的 .NET 版本。POI是一個(gè)開源的Java讀寫Excel、WORD等微軟OLE2組件文檔的項(xiàng)目。使用 NPOI 你就可以在沒有安裝 Office 或者相應(yīng)環(huán)境的機(jī)器上對(duì) WORD/EXCEL 文檔進(jìn)行讀寫。NPOI是構(gòu)建在POI 3.x版本之上的,它可以在沒有安裝Office的情況下對(duì)Word/Excel文檔進(jìn)行讀寫操作。

          PDFsharp

          https://pdfsharp.codeplex.com/

          PDFsharp 是可以輕松地在 .NET 語(yǔ)言中創(chuàng)建PDF文檔的開放源碼庫(kù)。它使用相同的繪制程序來創(chuàng)建 PDF 文檔,在屏幕上顯示,以及輸出到打印機(jī)。可以修改、合并、拆分已經(jīng)存在的 PDF 文件,支持透明圖像。

          Dapper

          https://github.com/SamSaffron/dapper-dot-net

          Dapper 是一個(gè)輕型的ORM類。代碼就一個(gè) SqlMapper.cs文件,編譯后就40K的一個(gè)很小的Dll.Dapper很快。Dapper的速度接近與IDataReader,取列表的數(shù)據(jù)超 過了DataTable。Dapper支持Mysql,SqlLite,Mssql2000,Mssql2005,Oracle等一系列的數(shù)據(jù)庫(kù),當(dāng)然如 果你知道原理也可以讓它支持Mongo db。話說,這個(gè)ORM,博主自己也一直在使用,確實(shí)十分強(qiáng)悍,至少在性能方面,恐怕.NET里面的大多數(shù)ORM只能是望其項(xiàng)背了。

          NHibernate

          https://github.com/nhibernate

          NHibernate是現(xiàn)在開發(fā)人員用的較多的一個(gè)ORM。NHibernate是一個(gè)面向.NET環(huán)境的對(duì)象/關(guān)系數(shù)據(jù)庫(kù)映射工具。對(duì)象/關(guān)系數(shù)據(jù)庫(kù)映射(object/relational mapping,ORM)這個(gè)術(shù)語(yǔ)表示一種技術(shù),用來把對(duì)象模型表示的對(duì)象映射到基于SQL的關(guān)系模型數(shù)據(jù)結(jié)構(gòu)中去。

          log4net

          http://logging.apache.org/log4net/

          log4net庫(kù)是Apache log4j框架在Microsoft .NET平臺(tái)的實(shí)現(xiàn),是一個(gè)幫助程序員將日志信息輸出到各種目標(biāo)(控制臺(tái)、文件、數(shù)據(jù)庫(kù)等)的工具。

          SharpSerializer

          http://sharpserializer.codeplex.com/

          SharpSerializer是一個(gè)開源XML和二進(jìn)制序列化器。SharpSerializer可以序列化Xml和自己的二進(jìn)制格式,還可以序列化Json等其他文本格式或其他數(shù)據(jù)加密,壓縮,優(yōu)化等二進(jìn)制流。

          XProxy

          http://xproxy.codeplex.com/

          XProxy是一個(gè)支持插件的基礎(chǔ)代理程序集。通過編寫簡(jiǎn)單的插件程序,你將能開發(fā)各種各樣的代理程序。
          XProxy是一個(gè)支持插件開發(fā)的數(shù)據(jù)交換機(jī),可以編寫插件對(duì)中轉(zhuǎn)數(shù)據(jù)進(jìn)行處理。內(nèi)置有NAT插件、加解密插件、反向代理、直接代理、間接代理等插件。

          nopCommerce

          http://nopcommerce.codeplex.com/releases/view/106146

          nopcommerce 是國(guó)外的一個(gè)高質(zhì)量的開源b2c 網(wǎng)站系統(tǒng),基于EntityFramework4.0和MVC3.0,使用Razor模板引擎,有很強(qiáng)的插件機(jī)制,包括支付配送功能都是通過插件來實(shí)現(xiàn) 的,基于xml的多語(yǔ)言版本,非常靈活的語(yǔ)言切換功能,包括在后臺(tái)都能同時(shí)編輯產(chǎn)品的中英文屬性,非常適合做外貿(mào),優(yōu)秀超前的程序架構(gòu),性能也非常強(qiáng)大, 自定義的產(chǎn)品名稱和分類又有很好的seo優(yōu)化。綜合能力遠(yuǎn)遠(yuǎn)高于國(guó)內(nèi)的一些程序架構(gòu)糟糕的.net商城程序,是二次開發(fā)和大型b2c架構(gòu)的首選。3.0開 始支持多店。

          Enterprise Library

          https://entlib.codeplex.com/

          Enterprise Library for .Net Framework 3.5 – EntLib v4.1 是patterns & practices 小組為.NET Framework 3.5 開發(fā)一套企業(yè)庫(kù), 目前最新版本為v5.0,支持.NET Framework 4.0,共包括9個(gè)Application Block,包括數(shù)據(jù)訪問(Data Access Application Block)、異常管理(Exception Handling Application Block)、數(shù)據(jù)驗(yàn)證(Validation Application Block)等等,對(duì)企業(yè)應(yīng)用開發(fā)非常有幫助,也非常實(shí)用。

          Autofac

          http://autofac.org/

          Autofac是一款非常優(yōu)秀的IOC框架,比較于其他的IOC框架,如Spring.NET,等等之類的,它非常的輕量級(jí)且性能上也很卓越。

          AutoMapper

          https://github.com/AutoMapper/AutoMapper

          AutoMapper是一個(gè).NET的對(duì)象映射工具。主要用于領(lǐng)域?qū)ο笈cDTO之間的轉(zhuǎn)換、數(shù)據(jù)庫(kù)查詢結(jié)果映射至實(shí)體對(duì)象。

          7-Zip

          http://www.7-zip.org/

          http://sourceforge.net/projects/sevenzip/postdownload?source=dlp

          7-Zip 是 一款號(hào)稱有著現(xiàn)今最高壓縮比的壓縮軟件,它不僅支持獨(dú)有的 7z 文件格式,而且還支持各種其它壓縮文件格式,其中包括 ZIP, RAR, CAB, GZIP, BZIP2和 TAR 等等。此軟件壓縮的壓縮比要比普通 ZIP 文件高 30-50% ,因此,它可以把 Zip 格式的文件再壓縮 2-10% 。

          .Net PDF 類庫(kù)

          PDFsharp

          PDFsharp是一款可以讓.NET框架支持的任何語(yǔ)言很容易的創(chuàng)建PDF文件的類庫(kù)。

          ASP.NET FO PDF

          FO PDF 是一款C#編寫類似于ASP.NET服務(wù)器控件的控件。它接受DataTable 和一些其它參數(shù)來創(chuàng)建XSL FO,并使用NFOP (Apache FOP Port in J#) PDF Formatter來繪制一個(gè)類似PDF Report 的DataGrid 。今后將會(huì)增加更多的標(biāo)簽來可以生成XSL FO 。

          Report.NET

          Report.NET 開源類庫(kù)包含了生成精確PDF文檔的類。它是.NET平臺(tái)下的C#編寫的,可以幫助你創(chuàng)建簡(jiǎn)單的靈活的PDF文件。你可以從任何ADO.NET的 DataSet取得數(shù)據(jù)來創(chuàng)建PDF文檔。ASP.NET可以用Report.NET來創(chuàng)建動(dòng)態(tài)的PDF響應(yīng)頁(yè)面。

          SharpPDF

          SharpPDF是可以用來簡(jiǎn)單的創(chuàng)建PDF文件的C#類庫(kù)。它創(chuàng)建的文件百分白兼容PDF格式。

          iTextSharp

          iTextSharp是一款開源的PDF操作類庫(kù),使用它可以快速的創(chuàng)建PDF文件。http://hardrock.cnblogs.com/ 是一個(gè)關(guān)于 iTextSharp的中文Blog。

          工作流

          Workflow.Net

          Workflow.Net是使用微軟.Net技術(shù)基于wmfc標(biāo)準(zhǔn)的創(chuàng)建工作流引擎。

          netBPM

          NetBPM是JBpm移植到.net平臺(tái)下的一款開源工作流軟件。NetBpm可以很容易和.Net應(yīng)用程序集成在一起,可以創(chuàng)建,執(zhí)行和管理工作流程序。
          Bpm Tool支持將業(yè)務(wù)模型轉(zhuǎn)換成軟件模型。業(yè)務(wù)開發(fā)人員可以使用模型驅(qū)動(dòng)的方法設(shè)計(jì),實(shí)現(xiàn),執(zhí)行和跟蹤業(yè)務(wù)流程。因此開發(fā)人員能夠更容易的關(guān)注業(yè)務(wù)邏輯的變化。

          持久層框架

          NHibernate

          NHibernate是一個(gè)面向.NET環(huán)境的針對(duì)關(guān)系型數(shù)據(jù)庫(kù)的對(duì)象持久化類庫(kù)。
          NHibernate來源于非常優(yōu)秀的基于Java的Hibernate關(guān)系型持久化工具。 NHibernate從數(shù)據(jù)庫(kù)底層來持久化你的.Net對(duì)象到關(guān)系型數(shù)據(jù)庫(kù)。NHibernate為你處理這些,你不用自己寫SQL去數(shù)據(jù)庫(kù)存取對(duì)象。你 的代碼僅僅和對(duì)象關(guān)聯(lián),NHibernat自動(dòng)產(chǎn)生SQL語(yǔ)句,并確保對(duì)象提交到正確的表和字段中去.大量減少開發(fā)時(shí)人工使用SQL和ADO.NET處理 數(shù)據(jù)的時(shí)間. NHibernate可以幫助你消除或者包裝那些針對(duì)特定數(shù)據(jù)庫(kù)的SQL代碼,并且?guī)湍惆呀Y(jié)果集從表格式的表示形式轉(zhuǎn)換到一系列的對(duì)象去。因此對(duì)于那些在 基于.NET的中間層的應(yīng)用中,它們實(shí)現(xiàn)面向?qū)ο蟮臉I(yè)務(wù)模型和商業(yè)邏輯的應(yīng)用,NHibernate是最有用的。

          FileHelpers Library

          FileHelpers Library是一款C#編寫的開源 .NET 類庫(kù)。它使用簡(jiǎn)單,很容易就可以從固定長(zhǎng)度文件或界定記錄(CSV)讀/寫數(shù)據(jù)。它也支持從不同的數(shù)據(jù)存儲(chǔ)格式(Excel, Access, SqlServer)導(dǎo)入/導(dǎo)出數(shù)據(jù)。

          Websharp

          Websharp是國(guó)人開源的一款開源持久層框架,它的目標(biāo)是設(shè)計(jì)一個(gè)基于.Net的通用的應(yīng)用軟件系統(tǒng)的框架,以簡(jiǎn)化基于.Net平臺(tái)的企業(yè)應(yīng)用軟件的開發(fā)。目前,Websharp關(guān)注于企業(yè)應(yīng)用軟件的以下幾個(gè)方面:
          1、 數(shù)據(jù)庫(kù)訪問
          2、 O/R 映射
          3、 AOP
          4、 分布式訪問

          ObjectBroker

          ObjectBroker是.NET平臺(tái)下的一款開源O/R映射框架。它支持對(duì)象緩存,1:1, 1:n 和 m:n的關(guān)聯(lián)映射等特性。

          Gentle.NET

          Gentle.NET是一款開源的與關(guān)系數(shù)據(jù)庫(kù)(RDBMS)無關(guān)的對(duì)象持久層框架,可以自動(dòng)生成SQL和對(duì)象結(jié)構(gòu)。它擁有一個(gè)SQL工廠用來創(chuàng)建自定義查詢、DataView構(gòu)建助手和卓越的性能和完善的文檔。

          Ubik

          Ubik是C# 2.0下的ORM持久層框架,當(dāng)前是WinForms應(yīng)用程序開發(fā)提供的.它支持OPath的子集而可以進(jìn)行面向?qū)ο蟛樵?且包含一個(gè)網(wǎng)絡(luò)事件系統(tǒng).

          NDal

          NDal是一個(gè)數(shù)據(jù)提取層(DAL)框架,它可以運(yùn)行在.NET和Mono環(huán)境下。

          Persist.NET

          Persist.NET是C#編寫的一款完整的持久層框架。

          ObjectBroker

          ObjectBroker是.NET平臺(tái)下的數(shù)據(jù)庫(kù)對(duì)象/關(guān)系映射(O/R Mapping)框架。

          iBATIS.NET

          iBATIS.NET幫助你的應(yīng)用系統(tǒng)創(chuàng)建更好的持久層框架。

          Advanced Data Provider

          Advanced Data Provider是為ADO.NET提供的動(dòng)態(tài)數(shù)據(jù)提供者 。可以讓應(yīng)用程序透明的訪問不同的ADO.NET 數(shù)據(jù)提供者。

          OJB.NET

          OJB.NET是一款.NET平臺(tái)下的對(duì)象/關(guān)系映射(O/R Mapping)工具。

          圖表制作

          ZedGraph

          ZedGraph是C#編寫的.NET類庫(kù),提供了用戶控件和web控件。它可以創(chuàng)建2D的線性圖、條形圖和餅圖。它功能完整且有詳細(xì)的功能自定義,不過使用默認(rèn)的選項(xiàng)就足夠好用了。

          .NET Charts

          一款類似 PieChart, StackBar, LineChart的C#開源圖表組件。

          NPlot

          NPlot是一款.NET下的開源圖表類庫(kù).它值得稱道的地方是優(yōu)雅且靈活的API設(shè)計(jì).NPlot包含了Windows Form控件, ASP.NET控件和一個(gè)創(chuàng)建Bitmap圖片的類。還有一個(gè)可用的GTK#控件。

          XSCharting

          XSCharting是C#開發(fā)的圖表組件,提供了多種多樣的圖表選項(xiàng)。

          DaveChart

          DaveChart是一個(gè)免費(fèi)的DotNet類庫(kù)。

          NChart

          NChart 提供了很多值得應(yīng)用在商業(yè),教育等多個(gè)領(lǐng)域的2 D圖表。

          WebGis

          SharpMap

          SharpMap是一款易于使用的地圖渲染器,它可以為Web和Windows應(yīng)用程序渲染GIS數(shù)據(jù)。SharpMap是使用C#編寫,基于.NET 2.0框架上開發(fā)的開源項(xiàng)目。

          monoGIS

          monoGIS將成為Mono平臺(tái)下的開源完整GIS。已經(jīng)發(fā)布了internet mapserver,OGC WMS實(shí)現(xiàn)和一些工具像空間格式轉(zhuǎn)換。

          NASA World Wind

          NASA World Wind 是C#開發(fā)的個(gè)人電腦上的開源的3D圖形虛擬地球系統(tǒng)。它結(jié)合了美國(guó)國(guó)家航空航天局(NASA)從衛(wèi)星拍攝的圖像,這些圖像應(yīng)用于Blue Marble, Landsat 7, SRTM, MODIS 以及其它更多的地方。

          開源CMS(轉(zhuǎn))

          開源.net框架的CMS

          列舉出自己見過的asp.net開源cms,方便初學(xué)者入門學(xué)習(xí),如果有更好的開源cms請(qǐng)?jiān)谠u(píng)論中推薦,謝謝!
          1、DotNetNuke(ASP.NET 2.0) 

          DotNetNuke是一個(gè)Web應(yīng)用框架的理想,為創(chuàng)建和部署的項(xiàng)目,如商業(yè)網(wǎng)站,企業(yè)內(nèi)聯(lián)網(wǎng)和外聯(lián)網(wǎng),在網(wǎng)上出版門戶,并定制垂直應(yīng)用軟件。 方便用戶-DotNetNuke旨在使用戶可以更輕松地管理所有方面的項(xiàng)目。

          下載網(wǎng)址:http://www.dotnetnuke.com/

          2、Ludico

          Ludico是C#編寫的居于ASP.NET 2.0的Portal/CMS系統(tǒng)。它的模塊化設(shè)計(jì)是你可以按照你希望的使用或開發(fā)網(wǎng)站功能。它里面有高級(jí)的用戶管理,一個(gè)所見即所的(WYSIWYG)的編輯器等。

          下載地址:http://sourceforge.net/projects/ludico/

          3、umbraco 

          Umbraco是一款在.net平臺(tái)下C#開發(fā)的開源內(nèi)容管理系統(tǒng),該系統(tǒng)效率,靈活,用戶界面都不錯(cuò)。
          下載地址:http://umbraco.org/

          4、mojoPortal

          mojoPortal是一款C#開發(fā)的面相對(duì)象網(wǎng)站框架,它可以運(yùn)行于Windows的ASP.NET 和GNU/Linux 或Mac OS X的Mono的平臺(tái)上。
          下載地址:http://www.mojoportal.com/

          5、Kodai CMS

          Kodai CMS是.NET平臺(tái)下的一款功能齊全的內(nèi)容管理系統(tǒng)。
          下載地址:http://www.gotdotnet.com/workspaces/workspace.aspx?id=070f30c3-6089-4a75-b84c-fac654a7ec08
          6、nkCMS

          NkCMS是使用ASP.net和Sql server 2000開發(fā)的內(nèi)容管理系統(tǒng)。
          下載地址:http://nkcms.sourceforge.net/

          7、Go.Kryo

          Go.Kryo是一個(gè)用ASP.NET(C#).NET 實(shí)現(xiàn)的簡(jiǎn)單的內(nèi)容管理系統(tǒng),后臺(tái)數(shù)據(jù)庫(kù)使用Microsoft SQL Server 。
          下載地址:http://sourceforge.net/projects/gokryo/
          8、Amplefile

          Amplefile是一款內(nèi)容管理系統(tǒng),是.Net環(huán)境下的windows應(yīng)用程序,使用了.Net remoting.

          下載地址:http://sourceforge.net/projects/amplefile/

          9、ndCMS

          ndCMS是 ASP.net (C#)下的一個(gè)內(nèi)容管理系統(tǒng)。它提供了用戶管理,文件管理,一個(gè)WYSIWYG編輯器,模板管理,拼寫檢查和內(nèi)置的http壓縮。ndCMS的目標(biāo)是提供一個(gè)簡(jiǎn)單而快速的方式部署.Net站點(diǎn)

          下載地址:http://ndcms-net.sourceforge.net/

          10、Cuyahoga

          Cuyahoga是C#開發(fā)的靈活的CMS / Portal 解決方案。它可以運(yùn)行于Microsoft .NET 和Mono 平臺(tái),支持SQL Server, PostgreSQL或MySQL作為底層數(shù)據(jù)庫(kù)。
          下載地址:http://www.cuyahoga-project.org/

          11、Rainbow

          Rainbow項(xiàng)目是一款使用Microsoft‘s ASP.NET和C#技術(shù)開發(fā)的有豐富功能的開源內(nèi)容管理系統(tǒng)。

          12、NetCMS網(wǎng)站內(nèi)容管理系統(tǒng)

          NetCMS是基于ASP.NET2.0開發(fā)的網(wǎng)站內(nèi)容管理系統(tǒng),程序完全開源,沒有任何文件加密, 不需要注冊(cè)任何組件,完全開源方便您二次開發(fā)。

          全新“網(wǎng)站模板與網(wǎng)站程序完全分離”的概念,具有強(qiáng)大的標(biāo)簽加樣式的個(gè)性化組合,自定義標(biāo)簽、自定義表單、JS管理加JS模型(自定義JS,系統(tǒng) JS)的靈活應(yīng)用,支持不同頻道、欄目、內(nèi)容頁(yè)、專題等應(yīng)用不同的模板,隨時(shí)能編輯、修改和更換網(wǎng)站界面,系統(tǒng)集成類同Macromedia Dreamweaver一樣簡(jiǎn)單的可視模板編輯方式,可批量設(shè)置屬性,模板標(biāo)簽全面支持目前最受歡迎的DIV+CSS格式,支持批量綁定模板,完全做到輕 松換膚。

          13、拓文asp.net網(wǎng)站內(nèi)容管理系統(tǒng) v6.1

          重 寫的所有代碼,程序的速度、靈活性、安全也有極大的提高。主打的文章、軟件模塊功能繼續(xù)增強(qiáng)。 支持動(dòng)態(tài)、靜態(tài)頁(yè)面混合存在,減少了不必要生成靜態(tài)頁(yè)面的負(fù)擔(dān)。功能:文章采集、會(huì)員管理、廣告管理、軟件下載,新聞文章,留言本,調(diào)查投票,友情鏈接, 在線文件管理,公告發(fā)布,數(shù)據(jù)庫(kù)管理。界面友好、功能完善、簡(jiǎn)單易用、管理方便。它能幫助您建立高效率的獨(dú)立站點(diǎn)。CMS V6新特性 全新的選項(xiàng)卡式操作界面,首個(gè)采用選項(xiàng)卡式操作界面的CMS,極大提高管理人員的工作效率和用戶體驗(yàn)。
          多線程并發(fā)生成html ,多線程并發(fā)采集,編譯級(jí)模板,模板可編程性,可定制模型,可擴(kuò)展模型,可自定義字段,可自定義標(biāo)簽,支持任務(wù)調(diào)度,還有更多功能等待您的發(fā)掘。

          CHINAZ編輯注:如果安裝出錯(cuò)的話手動(dòng)將Install里的*.SQL導(dǎo)入 修改Web.config的設(shè)置就可以了用戶名admin密碼123

          14、ROYcms 是國(guó)內(nèi)CMS市場(chǎng)的新秀、也是國(guó)內(nèi)少有的采用微軟的ASP.NET 2.0 + SQL2000/2005 技術(shù)框架開發(fā)的CMS,充分利用ASP.NET架構(gòu)的優(yōu)勢(shì),突破傳統(tǒng)ASP類CMS的局限性,采用更穩(wěn)定執(zhí)行速度更高效的面向?qū)ο笳Z(yǔ)言C#設(shè)計(jì),沿續(xù) PETshop的代碼框架,全新的模板引擎機(jī)制,全新的靜態(tài)生成方案,這些功能和技術(shù)上的革新塑造了一個(gè)基礎(chǔ)結(jié)構(gòu)穩(wěn)定功能創(chuàng)新和執(zhí)行高效的CMS。

          下載地址:http://www.roycms.cn

          1 奎宇工作室 / DotNetCodes C#

          一些常用的功能性代碼,可以減少許多開發(fā)時(shí)間,而且類與類之間沒有什么依賴,每個(gè)類都可以單獨(dú)拿出來使用

          2 beyonehu / manual_dota C#

          《刀塔傳奇》開源項(xiàng)目,服務(wù)器+客戶端,蠻牛主辦深圳玩貝科技組織 http://www.unitymanual.com/forum-p...

          3 oschina / wp7-app C#

          OSCHINA 的 Windows Phone 7 客戶端源碼,可直接在 Marketplace 上搜索“開源中國(guó)”來安裝此app

          4 anycmd / anycmd C#

          一個(gè).net平臺(tái)的完全開源的,完整支持rbac的,將會(huì)支持xacml、javascript的通用的權(quán)限框架、引擎、中間件、解決方案。

          5 kerryjiang / SuperSocket C#

          SuperSocket 是一個(gè)輕量級(jí)的可擴(kuò)展的 Socket 開發(fā)框架,可用來構(gòu)建一個(gè)服務(wù)器端 Socket 程序,而無需了解如何使用...

          6 Scut / Scut C#

          Scut游戲服務(wù)器引擎是使用C#語(yǔ)言開發(fā),特別適用于手機(jī)網(wǎng)絡(luò)游戲,支持使用Python腳本進(jìn)行游戲開發(fā);可以支持多種數(shù)據(jù)庫(kù):支持HTT...

          7 nbboy / CommOAuth2 C#

          支持國(guó)內(nèi)淘寶,支付寶,新浪,微信,騰訊微博快捷登錄

          8 wojilu / wojilu C#

          (1)一個(gè) .net 平臺(tái)下的全棧式、輕量級(jí)開發(fā)框架,包括 ORM、MVC、IOC、AOP、JSON、LOG 等,同時(shí)包括全套圖文教程...

          9 海洋餅干 / AForge.NET C#

          AForge.NET 是一個(gè)專門為開發(fā)者和研究者基于C#框架設(shè)計(jì)的,他包括計(jì)算機(jī)視覺與人工智能,圖像處理,神經(jīng)網(wǎng)絡(luò),遺傳算法,機(jī)器學(xué)習(xí)...

          10 奎宇工作室 / Asp.Net Mvc WebManger C#

          基于asp.net mvc的開源網(wǎng)站管理系統(tǒng)

          11 bobo2cj / iamge2text C#

          識(shí)別出圖片里的數(shù)字和字母

          12 gsbhzh / GG C#

          可在廣域網(wǎng)部署運(yùn)行的QQ高仿版 -- GG嘰嘰。 項(xiàng)目地址:http://www.cnblogs.com/justnow/

          13 cheng5x / Yc.QrCode C#

          碼曬客/瘋狂創(chuàng)意二維碼,底層 ,模版制作開源

          14 longshine / Mina.NET C#

          Mina.NET是.NET上的輕量級(jí)高性能網(wǎng)絡(luò)程序框架,支持TCP、UDP和串口等多種傳輸通道,能夠幫助開發(fā)者快速地開發(fā)高伸縮性的應(yīng)用程序。

          15 葡萄城控件 / ActiveReports C#

          ActiveReports是一款在全球范圍內(nèi)應(yīng)用非常廣泛的報(bào)表控件,以提供.NET報(bào)表所需的全部報(bào)表設(shè)計(jì)功能領(lǐng)先于同類報(bào)表控件,包括對(duì)...

          16 wangwei123 / easy4net C#

          easy4net是一個(gè)輕量級(jí)orm框架,靈活在于可以自己編寫復(fù)雜的SQL語(yǔ)句查詢,簡(jiǎn)單在于幾分鐘內(nèi)便能上手使用,并支持mysql, m...

          17 wobumang / wbm.weixinmpsdk C#

          微信公眾平臺(tái)SDK。一個(gè)更方便,更快速的C#SDK,希望能幫助更多的朋友學(xué)習(xí)和使用

          18 rainy_blue_sky / SmartHomeChat C#

          用于局域網(wǎng)的聊天軟件, 從其他開源平臺(tái)上移植過來的, 感覺不錯(cuò)! 開發(fā)平臺(tái): VS2012 開發(fā)語(yǔ)言: ...

          19 bobo2cj / SimpleWinformFrame C#

          簡(jiǎn)單的winform開發(fā)架子,客戶端主程序(tabControl),客戶端自動(dòng)更新程序(WebClient),服務(wù)端更新列表生成器(XML)

          20 _Jerry / JLib C#

          C#類庫(kù)

          21 kerryjiang / SuperWebSocket C#

          SuperWebSocket是WebSocket協(xié)議服務(wù)器端的.NET實(shí)現(xiàn). 作為HTML5的一個(gè)重要新特性,WebSocket 規(guī)...

          22 yqblog / yqblog C#

          yqblog-基于MVC,Bootstrap的個(gè)人博客系統(tǒng)

          23 Aimeast / GitCandy C#

          GitCandy是一個(gè)開源的基于Asp.Net Mvc的輕量級(jí)Git服務(wù)端。 QQ交流群:200319579

          24 xiaocong_soft / CheckUpdate.Net C#

          Winform開發(fā)的檢查更新程序。可用于Winform/WPF,主要功能包括更新文件、更新程序自身、下載安裝包等。

          25 奎宇工作室 / NoIIS C#

          基于.net4.0的免裝IIS運(yùn)行程序的工具,只要安裝.net4.0,就可以快速啟動(dòng)網(wǎng)站程序,為客戶演示提供方便

          最后,如果你想學(xué)C/C++可以私信小編“01”獲取素材資料以及開發(fā)工具和聽課權(quán)限哦!


          主站蜘蛛池模板: 熟女少妇精品一区二区| 国产成人一区二区三区电影网站 | 白丝爆浆18禁一区二区三区 | 无码精品人妻一区二区三区免费 | 中文字幕在线看视频一区二区三区| 亚洲av日韩综合一区久热| 激情一区二区三区| AV天堂午夜精品一区| 亚洲一区无码精品色| 在线观看免费视频一区| 国模丽丽啪啪一区二区| 狠狠综合久久AV一区二区三区 | 国产伦精品一区二区三区视频猫咪| 视频精品一区二区三区| 亚洲视频一区二区| 无码人妻一区二区三区在线水卜樱| 北岛玲在线一区二区| 亚洲AV福利天堂一区二区三| 国产婷婷色一区二区三区深爱网 | 亚洲AⅤ视频一区二区三区| 中文字幕色AV一区二区三区| 国产精品揄拍一区二区久久| 无码少妇一区二区三区芒果| 在线视频一区二区三区三区不卡| 精品视频一区二区三区在线观看| 人妻AV中文字幕一区二区三区 | 好爽毛片一区二区三区四无码三飞| 午夜视频一区二区| 人妻无码久久一区二区三区免费| 亚洲av色香蕉一区二区三区| 国产在线精品一区二区三区不卡| 久久亚洲日韩精品一区二区三区| 无码aⅴ精品一区二区三区| 东京热人妻无码一区二区av| 亚洲AV综合色区无码一区爱AV| 另类ts人妖一区二区三区| 日本一区频道在线视频| 大香伊蕉日本一区二区| 中文字幕一区二区视频| 日韩精品视频一区二区三区| 亚洲AV成人精品日韩一区18p|