Bazı verileri OpenXML kullanarak bir Excel dosyasına dışa aktaracağınız bir uygulama geliştiriyorum. Otomatik filtre dışında her şey iyi çalışıyor. Buradaki fikir, verilerin ana gövdesine bir otomatik filtrenin eklenmesidir, böylece kullanıcı otomatik olarak verileri filtrelemek ve sıralamak için kontrollere sahiptir. kodda Yani, böyle bir şey yapmak:Otomatik filtre ve sıralama eklemek Excel'in çökmesine neden oluyor
var filter = new AutoFilter() { Reference = string.Format("{0}:{1}", topLeftCellReference, bottomRightCellReference) };
worksheet.AppendChild(filter);
ihraç XLSX yılında böyle bir şey görünür:
<x:autoFilter ref="A4:L33" xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main" />
Ve sheetData
ve mergeCells
arasındaki çalışma sayfasına eklenir.
Bu filtreyi Excel'de açabilirim ve iyi çalışıyor. Bir sütunu sıralamaya çalıştığınızda bekliyorsanız, sütun sıralar ve sonra Excel çöker. Dosyayı kaydetme ve yeniden yükleme (Excel'in her şeyi temizlemeye zorlayan) sorunu çözmez. Ancak, önce bir filtre uygularsanız (bir sütunu > 10
'a göre filtreleyin, sonra bu filtreyi kaldırın, artık çökmeden sıralayabilirsiniz. Bir filtre uyguladıktan ve çıkardıktan sonra bir dosya kaydettim ve şimdi bu dosya iyi görünüyor, ancak "Onarılan" dosyanın XML'si, bariz bir fark görmüyorum.
Sorunun sebebi ne olabilir? Herhangi bir şey var mı? çalışma eklemeden
Not:? Biz Excel 2010 kullanıyorsunuz (sürüm 14.0.7153.5000) İşte
bir örnek file var (indirme çift tıklayarak buolarak indirirsiniz. Excel'de açmak için .xlsx
olarak yeniden adlandırın. Düzenlemeyi etkinleştir, sütunlardan birini seçin ve sıralamaya çalışın).
Düzenle: Bununla biraz daha fazla oynayın. Dosyayı Excel'de yeniden kaydederseniz, hala bozuk. Ancak, önce bir filtre uyguladığınızda (ve sonra temizledikten sonra) ve Excel'de yeniden kaydederseniz, bir çalışma dosyası alırsınız. eğer
<x:definedNames>
<x:definedName name="_xlnm._FilterDatabase" localSheetId="0" hidden="1">'Sheet 1'!$A$1:$E$11</x:definedName>
</x:definedNames>
emin değil: daha yakın iki dosyaları (hala kırık Yeniden kaydedilen dosya ve şimdi çalışıyor dosyası) baktığımızda, ben filtre uygulanmadan (ve temizlenmiş) sonra bu ekstra bit çalışma kitabına eklenen fark yok ...
@mason: OpenXML, her zaman geçersiz Excel dosyaları yapmanıza olanak tanır. Geçerli bir Excel dosyası için kurallar geçerli bir OpenXML dosyası için kurallardan daha katı (ve tamamen belgelenmemiş) olduğundan (örneğin, standarttaki hiçbir şey çalışma sayfasının altındaki çocukların sırasını belirler), ancak Excel belirli çocukların nerede olduğu konusunda çok titizdir. Görünmelidir). Genellikle dosyayı ilk açtığınızda Excel (çok yardımcı olmayan bir hata mesajıyla) şikayet eder. Ancak bu dosya iyi açılır ve sorun bir sütun sıralamaya çalışırsanız açılır. –
Öğelerinizin sırası doğru görünüyor (sipariş belgeleri için [autoFilter answer here] bölümüne bakın (http://stackoverflow.com/a/25410242/3791802). Üretkenlik aracı tarafından bildirilen tek sorun, bir 'Yazı' yanlış bir 'Renk 'elemanlarından biridir - [başka bir cevap] var (http://stackoverflow.com/questions/29989234/change-sheet-tab-color -of-excel-file-using-open-xml/29991215 # 29991215) '' Color's hakkında bilgi var ama bu konuda yardımcı olacağından kuşkuluyum. Ben ... – petelids
@petelids bir göz atın ve bir şey anlamaya karar veririz: Teşekkür sırası gerçekte belirtilen yere kafaları için bir göz ve teşekkür yukarı çekmek için. Orada olduğunu fark etmemiştim ve beni çok üzdü. –