2013-06-23 15 views
1

У меня есть следующий код для записи в существующий файл XLSXNPOI делает беспорядок XLSX файлов

FileStream file = new FileStream(bestand, FileMode.Open, FileAccess.ReadWrite); 
string ext = Path.GetExtension(bestand).ToLower(); 

if (ext == ".xls") 
{ 
    wb = new HSSFWorkbook(file); 
} 
else if (ext == ".xlsx") 
    wb = new XSSFWorkbook(file); 

ISheet ws = wb.GetSheet(Maanden[maand-1]); 

ws.GetRow(colum).GetCell(rij++).SetCellValue(huidigedatum); 
ws.GetRow(colum).GetCell(rij++).SetCellValue(Datarow["Factuurnummer"].ToString()); 
ws.GetRow(colum).GetCell(rij++).SetCellValue(Datarow["Omschrijving"].ToString()); 
ws.GetRow(colum++).GetCell(tbBank-1).SetCellValue((double)totaal); 

WriteToFile(bestand); 
private void WriteToFile(string bestand) 
{ 
    //Write the stream data of workbook to the root directory 
    FileStream file = new FileStream(bestand, FileMode.Create); 
    wb.Write(file); 
    pBar.PerformStep(); 
    file.Close(); 
} 

С помощью файла XLS он прекрасно работает.

Пожалуйста, помогите.

С уважением, Ринальдо

+0

Что происходит с файлами xlsx? Не могли бы вы указать более подробную информацию (например, сообщения об ошибках и т. Д.)? –

+0

Привет, Саймон, файл xlsx поврежден. Невозможно загрузить его с помощью диалогового окна для импорта и, следовательно, в libre office, в то время как нетронутый XLSX можно загрузить в офис libre. Во время записи нет сообщения об ошибке. Все идет без проблем, кроме того, когда я пытаюсь загрузить его в офис libre. Надеюсь, кто-то знает ответ. С уважением Rinaldo –

+0

Пожалуйста, попробуйте NPOI 2.1. Есть некоторые критические ошибки, которые могут повредить файл Excel в NPOI 2.0.x –

ответ

0

То, что я думаю, что это ошибка в строке

ISheet ws = wb.GetSheet(Maanden[maand-1]); 

вам придется typecaste объект листа с правильным первенствует Тип файла

попробовать

ISheet ws; 
    if (ext == ".xls") 
    { 
    wb = new HSSFWorkbook(file); 
    ws = (HSSFSheet)wb.GetSheet(Maanden[maand-1]); 
    } 
    else if (ext == ".xlsx") 
    { 
     wb = new XSSFWorkbook(file); 
     ws = (XSSFSheet)wb.GetSheet(Maanden[maand-1]); 
    } 
Смежные вопросы