-
當(dāng)前位置:首頁 > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
開源文章生成器(開源文章生成器下載)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于開源文章生成器的問題,以下是小編對(duì)此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個(gè)非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對(duì)話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁版、PC客戶端
官網(wǎng):https://ai.de1919.com。
本文目錄:
在entity framework中怎么調(diào)用存儲(chǔ)過程
一、使用存儲(chǔ)過程的必要性我們知道EF通過元數(shù)據(jù),即概念模型(Concept Model)、存儲(chǔ)模型(Storage Model)和概念/存儲(chǔ)映射(C/S Mapping),和狀態(tài)追蹤(State Tracking)機(jī)制可以為基于模型的操作自動(dòng)生成SQL。對(duì)于一些簡(jiǎn)單的項(xiàng)目開發(fā),這是非常理想的,因?yàn)樗麄兺耆梢圆挥藐P(guān)注數(shù)據(jù)存儲(chǔ)層面的東西,你可以采用一些完全不具有數(shù)據(jù)庫知識(shí)的開發(fā)者。但是理想總歸是理想,對(duì)于企業(yè)級(jí)開發(fā)來說,我們需要的是對(duì)數(shù)據(jù)庫層面數(shù)據(jù)的操作有自己的控制。在這方面,我們可以隨便舉兩個(gè)典型的場(chǎng)景:
邏輯刪除:對(duì)于一些重要的數(shù)據(jù),我們可能需要讓它們永久保存。當(dāng)我們?cè)噲D“刪除”這些數(shù)據(jù)的時(shí)候,我們并不是將它們從數(shù)據(jù)表中移除(物理刪除),而是為這條記錄作一個(gè)已經(jīng)被刪除的標(biāo)記;
并發(fā)處理:為了解決相同的數(shù)據(jù)在獲取和提交這段時(shí)間內(nèi)被另一個(gè)用戶修改或者刪除,我們往往SQL層面增加并發(fā)控制的邏輯。比較典型的做法是在每一個(gè)表中添加一個(gè)VersionNo這樣的字段,你可以采用TimeStamp,也可以直接采用INT或者GUID。在執(zhí)行Update或者Delete的SQL中判斷之前獲取的VersionNo是否和當(dāng)前的一致。
讓解決這些問題,就不能使用EF為我們自動(dòng)生成的SQL,只有通過使用我們自定義的存儲(chǔ)過程。
二、實(shí)現(xiàn)存儲(chǔ)過程自動(dòng)匹配的必要條件
本篇文章提供的存儲(chǔ)過程自動(dòng)映射機(jī)制是通過代碼生成的方式完成的。說白了,就是讀取原來的.edmx模型文件,通過分析在存儲(chǔ)模型中使用的數(shù)據(jù)表,導(dǎo)入基于該表的CUD存儲(chǔ)過程;然后再概念/存儲(chǔ)映射節(jié)點(diǎn)中添加實(shí)體和這些存儲(chǔ)過程的映射關(guān)系。那實(shí)現(xiàn)這樣的代碼生成,需要具有如下三個(gè)固定的映射規(guī)則。
數(shù)據(jù)表名-存儲(chǔ)過程名:這個(gè)映射關(guān)系幫助我們通過存儲(chǔ)模型中的實(shí)體名找到對(duì)應(yīng)CUD三個(gè)存儲(chǔ)過程(如果實(shí)體是數(shù)據(jù)表);
數(shù)據(jù)表列名-存儲(chǔ)過程參數(shù)名:當(dāng)存儲(chǔ)過程被執(zhí)行的時(shí)候,通過這個(gè)映射讓概念模型實(shí)體某個(gè)屬性值作為對(duì)應(yīng)的參數(shù);
存儲(chǔ)過程參數(shù)名-版本:當(dāng)進(jìn)行參數(shù)賦值的時(shí)候,通過這個(gè)映射決定是使用Original或者Current版本。
在實(shí)際的開發(fā)過程中,這樣的標(biāo)準(zhǔn)存儲(chǔ)過程一般都是通過代碼生成器生成的(在我的文章《創(chuàng)建代碼生成器可以很簡(jiǎn)單:如何通過T4模板生成代碼?[下篇]》中有過相應(yīng)的實(shí)現(xiàn)),它們具有這樣的映射關(guān)系。
基于這三種映射關(guān)系,我定義了如下一個(gè)名為IProcedureNameConverter的接口。其中OperationKind是我自定義的一個(gè)表示CUD操作類型的枚舉。
1: public interface IProcedureNameConverter
2: {
3: string GetProcedureName(string tableName, OperationKind operationKind);
4: string GetColumnName(string parameterName);
5: DataRowVersion GetVersion(string parameterName);
6: }
7:
8: public enum OperationKind
9: {
10: Insert,
11: Update,
12: Delete
13: }
按照我們當(dāng)前項(xiàng)目采用的命名規(guī)范,我定義了如下一個(gè)默認(rèn)的DefaultNameConverter。它體現(xiàn)的是這樣的映射關(guān)系,比如有個(gè)數(shù)據(jù)表明為T_USER(大寫,單詞之間用“_”隔開,并以T_為前綴),它對(duì)應(yīng)的CUD存儲(chǔ)過程名分別為:P_USER_I、P_USER_U和P_USER_D(大寫,以代表存儲(chǔ)過程的P_為前綴,后綴_I/U/D表示CUD操作類型,中間為去除前綴的表名)。如果列名為USER_ID,參數(shù)名為p_user_id(小寫,加p_前綴)。如果需要用Original值為參數(shù)賦值,需要將p_前綴改成o_前綴(o_user_id)。
1: public class DefaultNameConverter: IProcedureNameConverter
2: {
3: public string GetProcedureName(string tableName, OperationKind operationKind)
4: {
5: switch (operationKind)
6: {
7: case OperationKind.Insert:
8: return string.Format("P_{0}_I", tableName.Substring(2));
9: case OperationKind.Update:
10: return string.Format("P_{0}_U", tableName.Substring(2));
11: default:
12: return string.Format("P_{0}_D", tableName.Substring(2));
13: }
14: }
15:
16: public string GetColumnName(string parameterName)
17: {
18: return parameterName.Substring(2).ToUpper();
19: }
20:
21: public DataRowVersion GetVersion(string parameterName)
22: {
23: if(parameterName.StartsWith("o"))
24: {
25: return DataRowVersion.Original;
26: }
27: else
28: {
29: return DataRowVersion.Current;
30: }
31: }
32: }
三、通過T4生成新的.edmx模型
我們采用的基于T4的代碼生成,了解EF的應(yīng)該對(duì)T4不會(huì)感到陌生了。如果對(duì)代碼生成感興趣的話,可以看看我的文章《與VS集成的若干種代碼生成解決方案[博文匯總(共8篇)]》。這里利用借助于T4 ToolBox這個(gè)開源工具箱,并采用SQL Server SMO獲取存儲(chǔ)過程信息。所有涉及到的文本轉(zhuǎn)化都實(shí)現(xiàn)在如下一個(gè)ProcedureMappingTemplate類型中,由于內(nèi)容較多,具體實(shí)現(xiàn)就忽略了,有興趣的朋友可能下載源代碼。ProcedureMappingTemplate具有兩個(gè)構(gòu)造函數(shù)的參數(shù)分別表示:源.edmx文件,服務(wù)器和數(shù)據(jù)庫名,存儲(chǔ)過程的Schema(默認(rèn)為dbo)和具體的ProcedureNameConverter(默認(rèn)為DefaultNameConverter)。
1: public class ProcedureMappingTemplate: Template
2: {
3: public XmlDocument SourceModel { get; private set; }
4: public IProcedureNameConverter ProcedureNameConverter { get; private set; }
5: public Database Database { get; private set; }
6: public string Schema { get; private set; }
7:
8: public ProcedureMappingTemplate(string sourceModelFile, string serverName, string databaseName);
9: public ProcedureMappingTemplate(string sourceModelFile, string serverName, string databaseName,
10: IProcedureNameConverter procedureNameConverter, string schema);
11:
12: protected virtual XElement GenerateStorageModelNode();
13: protected virtual XElement GenerateMappingNode();
14: public override string TransformText()
15: {
16: XElement newStorageModelNode = this.GenerateStorageModelNode();
17: XElement newMappingNode = this.GenerateMappingNode();
18:
19: XmlNode storageModelNode = this.SourceModel.GetElementsByTagName("edmx:StorageModels")[0];
20: storageModelNode.InnerXml = newStorageModelNode.Elements().ToArray()[0].ToString();
21:
22: XmlNode mappingNode = this.SourceModel.GetElementsByTagName("edmx:Mappings")[0];
23: mappingNode.InnerXml = newMappingNode.Elements().ToArray()[0].ToString();
24:
25: this.WriteLine("<?xml version="1.0" encoding="utf-8"?>");
26: this.Write(this.SourceModel.DocumentElement.OuterXml.Replace("xmlns=""",""));
27: return GenerationEnvironment.ToString();
28: }
29: }
在使用過程中,你只需要在tt模板中創(chuàng)建這個(gè)ProcedureMappingTemplate對(duì)象,調(diào)用Render方法即可。
1: <#@ template debug="true" hostSpecific="true" #>
2: <#@ output extension=".edmx" #>
3: <#@ assembly name="Microsoft.SqlServer.ConnectionInfo" #>
4: <#@ assembly name="Microsoft.SqlServer.Smo" #>
5: <#@ assembly name="Microsoft.SqlServer.Management.Sdk.Sfc" #>
6: <#@ assembly name="$(TargetDir)Artech.ProcedureMapping.dll" #>
7: <#@ import namespace="Artech.ProcedureMapping" #>
8: <#@ include file="T4Toolbox.tt" #>
9: <#
10: new ProcedureMappingTemplate(this.Host.ResolvePath("UserModel.edmx"),".","EFExtensions").Render();
11: #>
四、看看生成出來的.emdx
通過上面創(chuàng)建的TT模板(你指定的數(shù)據(jù)庫中一定要存在具有相應(yīng)映射關(guān)系的存儲(chǔ)過程),新的.edmx模型文件會(huì)作為該tt文件的依賴文件被生成出來。而這個(gè)新生成的.edmx具有存儲(chǔ)過程映射信息。具體來說,下面是原始的.edmx文件(只保留元數(shù)據(jù)節(jié)點(diǎn))。
1: <?xml version="1.0" encoding="utf-8"?>
2: <edmx:Edmx Version="2.0" xmlns:edmx="http://schemas.microsoft.com/ado/2008/10/edmx">
3: <!-- EF Runtime content -->
4: <edmx:Runtime>
5: <!-- SSDL content -->
6: <edmx:StorageModels>
7: <Schema Namespace="Artech.UserModel.Store" Alias="Self" Provider="System.Data.SqlClient" ProviderManifestToken="2008" xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" xmlns="http://schemas.microsoft.com/ado/2009/02/edm/ssdl">
8: <EntityContainer Name="ArtechUserModelStoreContainer">
9: <EntitySet Name="T_USER" EntityType="Artech.UserModel.Store.T_USER" store:Type="Tables" Schema="dbo" />
10: </EntityContainer>
11: <EntityType Name="T_USER">
12: <Key>
13: <PropertyRef Name="USER_ID" />
14: </Key>
15: <Property Name="USER_ID" Type="varchar" Nullable="false" MaxLength="50" />
16: <Property Name="USER_NAME" Type="nvarchar" Nullable="false" MaxLength="50" />
17: </EntityType>
18: </Schema>
19: </edmx:StorageModels>
20: <!-- CSDL content -->
21: <edmx:ConceptualModels>
22: <Schema Namespace="Artech.UserModel" Alias="Self" xmlns:annotation="http://schemas.microsoft.com/ado/2009/02/edm/annotation" xmlns="http://schemas.microsoft.com/ado/2008/09/edm">
23: <EntityContainer Name="EFExtensionsEntities" annotation:LazyLoadingEnabled="true">
24: <EntitySet Name="Users" EntityType="Artech.UserModel.User" />
25: </EntityContainer>
26: <EntityType Name="User">
27: <Key>
28: <PropertyRef Name="ID" />
29: </Key>
30: <Property Name="ID" Type="String" Nullable="false" MaxLength="50" Unicode="false" FixedLength="false" />
31: <Property Name="Name" Type="String" Nullable="false" MaxLength="50" Unicode="true" FixedLength="false" />
32: </EntityType>
33: </Schema>
34: </edmx:ConceptualModels>
35: <!-- C-S mapping content -->
36: <edmx:Mappings>
37: <Mapping Space="C-S" xmlns="http://schemas.microsoft.com/ado/2008/09/mapping/cs">
38: <EntityContainerMapping StorageEntityContainer="ArtechUserModelStoreContainer" CdmEntityContainer="EFExtensionsEntities">
39: <EntitySetMapping Name="Users">
40: <EntityTypeMapping TypeName="Artech.UserModel.User">
41: <MappingFragment StoreEntitySet="T_USER">
42: <ScalarProperty Name="ID" ColumnName="USER_ID" />
43: <ScalarProperty Name="Name" ColumnName="USER_NAME" />
44: </MappingFragment>
45: </EntityTypeMapping>
46: </EntitySetMapping>
47: </EntityContainerMapping>
48: </Mapping>
49: </edmx:Mappings>
50: </edmx:Runtime>
51: </edmx:Edmx>
這是新生成的.edmx文件中的XML。
web前端開發(fā)常用又好用的幾個(gè)軟件
web前端開發(fā)常用又好用的幾個(gè)軟件有:1.Dreamweaver
Dreamweaver是非常老的前端開發(fā)工具了,功能強(qiáng)大還支持可視化開發(fā),不需要懂代碼就能制作出簡(jiǎn)單的前端頁面,深受很多開發(fā)者的歡迎。但其缺點(diǎn)就是消耗的資源過大,軟件啟動(dòng)和運(yùn)行都會(huì)導(dǎo)致電腦運(yùn)行變慢。
2.sublime text
sublime text是一款超級(jí)輕量級(jí)的開發(fā)工具,輕量級(jí)就代表它運(yùn)行速度打開速度都超級(jí)快,并且還支持配置插件來構(gòu)建不同的開發(fā)環(huán)境,還為開發(fā)者配置了很多的快捷鍵,使用習(xí)慣之后你就會(huì)離不開它。
3.Hbuilde
Hbuilder是近幾年才開始火起來的前端開發(fā)工具,開發(fā)界面十分簡(jiǎn)潔,顯示風(fēng)格也很適宜,會(huì)讓開發(fā)者有一種很舒服的感覺,同樣也是輕量級(jí)的開發(fā)工具打開和運(yùn)行速度都非??臁?br/>4.Editplus
Editplus是一款超級(jí)好用的編輯器,它不僅僅支持前端語言開發(fā),C語言、Java語言等等語言都可以使用Editplus開發(fā),并且軟件本身只有幾M左右,十分小巧。缺點(diǎn)就是沒有編程的提示功能,對(duì)初學(xué)者不是很友好。
想要了解更多有關(guān)web前端的相關(guān)信息,推薦咨詢千鋒教育。千鋒教育成立教研學(xué)科中心,推出貼近企業(yè)需求的線下技能培訓(xùn)課程。采用全程面授高品質(zhì)、高體驗(yàn)培養(yǎng)模式,學(xué)科大綱緊跟企業(yè)需求,擁有國內(nèi)一體化教學(xué)管理及學(xué)員服務(wù),在職業(yè)教育發(fā)展道路上不斷探索前行。
誰有用C#開發(fā)的工具?
1.Excle神器NPOINPOI 是 POI 項(xiàng)目的 .NET 版本。POI是一個(gè)開源的Java讀寫Excel、WORD等微軟OLE2組件文檔的項(xiàng)目。NPOI讓.NET平臺(tái)擁有了一個(gè)比較完善的讀寫Excel的工具。使用量非常廣泛,應(yīng)該是開源的.NET Excel讀寫工具中曝光度最高的一個(gè)吧,沒有之一。
使用NPOI的優(yōu)勢(shì)有:完全免費(fèi)使用,包含了大部分EXCEL的特性(單元格樣式、數(shù)據(jù)格式、公式等等),支持處理的文件格式包括xls, xlsx, docx.采用面向接口的設(shè)計(jì)架構(gòu)( 可以查看 NPOI.SS 的命名空間),同時(shí)支持文件的導(dǎo)入和導(dǎo)出,你不需要在服務(wù)器上安裝微軟的Office,可以避免版權(quán)問題。使用起來比Office PIA的API更加方便,更人性化。那么還等什么呢?下面就是我第一次使用NPOI做的一個(gè)日?qǐng)?bào)表工具,里面的單元格合并都是在程序中動(dòng)態(tài)完成的,過程很艱辛,但結(jié)果很美好,目前已經(jīng)使用了2年,穩(wěn)定無bug,非常給力啊。
官方網(wǎng)站:http://npoi.codeplex.com/
https://github.com/tonyqus/npoi
官方教程:http://www.npoi.info/
2.NPOI擴(kuò)展—NPOI.CSS
NPOI.CSS是一個(gè)可以在使用NPOI時(shí)用類CSS的方法設(shè)置單元格樣式的NPOI擴(kuò)展,只支持.NET4及以上版本的項(xiàng)目。這個(gè)擴(kuò)展是為了方便在使用的時(shí)候設(shè)置單元格及其相關(guān)格式樣式,可以使用類似Css的方式,非常給力??纯聪旅娴拇a:
1
cell.CSS("color:red;font-weight:bold;font-size:11;font-name:宋體;border-type:thin;")
官方網(wǎng)站:https://github.com/qihangnet/npoi.css
3.yjinglee.office
yjinglee.office用于.Net平臺(tái)下的Excel操作,主要封裝NPOI對(duì)外提供更簡(jiǎn)單實(shí)用的API,提供以下功能點(diǎn):
1.讀取Excel數(shù)據(jù)轉(zhuǎn)換成對(duì)象集合
2.寫入集合到Excel,并提供可以Excel樣式定義
看看一段讀取Excel的代碼:
1
2
3
4
5
6
7
8
9
10
var Reports = new Collection();
for (var i = 0; i < 10; i++)
{
Reports.Add(new Report {Id = i*100, Name = Guid.NewGuid().ToString()});
}
var excel = new Excel(new DefaultStyle());//創(chuàng)建Excel實(shí)例,可以傳遞不同的樣式實(shí)例
excel.CreateSheet("Test");//創(chuàng)建一個(gè)Sheet,命名為Test
excel.WriteObject(Reports, 0, 0);//在Sheet0中的第0行寫入集合
excel.SetColumnWidth(0, 0, new [] {5, 35});//在Sheet0的第0列開始依次設(shè)置列寬
excel.WriteFile(Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase, "demo.xlsx"));//保存文件
4.ExcelReport報(bào)表引擎
ExcelReport是一款基于NPOI開發(fā)的報(bào)表引擎組件。它基于關(guān)注點(diǎn)分離的理念,將數(shù)據(jù)與樣式、格式分離。讓模板承載樣式、格式等NPOI不怎么擅長(zhǎng)且實(shí)現(xiàn)繁瑣的信息,結(jié)合NPOI對(duì)數(shù)據(jù)的處理的優(yōu)點(diǎn)將Excel報(bào)表的生成化繁為簡(jiǎn)。同時(shí),對(duì)報(bào)表組成的基本元素進(jìn)行了抽象,進(jìn)一步簡(jiǎn)化了Excel報(bào)表的生成過程。
官方網(wǎng)站:https://github.com/hanzhaoxin/ExcelReport
介紹文章:http://www.cnblogs.com/hanzhaoxin/p/4472860.html
5.Epplus
Epplus是一個(gè)使用Open Office XML(Xlsx)文件格式,讀寫Excel 2007/2010文件的開源組件。和NPOI相比,它更早的支持了Xlsx格式,而NPOI支持Excel 2003更好,現(xiàn)在新版本的NPOI也開始支持Xlsx了。所以他們兩個(gè)還是有一點(diǎn)區(qū)別的。Epplus我沒用過,但很早就聽說了,也是使用非常官方的一個(gè),目前也一直在更新。看大家的使用需求了??梢試L試一下。支持的范圍也很廣,例如:?jiǎn)卧窈喜ⅲ瑔卧駱邮?,圖表(這個(gè)NPOI目前還不是很好),表格,數(shù)據(jù)驗(yàn)證,公式,VBA等等。
官方網(wǎng)站:http://epplus.codeplex.com/
6.LinqToExcel
LinqToExcel是一個(gè).NET平臺(tái)下開源項(xiàng)目,它主要實(shí)現(xiàn)了LINQ的語法查詢Excel電子表格。類型之前的LINQToXXX如果你是LINQ語法糖愛好者那最適合你。例如,下面代碼,查詢電子表格的頭:
1
2
3
4
var excel = new ExcelQueryFactory("excelFileName");
var indianaCompanies = from c in excel.Worksheet<Company>()
where c.State == "IN"
select c;
官方網(wǎng)站:https://github.com/paulyoder/
7.NetOffice組件
NetOffice組件比較特別,是一個(gè)操作Office的強(qiáng)大組件,包括處理Office, Excel, Word, Outlook, PowerPoint, Access, Project, Visio等,所以支持非常全面。但是這個(gè)組件并不是完全單獨(dú)寫的,而是調(diào)用Microsoft Office的互操作程序集以及VSTO,也就是進(jìn)行了一個(gè)深度的封裝,從而讓你不需要安裝這些東西,只需要拷貝相應(yīng)的程序集就可以了。目前一共包括16個(gè)操作的程序集。根據(jù)你的需要可以選擇相應(yīng)的程序集。它有幾個(gè)優(yōu)點(diǎn):
1.沒有Office的版本限制;
2.支持Office2000,2003,2007,2010,2013版本,就是支持全部Office的版本,足夠強(qiáng)大;
3.支持版本之間的獨(dú)立開發(fā)
4.操作語法和Microsoft的互操作程序集的語法是一樣的;因此更加易于學(xué)習(xí)和使用;
5.如果你熟悉Office對(duì)象模型,你可以使用你現(xiàn)有的PIA代碼,不需要重新學(xué)習(xí);
6.優(yōu)化了一些COM操作的代碼
7.可以在.NET2.0及以上環(huán)境使用;
8.部署方便,不需要注冊(cè),沒有依賴的程序集
其他的功能看官方文件介紹,如果有空,大家對(duì)這個(gè)需求強(qiáng)烈,可以寫文章專門介紹。
官方網(wǎng)站:http://netoffice.codeplex.com/
8.Word文檔讀寫工具Docx
DocX是一個(gè)以非常直觀簡(jiǎn)單的方式操作Word 2007/2010文件的輕量級(jí).NET組件。它的速度非??欤也恍枰惭b微軟的Office軟件。在中國,免費(fèi)并且小巧的WPS有足夠的理由讓很多用戶放棄龐大的Office,那在實(shí)際軟件開發(fā)過程中,這玩意就有用處了。遺憾是不支持2003,但總歸是被淘汰的趨勢(shì),而且用WPS,也沒有啥版本的區(qū)別。目前支持在文件中插入、刪除和替代文本,支持所有的文本格式,如字體,下劃線,高亮等;支持插入圖片、超鏈接、表格、頁眉頁腳以及自定義屬性等;支持類似JQuery的鏈?zhǔn)綄懛?,很方便編程開發(fā)。
相比Excel來說,開源的操作Doc文檔的組件比較少,這個(gè)組件只能勉強(qiáng)滿足一些基本功能吧。遇到一些高級(jí)的,坑還是很多。但總的來說,常規(guī)支持是第一步吧,該項(xiàng)目目前也在更新中,期待更加完善。我在2013年曾經(jīng)寫過一篇介紹基本使用的文章:【原創(chuàng)】開源Word讀寫組件DocX介紹與入門
官方網(wǎng)站:http://docx.codeplex.com/
9.PDF處理組件PDFsharp
生成PDF文件格式的文檔,大家肯定有想過,很多人項(xiàng)目中也肯定用過,方法、組件肯定有很多。但是.NET平臺(tái)開源免費(fèi)的不多,最好用的應(yīng)該是ItextPDF,不過人家是非商業(yè)免費(fèi),所以我們就排除在外吧。看看免費(fèi)的,這個(gè)PDFSharp是目前比較完善,而且還在持續(xù)更新的。支持功能有:
可以使用.NET編程語言動(dòng)態(tài)創(chuàng)建PDF文檔,
很容易使用對(duì)象模型來構(gòu)建文檔,
全部用C#重寫設(shè)計(jì)和編寫代碼,
可以生成PDF文件和顯示在窗體或者打印,
使用同一源文件,可以修改、合并或者分割PDF文件,
可以控制圖片的透明度,嵌入了字體等等。支持總體算全面吧,不過沒有親自測(cè)試過。
官方網(wǎng)站:http://www.pdfsharp.net/
10.MigraDoc文檔生成器
MigraDoc是一個(gè).NET平臺(tái)開源的文檔生成器,幾乎支持所有的文字處理功能。你只需要添加段落,表格,或者圖表到節(jié)中,使用書簽來創(chuàng)建鏈接,表格內(nèi)容,索引等等。MigraDoc會(huì)自動(dòng)進(jìn)行分頁和布局,可以生成PDF,XPS以及RTF文檔格式??偟膩碚f,是一個(gè)更簡(jiǎn)單類型的通用文檔生成工具。它的官方網(wǎng)站和PDFsharp是一起的,目前也是在更新中。
官方網(wǎng)站:http://www.pdfsharp.net/
11.PdfReport報(bào)表工具
PdfReport 是一個(gè)支持code-first的報(bào)表引擎,建立在開源項(xiàng)目iTextSharp和 EPPlus基礎(chǔ)上。支持.net 3.5以上,看看項(xiàng)目的一個(gè)圖片:
官方網(wǎng)站:http://pdfreport.codeplex.com/
12.文件差異比較diffplex
diffplex是一個(gè)開源的C#文本差異比較軟件。支持.NET 4.0, Silverlight 5.0, Windows 8.0, Windows Phone 8.0, Windows Phone Appx 8.1等環(huán)境。如下圖所示:
官方網(wǎng)站:https://github.com/mmanela/diffplex
13.ReportGenerator
ReportGenerator可以將OpenCover, PartCover, Visual Studio 或者NCover生成的XML報(bào)表轉(zhuǎn)換為可讀性更加好的格式。上面這幾個(gè)工具都是代碼覆蓋率分析工具。轉(zhuǎn)換后的報(bào)表有以下格式:
1.HTML, HTMLSummary
2.XML, XMLSummary
3.Latex, LatexSummary
4.TextSummary
5.Custom reports
該組件目前一直在持續(xù)進(jìn)行更新,對(duì)于專門做測(cè)試方面的人應(yīng)該有些幫助,曾經(jīng)也看到過文章使用這個(gè)組件來展示分析后的報(bào)表,不過不太懂,不去深究。
官方網(wǎng)站:https://github.com/danielpalme/ReportGenerator
14.BusyReports
BusyReports是一個(gè)非常方便的從SSRS Web 服務(wù)生成報(bào)表的應(yīng)用程序。BusyReports提供了一個(gè)GUI界面,可以方便配置報(bào)表參數(shù),電子郵件,文件路徑等。這些配置信息存儲(chǔ)在4個(gè)易于編輯的表格中。該組件與SQL Server數(shù)據(jù)驅(qū)動(dòng)訂閱類似,但刪除了其中一些限制。該組件目前一直在更新??聪旅娴?GUI 配置界面:
官方網(wǎng)站:http://busyreports.codeplex.com/
15.Seal Report
Seal Report應(yīng)該是上面這幾個(gè)之中最好用,最常用的一個(gè)。它提供了一個(gè)完整的從其他任何數(shù)據(jù)庫產(chǎn)生報(bào)表的架構(gòu)。該產(chǎn)品主要關(guān)注于容易安裝和報(bào)表設(shè)計(jì),一旦安裝好,報(bào)表很快就可以建立并且發(fā)布。該組件完全開源,使用C#語言編寫。其主要特征有,1.動(dòng)態(tài)SQL數(shù)據(jù)源:可以使用SQL或讓Seal引擎構(gòu)建動(dòng)態(tài)SQL用于查詢數(shù)據(jù)庫,2.本地?cái)?shù)據(jù)透視表:直接在數(shù)據(jù)透視表簡(jiǎn)單的拖放元素,并將它們顯示在報(bào)表中,還支持HTML5圖表等,詳細(xì)去官網(wǎng)看看,下面看2張報(bào)表設(shè)計(jì)和報(bào)表結(jié)果的截圖:
報(bào)表結(jié)果:
官方網(wǎng)站:http://sealreport.codeplex.com/
以上就是關(guān)于開源文章生成器相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。
推薦閱讀:
ChatGPT開源項(xiàng)目(chia-plotter開源)
杭州五金機(jī)電市場(chǎng)(杭州五金機(jī)電市場(chǎng)哪個(gè)最大)
五金工具批發(fā)網(wǎng)站(五金批發(fā)去哪進(jìn)貨)