ユーザー作成の.xlsxファイルを読み込んだり変更したりすると、 :NPOIでの.xlsxファイルの問題のある破損 - ファイル形式またはファイル拡張子が有効でないためExcelが 'file.xlsx'ファイルを開くことができません
Excel cannot open the file 'test.xlsx' because the file format or file extension is not valid. Verify that the file has not been corrupted and that the file extension matches the format of the file.
問題の例(前NPOIに入れる)hereファイルの.xlsx
をここでTHさん:
We found a problem with some content in 'test.xlsx'. Do you want us to try to recover as much as we can? If you trust the source of this workbook, click Yes.
は、[はい]をクリックすると、私は別のメッセージを取得します現在同じファイルが読み取られた後に破損し、iWorkbook.Write(filestream);
hereで書き戻されます。正常に動作します
string newPath = @"C:\MyPath\test.xlsx";
using (FileStream fs = new FileStream(newPath, FileMode.Create, FileAccess.Write))
{
IWorkbook wb = new XSSFWorkbook();
wb.CreateSheet();
ISheet s = wb.GetSheetAt(0);
IRow r = s.CreateRow(0);
r.CreateCell(0);
ICell c = r.GetCell(0);
c.SetCellValue("test");
wb.Write(fs);
fs.Close();
}
:
は、私は次のコードで新しいの.xlsxファイルを作成する何の問題もありません。
はしても、問題のある子の.xlsxファイルのいずれかを開くIWorkbookに設定するとバックファイルに書き込む動作します:
string newPath = @"C:\MyPath\test.xlsx";
using (FileStream fs = new FileStream(newPath, FileMode.Open, FileAccess.ReadWrite))
{
IWorkbook wb = new XSSFWorkbook(fs);
wb.Write(fs);
fs.Close();
}
しかし、それから読み取るコードを実行した後に、ISheetsを取得し、 IRows、ICellsなど.xlsxファイルが破損しています。 私は特に、ブックを変更するものはすべて削除しましたが。 NPOIとのクリエイト、セット、スタイルなどはありません。
それだけで混乱することになるので、私は本当に私のコードを含めることはできませんが、完全を期すために、私は実際にはこのテスト中NPOIから、次の種類や機能を使用しています:
IWorkbook
XSSFWorkbook
ISheet
IRow
ICell
.GetSheetAt
.GetRow
.GetCell
.LastRowNum
ので、それらの1つは腐敗を引き起こす。私は最終的に値を設定して、xlsのように動作させたいと思っています。
これを経験したことがありますか?腐敗の原因となるNPOIの機能は何ですか?どんな入力も感謝します。
編集:NPOI v2.2.1を使用します。
我々はそれを見てみることができるようにあなたがどこかにこれらの.xlsxファイルのいずれかをアップロードすることができます: はこのようにそれを試してみてください? –
返事をありがとう。例としてhttps://ufile.io/2b349を編集して追加しました。 – justiceorjustus
OK、そのファイルの問題は何ですか?マクロやその他のものが含まれていないことを確認した後、Excelでそれを開かれました。これはバージョンに関連するものではないと確信していますか?私はExcel 2016を持っています。 –