0
我試圖將文件從XLS轉換爲使用NPOI的XLSX。由於我不知道一個明確的轉換,我寫了這第一個實現通過行和單元格和複製會從一個到另一個:NPOI將XLS轉換爲XLSX引用空引用
public string ConvertToXlsx(string xlsPath)
{
var oldWorkbook = new HSSFWorkbook(new FileStream(xlsPath, FileMode.Open));
var oldWorkSheet = oldWorkbook.GetSheetAt(0);
var newExcelPath = xlsPath.Replace("xls", "xlsx");
using (var fileStream = new FileStream(newExcelPath, FileMode.Create))
{
var newWorkBook = new XSSFWorkbook();
var newWorkSheet = new XSSFSheet();
newWorkBook.Add(newWorkSheet);
foreach (HSSFRow oldRow in oldWorkSheet)
{
var newRow = newWorkSheet.CreateRow(oldRow.RowNum);
for (int ii = oldRow.FirstCellNum; ii < oldRow.LastCellNum; ii++)
{
var newCell = newRow.CreateCell(ii);
newCell = oldRow.Cells[ii];
}
}
newWorkBook.Write(fileStream);
}
return newExcelPath;
}
然而,上線var newCell = newRow.CreateCell(ii);
NPOI拋出一個NullReferenceException以下堆棧跟蹤:
at NPOI.XSSF.UserModel.XSSFCell..ctor(XSSFRow row, CT_Cell cell)
at NPOI.XSSF.UserModel.XSSFRow.CreateCell(Int32 columnIndex, CellType type)
at NPOI.XSSF.UserModel.XSSFRow.CreateCell(Int32 columnIndex)
at Ing2Ynab.Excel.IngExcelConverter.ConvertToXlsx(String xlsPath)
,我不知道爲什麼它的發生,如XSSFRow應該負責創建被轉嫁到XSSFCell構造,從我能在NPOIs代碼讀取CT_Cell的。
有沒有其他人試圖做到這一點和/或已修復它?
謝謝。
而不是oldRow.LastCellNum,也許使用oldRow.Cells.Count –