2016-04-11 24 views
0

MS Interop Excel'i Windows Server üzerinde kullanmaya çalışıyoruz ve WCF aracılığıyla kullanıyoruz (bunu daha ayrıntılı bir şekilde açıklayamıyorum çünkü gerçekten tam olarak anlamadım, üzgünüm.) .xlsx sürümüyle Microsoft Interop Excel SaveCopyAs

Üretilen excel dosyalarını geçici dizinde kaydetmek için SaveCopyAs yöntemini kullanırız, ardından bayt dizisine okur ve yanıt olarak göndeririz.

Ancak istemci uygulamasında biz xlsx uzantılı dosya ve Excel bize dosyanın bozuk olduğunu bir uyarı verir açmaya kaydetmek, ama biz el xls için dosya adını değiştirdikten sonra tüm iyi çalışıyor sonra.

Kısa bir aradan sonra, ofisin daha eski bir dosya sürümü (?) Olarak kaydedildiğini görüyoruz. Bu yüzden bir çözüm, geçerli parametrelerle SaveAs yöntemini kullanmaktır, ancak bize çok fazla sorun yaratır, bu yüzden SaveCopyAs'a yapışmayı tercih ederiz.

SaveAs yöntemi olmadan bu dosyayı daha yeni bir dosya biçiminde kaydetmek için başka bir çözüm var mı?

(Ve muhtemelen şimdi bunu çözmüş olmasının, bu System.Runtime.InteropServices.COMException (0x800A03EC): Exception from HRESULT: 0x800A03EC istisna.)

+2

Üç olasılık görüyorum: 1. Orijinal Excel dosyasını halihazırda yeni biçimde oluşturun. 2. İstemciyi xls uzantılı dosyayı kaydetmesini sağlayın. 3. SaveAs() öğesini kullanın ve sahip olduğunuz sorunları ele alın. – NineBerry

+0

Çalışma zamanı hatası 1004 birçok nedeni vardır, yakın bir eşleşme http://stackoverflow.com/questions/9751622/run-time-error-1004-for-saving-excel-file-vba-required –

+0

Office/Excel'in daha yeni sürümleri Dosya formatının dosya uzantısına uygun olmasını gerektirir. Bu bir güvenlik önlemi. Yani bir dosyaya xlsx uzantısını eski dosya biçiminde eklerseniz (xls) bir uyarı alırsınız - bu tasarım gereğidir. Diğer seçeneğiniz, bir sunucu ortamında (zaten desteklenmeyen) Excel uygulamasını otomatikleştirmemek ve doğrudan Office Açık XML dosya formatıyla çalışmaktır. –

cevap

0

biz vardı tüm sorunların kaynağı olmadan yüklü ofis 2013 var olduğunu belirtti Kontrolden sunucu bakımı sorumlu çalışanlarımızın ama aslında bu 2003'tür.

İlgili konular