c# - सी#से एक्सेल(.XLS और.XLSX) फ़ाइल बनाएं




.net excel (20)

LINQ से एक्सएमएल के साथ ऐसा करने का एक तरीका यहां है, नमूना कोड के साथ पूरा करें:

एक्सेल डेटा को LINQ से एक्सएमएल के साथ त्वरित रूप से आयात और निर्यात करें

यह थोड़ा जटिल है, क्योंकि आपको नेमस्पेस आयात करना है और आगे भी, लेकिन यह आपको किसी बाहरी निर्भरता से बचने देता है।

(इसके अलावा, ज़ाहिर है, यह वीबी .NET है, सी # नहीं, लेकिन आप एक्सएमएल लिटलल्स का उपयोग करने के लिए हमेशा अपनी परियोजना में वीबी .NET सामान को अलग कर सकते हैं, और सी # में सब कुछ कर सकते हैं।)

https://code.i-harness.com

मैं कोड चला रहे मशीन पर एक्सेल स्थापित करने के बिना सी # के साथ एक्सेल स्प्रेडशीट कैसे बना सकता हूं?



आप Excel फ़ाइलों को बनाने और कुशल बनाने के लिए OLEDB का उपयोग कर सकते हैं। इसे जांचें: OLEDB का उपयोग कर Excel पढ़ना और लिखना

विशिष्ट उदाहरण:

using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\temp\\test.xls;Extended Properties='Excel 8.0;HDR=Yes'"))
{
  conn.Open();
  OleDbCommand cmd = new OleDbCommand("CREATE TABLE [Sheet1] ([Column1] string, [Column2] string)", conn);
  cmd.ExecuteNonQuery();
}

संपादित करें - कुछ और लिंक:


आप ExcelLibrary नामक लाइब्रेरी का उपयोग कर सकते हैं। यह Google कोड पर पोस्ट की गई एक निःशुल्क, मुक्त स्रोत लाइब्रेरी है:

ExcelLibrary

यह ऊपर वर्णित PHP ExcelWriter का एक बंदरगाह दिखता है। यह अभी तक नए .xlsx प्रारूप में नहीं लिखा जाएगा, लेकिन वे उस कार्यक्षमता को जोड़ने पर काम कर रहे हैं।

यह बहुत आसान, छोटा और उपयोग करने में आसान है। इसके अलावा इसमें डेटासेट हेल्पर है जो आपको एक्सेल डेटा के साथ आसानी से काम करने के लिए डेटासेट्स और डेटाटेबल्स का उपयोग करने देता है।

एक्सेल लाइब्रेरी अभी भी पुराने एक्सेल प्रारूप (.xls फ़ाइलों) के लिए काम करता है, लेकिन भविष्य में नए 2007/2010 स्वरूपों के लिए भविष्य में समर्थन जोड़ रहा है।

आप EPPlus भी उपयोग कर सकते हैं, जो केवल Excel 2007/2010 प्रारूप फ़ाइलों (.xlsx फ़ाइलों) के लिए काम करता है।

टिप्पणियों में उल्लिखित प्रत्येक लाइब्रेरी के साथ कुछ ज्ञात बग हैं। बिलकुल समय के साथ, ईपीप्लस सबसे अच्छा विकल्प प्रतीत होता है। ऐसा लगता है कि यह अधिक सक्रिय रूप से अद्यतन और दस्तावेज भी है।

इसके अलावा, जैसा कि नीचे @ АртёмЦарионов द्वारा नोट किया गया है, ईपीप्लस के पास पिवोट टेबल्स के लिए समर्थन है और एक्सेल लाइब्रेरी में कुछ समर्थन हो सकता है ( ExcelLibrary में पिवट तालिका समस्या )

त्वरित संदर्भ के लिए यहां कुछ लिंक दिए गए हैं:
ExcelLibrary - जीएनयू कम जीपीएल
EPPlus - जीएनयू लेसर जनरल पब्लिक लाइसेंस (एलजीपीएल)

ExcelLibrary के लिए यहां कुछ उदाहरण कोड:

डेटाबेस से डेटा लेने और उससे कार्यपुस्तिका बनाने का एक उदाहरण यहां दिया गया है। ध्यान दें कि ExcelLibrary कोड नीचे एक पंक्ति है:

//Create the data set and table
DataSet ds = new DataSet("New_DataSet");
DataTable dt = new DataTable("New_DataTable");

//Set the locale for each
ds.Locale = System.Threading.Thread.CurrentThread.CurrentCulture;
dt.Locale = System.Threading.Thread.CurrentThread.CurrentCulture;

//Open a DB connection (in this example with OleDB)
OleDbConnection con = new OleDbConnection(dbConnectionString);
con.Open();

//Create a query and fill the data table with the data from the DB
string sql = "SELECT Whatever FROM MyDBTable;";
OleDbCommand cmd = new OleDbCommand(sql, con);
OleDbDataAdapter adptr = new OleDbDataAdapter();

adptr.SelectCommand = cmd;
adptr.Fill(dt);
con.Close();

//Add the table to the data set
ds.Tables.Add(dt);

//Here's the easy part. Create the Excel worksheet from the data set
ExcelLibrary.DataSetHelper.CreateWorkbook("MyExcelFile.xls", ds);

एक्सेल फ़ाइल बनाना उतना आसान है जितना। आप एक्सेल फ़ाइलों को मैन्युअल रूप से भी बना सकते हैं, लेकिन उपर्युक्त कार्यक्षमता वास्तव में मुझे प्रभावित करती है।


आप इस लाइब्रेरी का उपयोग करके अच्छी तरह से स्वरूपित एक्सेल फाइलें बना सकते हैं: http://officehelper.codeplex.com/documentation
नमूना नीचे देखें:

using (ExcelHelper helper = new ExcelHelper(TEMPLATE_FILE_NAME, GENERATED_FILE_NAME))
{
    helper.Direction = ExcelHelper.DirectionType.TOP_TO_DOWN;
    helper.CurrentSheetName = "Sheet1";
    helper.CurrentPosition = new CellRef("C3");

    //the template xlsx should contains the named range "header"; use the command "insert"/"name".
    helper.InsertRange("header");

    //the template xlsx should contains the named range "sample1";
    //inside this range you should have cells with these values:
    //<name> , <value> and <comment>, which will be replaced by the values from the getSample()
    CellRangeTemplate sample1 = helper.CreateCellRangeTemplate("sample1", new List<string> {"name", "value", "comment"}); 
    helper.InsertRange(sample1, getSample());

    //you could use here other named ranges to insert new cells and call InsertRange as many times you want, 
    //it will be copied one after another;
    //even you can change direction or the current cell/sheet before you insert

    //typically you put all your "template ranges" (the names) on the same sheet and then you just delete it
    helper.DeleteSheet("Sheet3");
}        

जहां नमूना इस तरह दिखता है:

private IEnumerable<List<object>> getSample()
{
    var random = new Random();

    for (int loop = 0; loop < 3000; loop++)
    {
        yield return new List<object> {"test", DateTime.Now.AddDays(random.NextDouble()*100 - 50), loop};
    }
}

आप वास्तव में इंटरऑप कक्षाओं को देखना चाह सकते हैं। आप ओएलई नहीं कहते हैं (जो यह नहीं है), लेकिन इंटरऑप कक्षाओं का उपयोग करना बहुत आसान है।

यदि आपने उन्हें आजमाया नहीं है तो आप प्रभावित हो सकते हैं।

कृपया माइक्रोसॉफ्ट के इस stance पर चेतावनी stance :

माइक्रोसॉफ्ट वर्तमान में किसी भी अप्रत्याशित, गैर-इंटरैक्टिव क्लाइंट एप्लिकेशन या घटक (एएसपी, एएसपी.नेट, डीसीओएम, और एनटी सेवाओं सहित) से माइक्रोसॉफ़्ट ऑफिस अनुप्रयोगों के स्वचालन की अनुशंसा नहीं करता है, और समर्थन नहीं करता है, क्योंकि कार्यालय अस्थिर व्यवहार प्रदर्शित कर सकता है और / या जब इस माहौल में कार्यालय चलाया जाता है तो डेडलॉक।


एचटीएमएल टेबल का उपयोग करने के लिए एक बेहद हल्का विकल्प हो सकता है। बस फ़ाइल में सिर, बॉडी और टेबल टैग बनाएं, और इसे एक .xls एक्सटेंशन वाली फ़ाइल के रूप में सहेजें। माइक्रोसॉफ्ट विशिष्ट विशेषताएं हैं जिनका उपयोग आप सूत्रों सहित आउटपुट को स्टाइल करने के लिए कर सकते हैं।

मुझे एहसास है कि आप इसे वेब अनुप्रयोग में कोड नहीं कर रहे हैं, लेकिन यहां एक HTML फ़ाइल के माध्यम से एक्सेल फ़ाइल की संरचना का एक example है। यदि आप कंसोल ऐप, डेस्कटॉप ऐप या सेवा कोडिंग कर रहे थे तो इस तकनीक का उपयोग किया जा सकता था।


ओपनएक्सएमएल भी एक अच्छा विकल्प है जो सर्वर पर एमएस एक्सेल स्थापित करने से बचने में मदद करता है। माइक्रोसॉफ्ट द्वारा प्रदान किया गया ओपन एक्सएमएल एसडीके 2.0 ओपन एक्सएमएल पैकेज और अंतर्निहित ओपन एक्सएमएल स्कीमा तत्वों को पैकेज के अंदर जोड़ना आसान बनाता है। ओपन एक्सएमएल एप्लीकेशन प्रोग्रामिंग इंटरफेस (एपीआई) कई सामान्य कार्यों को समाहित करता है जो डेवलपर्स ओपन एक्सएमएल पैकेज पर प्रदर्शन करते हैं।

इसे ओपनएक्सएमएल देखें: वैकल्पिक जो सर्वर पर एमएस एक्सेल स्थापित करने से बचने में मदद करता है


कुंआ,

आप Aspose जैसे किसी तृतीय पक्ष लाइब्रेरी का भी उपयोग कर सकते हैं।

इस पुस्तकालय का लाभ यह है कि इसे आपकी मशीन पर एक्सेल स्थापित करने की आवश्यकता नहीं है जो आपके मामले में आदर्श होगा।


क्या आपने कभी sylk कोशिश की है?

हम क्लासिक एएसपी में एक्सेलशीट्स को सिल्क के रूप में उत्पन्न करते थे और अभी हम एक्सेलजेनरेटर की खोज भी कर रहे हैं।

Sylk के फायदे हैं, आप कोशिकाओं को प्रारूपित कर सकते हैं।


बस किसी तीसरे पक्ष के समाधान में एक और संदर्भ जोड़ना चाहते हैं जो सीधे आपके मुद्दे को संबोधित करता है: http://www.officewriter.com

(अस्वीकरण: मैं सॉफ़्टआर्टिसन के लिए काम करता हूं, वह कंपनी जो OfficeWriter बनाती है)


मैं एक्सएमएल स्प्रेडशीट्स उत्पन्न करने के बारे में सहमत हूं, यहां एक उदाहरण है कि इसे सी # 3 के लिए कैसे किया जाए (हर कोई सिर्फ वीबी 9: पी में इसके बारे में ब्लॉग करता है) http://www.aaron-powell.com/linq-to-xml-to-excel


मैंने उपयोग किए गए कुछ विकल्प:

यदि एक्सएलएसएक्स जरूरी है: ExcelPackage एक अच्छी शुरुआत है लेकिन डेवलपर इस पर काम करना छोड़ने पर मर गया। एक्सएमएल ने वहां से उठाया और कुछ विशेषताओं को जोड़ा। ExML एक बुरा विकल्प नहीं है, मैं अभी भी इसे दो उत्पादन वेबसाइटों में उपयोग कर रहा हूं।

मेरी सभी नई परियोजनाओं के लिए, हालांकि, मैं अपाचे पीओआई के .NET पोर्ट, NPOI का उपयोग कर रहा हूं। एनपीओआई 2.0 (अल्फा) एक्सएलएसएक्स का भी समर्थन करता है।


मैंने सफलतापूर्वक निम्नलिखित ओपन सोर्स प्रोजेक्ट्स का उपयोग किया है:

  • ओओएक्सएमएल प्रारूपों के लिए एक्सेलपैकेज (कार्यालय 2007)

  • एनपीओआई .XLS प्रारूप (कार्यालय 2003) के लिए। एनपीओआई 2.0 (अल्फा) एक्सएलएसएक्स का भी समर्थन करता है।

मेरे ब्लॉग पोस्ट पर एक नज़र डालें:

सी # में एक्सेल स्प्रेडशीट्स .XLS और .XLSX बनाना

एक्सेल टेबल और गतिशील चार्ट के साथ एनपीओआई


यदि आप xlsx प्रारूप से खुश हैं, तो मेरे कोडप्लेक्स गिटहब प्रोजेक्ट को आजमाएं। EPPlus इसे ExcelPackage से स्रोत के साथ शुरू किया, लेकिन आज यह कुल पुनर्लेखन है। श्रेणियों, सेल स्टाइल, चार्ट, आकार, चित्र, नेमरेंज, ऑटोफिल्टर और कई अन्य सामान का समर्थन करता है।


यहां एक पूरी तरह से निशुल्क सी # लाइब्रेरी है, जो आपको ओपनएक्सएमएल पुस्तकालयों का उपयोग करके DataSet , DataTable या List<> को एक वास्तविक एक्सेल 2007 .xlsx फ़ाइल में निर्यात करने देती है:

http://mikesknowledgebase.com/pages/CSharp/ExportToExcel.htm

पूर्ण स्रोत कोड प्रदान किया जाता है - नि: शुल्क - निर्देशों के साथ, और एक डेमो आवेदन।

इस कक्षा को अपने आवेदन में जोड़ने के बाद, आप अपने डेटासेट को एक्सेल में कोड की केवल एक पंक्ति में निर्यात कर सकते हैं:

CreateExcelFile.CreateExcelDocument(myDataSet, "C:\\Sample.xlsx");

यह उससे ज्यादा आसान नहीं है ...

और यह आपके सर्वर पर एक्सेल को उपस्थित होने की भी आवश्यकता नहीं है।


विभिन्न एक्सेल फाइलों के लिए विभिन्न कार्यालय 2003 एक्सएमएल पुस्तकालय उपलब्ध हैं। हालांकि, मुझे एक समस्या होने के लिए XML प्रारूप में सहेजी गई एक बड़ी कार्यपुस्तिका का आकार मिलता है। उदाहरण के लिए, मैं जिस वर्कबुक के साथ काम करता हूं वह नए में 40 एमबी होगा (और स्वीकार्य रूप से अधिक कसकर पैक किया गया है) एक्सएलएसएक्स प्रारूप 360 एमबी एक्सएमएल फाइल बन जाता है।

जहां तक ​​मेरे शोध ने मुझे लिया है, वहां दो वाणिज्यिक पैकेज हैं जो पुराने बाइनरी फ़ाइल स्वरूपों को आउटपुट की अनुमति देते हैं। वो हैं:

न तो सस्ते (500USD और 800USD क्रमशः, मुझे लगता है)। लेकिन दोनों ही एक्सेल के स्वतंत्र हैं।

OpenOffice.org की पसंद के लिए एक्सेल आउटपुट मॉड्यूल के बारे में मैं उत्सुक हूं। मुझे आश्चर्य है कि क्या उन्हें जावा से .NET तक पोर्ट किया जा सकता है।



IKVM + पीओआई

या, आप इंटरऑप का उपयोग कर सकते हैं ...


सिंकफ्यूजन आवश्यक XlsIO यह कर सकता है। माइक्रोसॉफ्ट ऑफिस पर इसकी कोई निर्भरता नहीं है और विभिन्न प्लेटफार्मों के लिए भी विशिष्ट समर्थन है।

कोड नमूना:

//Creates a new instance for ExcelEngine.
ExcelEngine excelEngine = new ExcelEngine();
//Loads or open an existing workbook through Open method of IWorkbooks
IWorkbook workbook = excelEngine.Excel.Workbooks.Open(fileName);
//To-Do some manipulation|
//To-Do some manipulation
//Set the version of the workbook.
workbook.Version = ExcelVersion.Excel2013;
//Save the workbook in file system as xlsx format
workbook.SaveAs(outputFileName);

यदि आप अर्हता प्राप्त करते हैं (राजस्व में 1 मिलियन अमरीकी डालर से कम) तो नियंत्रण के पूरे सूट समुदाय लाइसेंस कार्यक्रम के माध्यम से मुफ्त में उपलब्ध है। नोट: मैं सिंकफ्यूजन के लिए काम करता हूं।





file-io