سؤال

أحاول إنشاء Excel 2007 الوثائق برمجيا.الآن هناك طريقتان لقد وجدت:

حاليا انا استخدم ExcelPackage ، التي لديها بعض العيوب الخطيرة والقضايا.كما لا تحتاج إلى إنشاء معقدة Excel sheets ("الأكثر تعقيدا" الشيء هو أنني explicitely تحتاج إلى تحديد نوع من الخلايا إلى رقمية أو نصية), أنا 'م تبحث نحو الخيار 1 القادم, ولكن أنا فقط أتساءل إذا كان هناك أي جيد و دعم طرق لتوليد Excel 2007 ورقة ؟ نقاط المكافأة إذا أنها يمكن أن تكون خلقت دون الحاجة إلى حفظها على قرص صلب ، أيتولد مباشرة الناتج منها إلى تيار.

.صافي 3.0 هو الهدف هنا لا 3.5 الخير :(

تحرير: شكرا حتى الآن.XML SDK هو في الواقع 3.5 فقط ، ولكن "روليت" روسية...erm...Interop COM هو أيضا شيء كنت ترغب في تجنب كلما كان ذلك ممكنا ، خصوصا Excel 2007 قد معقد نوعا ما ولكن لا يزال ليس من السهل لخلق شكل وثيقة.سآخذ نظرة على الروابط المختلفة وتلميحات نشرها.

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

المحلول

يمكنك محاولة استخدام XML المفتوحة لـ Office SDK.هذا سوف يسمح لك لإنشاء ملفات Excel في الذاكرة باستخدام أقول MemoryStream و بسهولة أكثر بكثير من توليد كل XML عن طريق اليد.

كما براين كيم أشار إلى الإصدار 2.0 SDK يتطلب .NET framework 3.5 الذي ذكرتم لم يكن متوفر. الإصدار 1 من SDK هو أيضا المتاحة التي تدعم .صافي 3.0.أنها ليست كاملة ولكن على الأقل سوف تساعدك على إدارة XML أجزاء الوثيقة والعلاقات بينهما.

نصائح أخرى

أنا مجرد توليد جدول HTML التي يمكن فتحها عن طريق Excel:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
        "http://www.w3.org/TR/html4/strict.dtd">

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Wnioski</title>
<style type="text/css">
<!--
br { mso-data-placement: same-cell; }
td { mso-number-format: \@; mso-displayed-decimal-separator: "."; }
-->
</style>

<table>
<tr style="height:15.0pt">
<td style="mso-number-format: general">474</td>
<td>474</td>

<tr>
<td>data2</td>
<td>data3</td>

<tr>
<td style="mso-number-format: &quot;yyyy-mm-dd&quot;">2008-10-01</td>
<td style="mso-number-format: standard">0.00</td>

<tr>
<td style="mso-number-format: general">line1<br>line2<br>line3</td>
<td></td>

</table>

هذا يعمل بشكل جيد أيضا كمصدر بيانات عن المسلسل الحروف في كلمة واحدة ، تعمل مع OpenOffice calc.... الخو هو ميت بسيطة لتوليد.

كنت أريد أن أعلق على BKimmel بعد, ولكن يبدو أنني لم يكن لديك ما يكفي حتى تبرد نقطة حتى الآن.

إذا كان Excel مفتوحا بالفعل ، يمكنك الحصول على هذا مزعج "personal.xls هو بالفعل فتح" رسالة.وأنا أحاول الحصول على التطبيق لأول مرة.إذا فشل ذلك ، ثم خلق منه:

On Error Resume Next
Set myxlApp  = GetObject(, "Excel.Application")
If Err.Number <> 0 Then
  Err.Clear
  Set myxlApp = CreateObject("Excel.Application")
  If Err.Number <> 0 Then
    ' return False, show message, etc.
  End If
End If

لقد فعلت أكثر من XML المفتوحة (xlsx) العمل في SpreadsheetGear على .صافي و هو أبعد ما يكون عن ممارسة تافهة.أوصي باستخدام XML المفتوحة لـ Office SDK أو آخر مكتبة 3rd الطرف مثل SpreadsheetGear أو أحد منافسينا (فقط جوجل "SpreadsheetGear" لمعرفة من المنافسين).

SpreadsheetGear على .صافي يبدو لتلبية الاحتياجات الخاصة بك:

  • يعمل مع .NET 2.0, .صافي 3.0 .NET framework 3.5.
  • ويدعم الكتابة إلى تيار مع IWorkbook.SaveToStream أو الكتابة إلى صفيف بايت مع IWorkbook.SaveToMemory.
  • يدعم Excel 97-2003 (xls) المصنفات التي من المرجح أن يكون الشيء التالي يطلب منك إذا كنت بحاجة إلى دعم عدد كبير جدا من المستخدمين.

يمكنك تحميل مجانا, وظيفية بالكامل التقييم هنا.

Excel جدا النصية من خلال كائنات COM.لم أحاول ذلك ، ولكن يجب أن يكون هذا حل متين, على الرغم من أن أيا سريعة أو خفيفة الوزن.

مهما كنت في نهاية المطاف القيام ، تحقق مما إذا كان الحل الخاص بك يدعم يونيكود.لقد واجهت بعض المشاكل الخطيرة باستخدام الحلول القائمة على كتابة ملفات xls (وهذا هو ، قبل 2007 الملفات).

يمكنك استخدام إمكانية التشغيل المتداخل الأساسية للجمعيات (مكتب API) برمجيا إنشاء مستندات Excel -- أنا لا تريد أن تفعل أي شيء معقد أكثر من اللازم استخدامها, ولكن لا يبدو هذا هو الشرط الخاص بك.

هذا النهج يجب أن تعمل على توليد مستندات في الذاكرة أيضا.

وإليك بعض الموارد:

اعتدت أن تولد Wordprocessing العلامات الوثائق باستخدام مكتبة من الوظائف لخلق الصحيح XML الجداول الفقرات.

ثم مجرد تغيير نوع MIME رأس استجابة إلى مستند word وترسل XML كما الاستجابة إلى العميل.إما يفتح في المتصفح أو يحفظ كملف.

هناك لا يبدو أن يكون نفس 2003 SDK لبرنامج Excel على الرغم من أن هناك MS XML المفتوحة SDK

كل رمز المقلد حيا يكره vbscript, لكنه بسيط و هو يعمل:

Set myxlapp = CreateObject("Excel.Application")
Set mywb = myxlapp.Workbooks.Add
myxlapp.Visible = true

ضع هذا في ملف نصي إلحاق ".vbs" في نهاية المطاف ، المعزوفة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top