Şu anda bir .xls
çalışma kitabına (HSSFWorkbook
) yazıyor olan bir kod parçam var. Ancak, aynı kodu bir .xlsx
çalışma kitabına (XSSFWorkbook
) yazmak için kullanmaya çalıştığımda, arşiv bozulur ve Excel'de açılamaz.NPOI - Dosyaya yazı yazılıyor .xlsx çalışma kitabı
Aşağıdaki kod, çalışma kitabına erişmek, çalışma kitabını düzenlemek ve daha sonra çalışma kitabına geri dönmek için kullanıyorum. Başlangıçta, çalışma kitabını düzenlemek için kullandığım kodun sorun olduğunu düşünmekteydim, ancak bunu yorumladıktan sonra sorun hala devam ediyor.
IWorkbook workbook;
using (var file = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
if (Path.GetExtension(fileName).Contains("xlsx"))
{
workbook = new XSSFWorkbook(file);
}
else
{
workbook = new HSSFWorkbook(file);
}
}
//Code that edits workbook which is currently commented out
using (var file = new FileStream(path, FileMode.Open, FileAccess.ReadWrite))
{
workbook.Write(file);
}
Ben boş .xlsx
çalışma kitabında karşı bu kodu çalıştırarak denedim ve dosya bozuk olur ve artık açılacak yapabiliyor. Ben Nuget gelen NPOI en son kararlı sürümünü kullanıyorum
: NPOI 2.1.3.1
İlerideki okuyucular için: boş bir çalışma kitabının kaydedilmesinin (yeni XSSFWorkbook() öğesinin hemen ardından '' .xlsx' dosyasını da bozduğuna dikkat edin.Bu durumdan kaçınmak için çalışma kitabında boş bir sayfa oluşturun (çalışma kitabında çalışma sayfası yaratın) (workbook.CreateSheet() '' çalışma kitabını kaydetmeden önce – Houndolon
iyi bul, ben de WTF idi çünkü 'FileMode.Open'' .xls' dosyaları ile çalışıyor ama '.xlsx' dosyaları değil. –
Ben' FileShare.ReadWrite' olduğunu sanmıyorum iyi bir fikir. –