كيف أقوم بإنشاء ملف نصي بحيث يتم تجميع الصفوف معًا عند فتحه في برنامج Excel؟

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

سؤال

أقوم بجمع بعض البيانات عبر برنامج Perl النصي.يجب مراجعة البيانات ومعالجتها من قبل الآخرين باستخدام Excel.حاليًا، أقوم بكتابة البيانات كملف نصي محدد بعلامات جدولة، ويمكن لبرنامج Excel فتح هذا الملف بشكل جيد.

ومع ذلك، هناك تسلسل هرمي للبيانات، وسيكون من الأسهل على المراجعين رؤية شجرة بدلاً من قائمة مسطحة.وهذا يعني أنه بدلاً من تقديم البيانات في أعمدة،

foo    foo1
foo    foo2
foo    foo3
bar    bar1
bar    bar2
...

تقديمها كشجرة انقر للتوسيع:

foo
    foo1
    foo2
    foo3
bar
    bar1
    bar2
...

تعد وظيفة المجموعة في Excel (الموجودة في عام 2007 ضمن "البيانات > المخطط التفصيلي > المجموعة") مطابقة جيدة لهذا العرض التقديمي، حيث إنها أسهل قليلاً في التشغيل من الجداول المحورية.

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

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

المحلول

ومنذ كنت تستخدم بالفعل بيرل، وأقترح أن تقوم بإنشاء ملف اكسل مباشرة في بيرل باستخدام وحدة CPAN ممتازة <لأ href = "http://search.cpan.org/dist/Spreadsheet-WriteExcel/" يختلط = "نوفولو noreferrer"> جدول :: WriteExcel الذي يحظى بدعم ل <لأ href = "http://search.cpan.org/dist/Spreadsheet-WriteExcel/lib/Spreadsheet/WriteExcel.pm#OUTLINES_AND_GROUPING_IN_EXCEL" يختلط = "نوفولو noreferrer"> اكسل يحدد .

ويعمل شيئا من هذا القبيل:

     .
     .
     $worksheet->write('A2',  'foo');
     $worksheet->write('B3',  'foo1');
     $worksheet->write('B4',  'foo2');
     $worksheet->write('B5',  'foo3');
     $worksheet->set_row(2,  undef, undef, 0, 1, 1);
     $worksheet->set_row(3,  undef, undef, 0, 2);
     $worksheet->set_row(4,  undef, undef, 0, 2);
     $worksheet->set_row(5,  undef, undef, 0, 2);
     .
     .

نصائح أخرى

  1. حدد كافة الصفوف، بما في ذلك رؤوس الأعمدة، في القائمة التي تريد تصفيتها.

    نصيحة العرض انقر فوق الخلية العلوية اليمنى من النطاق، ثم اسحب إلى الخلية السفلية اليمنى.

  2. في القائمة بيانات، أشر إلى تصفية، ثم انقر فوق تصفية متقدمة.
  3. في مربع الحوار "تصفية متقدمة"، انقر فوق "تصفية القائمة" في مكانها.
  4. حدد خانة الاختيار السجلات الفريدة فقط، ثم انقر فوق موافق.

    يتم عرض القائمة التي تمت تصفيتها ويتم إخفاء الصفوف المكررة.

  5. في القائمة تحرير، انقر فوق حافظة Office.

    يتم عرض جزء المهام الحافظة.

  6. تأكد من أن القائمة التي تمت تصفيتها لا تزال محددة، ثم انقر فوق الزر نسخ.

    يتم تمييز القائمة التي تمت تصفيتها بمخططات تفصيلية محيطة ويظهر التحديد كعنصر في الجزء العلوي من الحافظة.

  7. في القائمة بيانات، أشر إلى تصفية، ثم انقر فوق إظهار الكل.

    يتم إعادة عرض القائمة الأصلية.

  8. اضغط على مفتاح الحذف.

    تم حذف القائمة الأصلية.

  9. في الحافظة، انقر فوق عنصر القائمة الذي تمت تصفيته.

    تظهر القائمة التي تمت تصفيتها في نفس موقع القائمة الأصلية.

والإصدارات الأخيرة من Excel (2003 هو ما نستخدمه هنا) يمكن استخدام صيغة XML أو xlsx. ملف XLSX هو الرمز البريدي من ملف XML. إذا كنت تريد أن تجعل من الملف الذي سيتم افتتاحه في Excel مع الإعدادات التي تريدها، حاول هذا: أولا إنشاء ملف قالب مع التجمع تريد. احفظ XLSX. بفك الملف باستخدام برنامج البريدي القياسية. نلقي نظرة على ما بداخله. أنا لم تعمل مع التجمع على وجه التحديد، ولكن كل الأوامر في جدول البيانات أن يكون هناك في شكل أكس أم أل، سوف تحتاج إلى معرفة حيث يتم تعيين تجمع. ثم انها مسألة إجراء التغييرات المناسبة على XML وإعادة فتح سوستة. وهناك القليل من الجهد، ولكن يمكنك استخدام هذا الأسلوب لإنشاء الملفات التي تم تجميعها مسبقا برمجيا. قد يكون هناك مكتبات بيرل موجهة تحديدا نحو هذا، وأنا لا أعرف.

وملف CSV هو أيضا من السهل جدا لتوليد. أوبن أوفيس يتيح لك اختيار كيفية تحليل الأشياء، ولكن التفوق تستثني أعمدة بفواصل (دون أي نوع من الاقتباس) والصفوف CRLF محدد.

A1,A2,A3
B1,B2,B3

وغيرها.

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