HOME 首頁
SERVICE 服務(wù)產(chǎn)品
XINMEITI 新媒體代運(yùn)營
CASE 服務(wù)案例
NEWS 熱點(diǎn)資訊
ABOUT 關(guān)于我們
CONTACT 聯(lián)系我們
創(chuàng)意嶺
讓品牌有溫度、有情感
專注品牌策劃15年

    開源文章生成器(開源文章生成器下載)

    發(fā)布時(shí)間:2023-04-16 08:34:57     稿源: 創(chuàng)意嶺    閱讀: 133        

    大家好!今天讓創(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神器NPOI
    NPOI 是 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搭建源碼(chatbot 開源)

    ChatGPT開源項(xiàng)目(chia-plotter開源)

    建站系統(tǒng)開源(建站系統(tǒng) 開源)

    杭州五金機(jī)電市場(chǎng)(杭州五金機(jī)電市場(chǎng)哪個(gè)最大)

    五金工具批發(fā)網(wǎng)站(五金批發(fā)去哪進(jìn)貨)