سؤال

لدي مجموعة بيانات قمت بتعديلها إلى مستند xml ثم استخدمت ورقة xsl للتحويل إلى تنسيق Excel xml للسماح بفتح البيانات برمجيًا من تطبيقي.لقد واجهت مشكلتين مع هذا:

  1. Excel ليس تطبيق Windows الافتراضي لفتح ملفات Excel، ولذلك عند تشغيل Program.Start("xmlfilename.xml")، يتم فتح IE ولا يكون ملف XML قابلاً للقراءة بشكل كبير.

  2. إذا قمت بإعادة تسمية الملف إلى .xlsx، فستتلقى تحذيرًا، "هذا ليس ملف Excel، هل ترغب في المتابعة".هذا ليس مثاليًا للعملاء.

من الناحية المثالية، أود أن يقوم Windows بفتح الملف في Excel دون تعديل إعداد نظام التشغيل الافتراضي لفتح ملفات Excel.يعد التشغيل المتداخل لـ Office أمرًا ممكنًا، ولكن يبدو أنه مبالغة قليلاً بالنسبة لهذا التطبيق.هل لدى أي شخص أي أفكار لجعل هذا العمل؟

الحل موجود في ‎.Net/C#، لكنني منفتح على احتمالات أخرى لإنشاء حل واضح.

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

المحلول

Process.Start(@"C:\Program Files\Microsoft Office\Officexx\excel.exe", "yourfile.xml");

ومع ذلك، ستظل تحصل على مربع الرسالة.أفترض أنه يمكنك استخدام Interop، لكنني لست متأكدًا من مدى نجاحه بالنسبة لك.

نصائح أخرى

إذا قمت بإدراج ما يلي في السطر الثاني من XML الخاص بك، فإنه يوجه Windows لفتحه باستخدام Excel

<?mso-application progid="Excel.Sheet"?>

ماذا لو قمت بحفظ الملف بتنسيق xlsx، وهو امتداد XML-Excel؟

كما ذكر سام، من المحتمل أن يكون امتداد الملف xlsx هو الطريق الجيد الذي يجب اتباعه.ومع ذلك، هناك ما هو أكثر من مجرد حفظ ملف xml بتنسيق xlsx.إن ملف xlsx هو في الواقع ملف مضغوط يحتوي على مجموعة من ملفات xml داخل المجلدات.لقد وجدت بعض نماذج التعليمات البرمجية الجيدة هنا والذي يبدو أنه يقدم بعض التفسيرات الجيدة على الرغم من أنني لم أجربه شخصيًا.

أعتذر مقدمًا عن توصيل مكتبة تابعة لجهة خارجية، وأعلم أنها ليست مجانية، ولكني أستخدمها استوديو فليكس سيل من برنامج TMS.إذا كنت تتطلع إلى القيام بأكثر من مجرد تفريغ البيانات (التنسيق، وعلامات التبويب الديناميكية، وما إلى ذلك) فهذا يعمل بشكل جيد للغاية.نقوم بإنشاء مئات التقارير أسبوعيًا باستخدامه.

يقبل FlexCel مجموعات البيانات المكتوبة بقوة، ويمكنه تجميع البيانات وفقًا للعلاقات، ويبدو ملف Excel الذي تم إنشاؤه أكثر نظافة مما يمكنك الحصول عليه من تصدير Crystal Reports excel.لقد قمت بأمر التقارير الكريستالية وأمر أتمتة OLE.FlexCel عبارة عن سرقة بسعر 125 دولارًا أمريكيًا.

أتمنى أن يساعدك هذا.

OpenXML في MSDN - http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.workbooks.openxml(v=office.11).aspx

using Excel = Microsoft.Office.Interop.Excel;

string workbookPath= @"C:\temp\Results_2013Apr02_110133_6692.xml";

            this.lblResultFile.Text = string.Format(@" File:{0}",workbookPath);
            if (File.Exists(workbookPath))
            {
                Excel.Application excelApp = new Excel.Application();
                excelApp.Visible = true;
                Excel.Workbook excelWorkbook = excelApp.Workbooks.OpenXML(workbookPath, Type.Missing, Excel.XlXmlLoadOption.xlXmlLoadPromptUser);
            }
            else
            {
                MessageBox.Show(String.Format("File:{0} does not exists", workbookPath));
            }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top