2011-07-26 16 views
7

Bu konuya oldukça yoğun baktım, ama aradığım şeyi bulamadım. Bulduğum iki yöntemC# 'da Pano kullanmadan görüntüleri Excel'den nasıl kaydederim?

1: Microsoft.Office.Interop.Excel'i Kullanma, çalışma kitabının şekilleri boyunca yineleyin, sonra görüntüleri panoya kopyalayın ve pano verisini alın ve bunu bir bitmap'e yerleştirin, sonra Sonunda bu bitmap'i kaydedin. Bu yöntemle ilgili sorun panodur. Bunun çok iş parçacıklı bir ortamda kullanılmasını istiyoruz ve ileti dizileri arasındaki pano sorunlarından korkuyoruz. Pano kilitlemeyle uğraşmayı tercih etmemekteyiz.

2: Dosyayı bir .HTML dosyası olarak kaydedin, ardından belgeleri belgenin kaydedildiği yer olan "_files" klasöründen alın. Bununla ilgili sorun, her bir görüntü için iki görüntü yaratılmasıdır (1 yüksek çözünürlük, 1 düşük çözünürlük) ve tüm resimlerin isimlendirildiği gibi hangi görüntülerin düşük çözünürlükte ve hangi görüntülerin yüksek çözünürlükte olduğunu belirlemek için iyi bir yol yoktur. Bazı dosyalar onları yüksek, düşük, yüksek, düşük, bazıları ise yüksek, düşük, düşük olarak listeliyor. Tüm bu dosyaların kullanılması yavaştır ve ideal olmayan bir yer kaplar. Resimleri en boy oranlarına göre kontrol edebilirdim, ancak bu çok iyi değil çünkü çoklu görüntüler aynı en boy oranına sahip olabilir.

Excel.Shape'i pano kullanmadan doğrudan bir bitmap (veya herhangi bir resim biçimi) olarak ayrışmanın bir yolu var mı? Şekil.CopyPicture yöntemi bir görüntü formatında panoya göndermek mümkün olduğundan, bir yolu olmalı gibi görünüyor. Aksi takdirde, çoğaltmadan iki numaraya benzer bir şey yapmak için bir yolu var mı? Üçüncü parti kütüphaneleri kullanmaktan kaçınan bir çözümü tercih ederim.

Teşekkür ederiz.

cevap

25

Excel 2007/2010 biçimini kullandığınızı varsayalım. Her Excel 2007/2010 dosyası bir zip dosyasıdır! Bu yüzden Excel.xlsx dosyanızı Excel.zip'a yeniden adlandırın. Daha sonra dosyayı bir klasöre unzip edin. Görüntüler '/ xl/media' klasöründedir.

Bunu elle deneyin. Bunu bilerek, bunun için bir C# programı yazarak bunu otomatikleştirmek kolaydır.

+0

Hızlı yanıtınız için teşekkür ederiz! Benim görevim maalesef eski dosya türlerini de kapsamaktadır. Özellikle büyük olasılıkla .xlsx için bir kontrol ekleyeceğim ve bu rotayı, görüntü çoğaltmasının büyük bir kısmını kaldıracağından, bunlarla birlikte gideceğim. Diğer bir problem ise, bu yöntemin grafiklerin görüntü yerine xml olarak kaydedilmesidir (metot 2'nin aksine), bu da idealin altında değildir. –

+0

Şu an bu rotaya gideceğim, devam etmeden önce eski formatları xlsx'e çevireceğim. Tekrar teşekkürler –

+0

kickass trick !! – ANinJa