NET مكون لبرنامج Excel 2003 الجيل جدول باستخدام نماذج لتنسيق

StackOverflow https://stackoverflow.com/questions/1405431

سؤال

والمشكلة هي تحاول طلبي إلى حل هو هذا:

وحاليا، يتم تشغيل العديد من الإجراءات المخزنة، يتم نسخ البيانات يدويا من نتائج SQL في جدول بيانات فارغة، والإبلاغ المحللين تنسيق البيانات. وقد اعتبرت هذه العملية وقتا طويلا ومكلفا.

والحل المثالي (في رأيي) هو تطبيق. NET مع المكون الذي يمكن أن يستغرق ونتيجة الإجراء المخزن والكتابة إلى مجموعة خلية معينة في قالب ورقة عمل (المحافظة على التنسيق المستخدم)، ثم لا أستطيع جمع فقط يؤدي إلى المصنفات في تطبيق .NET.

هل هناك أي من هذه التطبيقات هناك؟ حتى أفضل، هل لديها أي حلول أفضل؟

وشكرا لاهتمامكم.

هل كانت مفيدة؟

المحلول

وماذا يمكنني استخدامها لتعيين البيانات

والحصول على البيانات في شكل

object[,] excelSpreadsheetData

وبعد ذلك تطبيق البيانات عن طريق وضع

public void SetWorksheetData(long rowCount, long columnCount, object[,] excelSpreadsheetData, int startingRow, int startingCol, Worksheet worksheet)
        {
            if (rowCount == 0 || columnCount == 0) return;
            //set the region data.
            object m_objOpt = Missing.Value;
            Range cellRange = worksheet.get_Range(ExcelGeneratorUtils.ExcelColumnFromNumber(startingCol) + startingRow, m_objOpt);
            cellRange = cellRange.get_Resize(rowCount, columnCount);
            cellRange.set_Value(m_objOpt, excelSpreadsheetData);
        }

وهذا من شأنه أن يحافظ على تنسيق القالب، ويحدد البيانات دفعة واحدة، وأسرع بكثير من وضع ذلك الخلية، من خلال الخلية.

وعلى أمل أن يساعد

نصائح أخرى

SpreadsheetGear ل. NET سوف تتيح لك فتح مصنفات Excel، سد العجز في القيم وحفظ المصنف.

ويمكنك أن ترى التقارير إكسل (أي تصدير إلى Excel) عينات هنا وتنزيل نسخة تجريبية مجانية هنا .

تنويه: أنا أملك SpreadsheetGear LLC

ويمكنك دائما استخدام أتمتة Excel من خلال إمكانية التشغيل المتداخل. وقد فعلت ذلك في بعض الأحيان عندما يكون الناتج المرغوب فيه هو اكسل. في سريعة من المستغرب، عليك أن تكون حذرا مع ذلك لتنظيف بعد نفسك وعدم ترك حالات من Excel قيد التشغيل. هنا هو عينة وجيزة.

        using Excel = Microsoft.Office.Interop.Excel;

        Excel.ApplicationClass _Excel;
        Excel.Workbook WB;
        Excel.Worksheet WS;


        _Excel = new Microsoft.Office.Interop.Excel.ApplicationClass();
        WB = _Excel.Workbooks.Add(System.Reflection.Missing.Value);

        WS = (Excel.Worksheet)WB.Worksheets[1]; 
        WS.Name = "Test";

         try
        {

            int row;
            int col;

            WS.Cells[++row, col] = "COL1";
            WS.Cells[row, ++col] = "COL2";

            WS.get_Range("A1", "A2").Font.Bold = true;
            WS.get_Range("A1", "A2").HorizontalAlignment                     =Excel.XlHAlign.xlHAlignCenter;

            WS.Cells[++row, col] = "Customer";
            WS.Cells[++row, col] = "Expenses" 

            WS.get_Range("A1", "B1").Font.Bold = true;


            WS.Columns.AutoFit();
            WS.Rows.AutoFit();

            WS.Activate();
           _Excel.Visible = true;
        }
        catch (Exception ex)
        {
            WB.Close(false, Type.Missing, Type.Missing);
            _Excel.Quit();
            throw;
        }
        finally
        {
            GC.Collect();
            GC.WaitForPendingFinalizers();



            System.Runtime.InteropServices.Marshal.FinalReleaseComObject(WS);


            System.Runtime.InteropServices.Marshal.FinalReleaseComObject(WB);

            System.Runtime.InteropServices.Marshal.FinalReleaseComObject(_Excel);


        }

في هذا السؤال سألت عن شيء مماثل. الفرق هو أنني أريد شيئا لتوليد ملف XML وهذا ما يفسر من قبل Excel كجدول بيانات. إذا كنت قد ترسل البيانات إلى ملف XML، ثم تحويل XML إلى SpreadsheetML، ثم وهذا قد يحل مشكلتك. SpreadsheetXM لا توجد لديها عدد قليل من القيود، وإن كان. أنها لن تتطلب إكسل ليتم تثبيتها والتحول يمكن أن يكون سريع الحقيقي. وإذا كنت تستخدم برنامج Excel 2007 ثم هناك تنسيق XML الثاني التي يمكن أن تستخدمها، وrel="nofollow مايكروسوفت أوفيس XML تنسيق. أساسا، انها بطيئة لأنني أظن أن القانون الحالي الخاص بك هو التفاعل مع Excel من خلال COM.

scroll top