2009-12-07 16 views
5

Göreceli olarak büyük miktarda Word çıktısı üreten bir uygulama üzerinde çalışıyorum. Şu anda, belge oluşturmayı yapmak için Word Interop hizmetlerini kullanıyoruz, ancak özellikle daha eski (2007'nin öncesi) Office sürümlerinde oldukça yavaş. Nesli hızlandırmak istiyoruz.C# Word dosyaları üretimi nasıl hızlandırılır?

Henüz profilleme bir sürü yapmadım, ama biz COM çağrıları ton yaptığınızı sorun olduğunu oldukça eminim. Bu profillemenin, diğerlerinden daha yavaş aramaların bir alt kümesini vermesini umuyorum, ama bağırsağım bana muhtemelen bir kaç yavaş çağrı değil, bir COM ek yükü (veya Word Interop ek yükü) sorunu olduğunu söyler. Ayrıca, ürün HTML çıktısı üretebilir ve bu işlem (a) çok hızlıdır ve (b) HTML'ye özgü işlev parçaları için farklı bir alt sınıfla hemen hemen aynı kod yollarını kullanır. Bu yüzden algoritmamızın temel olarak yavaş olmadığından eminim.

Yani ... Kelime dosyaları nesil hızlandırmak için alternatif yollar için öneriler arıyorum.

Oluşturulan HTML dosyalarını .doc olarak yeniden adlandıramayız ve bunun yerine RTF oluşturamıyoruz - her iki durumda da önemli biçimlendirme bilgileri kayboluyor ve RTF durumunda satır içi grafikler çalışmıyor sağlam.

Değerlendirmekte olduğumuz yaklaşımlardan biri, düz bir dosyayı nasıl kullanacağını ve gerekli çıktıyı oluşturmayı bilen bir makronun bulunduğu bir şablondan (Word ile birlikte) bir Word dosyasını program aracılığıyla oluşturup açmanızdır. Bu yaklaşımla ilgili geri bildirimler ve de işleri hızlandırmak için başka herhangi bir fikirle ilgileniyoruz.

cevap

5

Bunu karşılayabilirseniz Aspose.Words ürününü öneririm. Çok hızlı ve Word'ün yüklü olması gerekmiyor.

Ayrıca, Office birlikte çalışmayı kullanmak çok daha kolay.

+0

onu kullanmak isteriz, ancak fiyat etiketi, bizim özel ihtiyaçları için yasaklayıcı - bizim app bir masaüstü uygulaması, yani 2500 $/geliştirici ya da öylesine yüzden. –

+0

Evet Ne demek istediğini biliyorum. Bu pahalı araçları almak için çok fazla kol bükme işlemi yapar. Yazdığım bir parça kod bana yaklaşık 4 saat sürdü, her şeyin doğru ve yavaş bir hızda çalışmasını sağlamak için bir hafta süreceğinden şüpheliyim. Paramızı değer aldığımızı hissediyorum. – Crispy

1

Makro yaklaşımınız tam olarak nasıl yavaş excel birlikte çalıştığımızdır (2003 sürümünü kullanarak düşünüyorum).

Biz yavaşlık kadar birlikte çalışma ile tekrar tek tek aramalar bağlı olduğu (en az Excel ile) bulduk. Komutları toplamaya başladık (yani, geniş aralıkların biçimlendirilmesi ve ardından her hücreyi ayrı ayrı oluşturmak yerine belirli hücreleri değiştirmesi) ve mantıksal olarak makrolara taşındık.

Makro + şablon yaklaşımının mutlulukla çevrileceğini düşünüyorum.

+0

Cool ... .NET uygulamanızdaki verileri makroyla nasıl iletişim kurdunuz? –

+0

Bellekten, verileri minimum sayıda dahili çağrıyla itmeyi denedik. Belki de şansın varsa, onu bir blokta zorlayabilir ve makronuzu ayrıştırıp işini yapabilir misin? – Gregory

İlgili konular