Office Open XMl SDK将数字写入表单

我正在尝试窝写数据从数据表到数据表 – 不幸的是,这不像预期的那样工作,例如DataSheet已损坏。

我正在使用下面的代码:

private void AddDataToSheet(ExcelViewData data, SheetData sheetData) { var excelData = data.WriteableDataTable; //// this returns a datatable ////the numbers have a format like "8,1" "8,0" etc. for (int i = 0; i < excelData.Rows.Count; i++) { Row row = new Row(); //row.RowIndex = (UInt32)i; for (int c = 0; c < excelData.Columns.Count; c++) { Cell cell = new Cell(); CellValue cellvalue = new CellValue(); //cell.CellReference = SharedMethods.GetExcelColumnName(i + 1) + (c + 1).ToString(); cell.DataType = DocumentFormat.OpenXml.Spreadsheet.CellValues.Number; cellvalue.Text = excelData.Rows[i][c].ToString().Replace(",","."); cell.Append(cellvalue); row.Append(cell); } sheetData.Append(row); } } 

任何想法,为什么这失败? 我似乎有多个教程用相同的方法。

试试这个方法:

 public void InsertDataTableIntoExcel(SpreadsheetDocument _excelDoc, SheetData SheetData, DataTable excelData, int rowIndex = 1) { if (_excelDoc != null && SheetData != null) { if (excelData.Rows.Count > 0) { try { uint lastRowIndex = (uint)rowIndex; for (int row = 0; row < excelData.Rows.Count; row++) { Row dataRow = GetRow(lastRowIndex, true); for (int col = 0; col < excelData.Columns.Count; col++) { Cell cell = GetCell(dataRow, col + 1, lastRowIndex); string objDataType = excelData.Rows[row][col].GetType().ToString(); //Add text to text cell if (objDataType.Contains(TypeCode.Int32.ToString()) || objDataType.Contains(TypeCode.Int64.ToString()) || objDataType.Contains(TypeCode.Decimal.ToString())) { cell.DataType = new EnumValue<CellValues>(CellValues.Number); cell.CellValue = new CellValue(objData.ToString()); } else { cell.CellValue = new CellValue(objData.ToString()); cell.DataType = new EnumValue<CellValues>(CellValues.String); } } lastRowIndex++; } } catch (OpenXmlPackageException ex) { throw ex; } catch (Exception ex) { throw ex; } } else { OpenXmlPackageException openEx = new OpenXmlPackageException("No data from datatable"); throw openEx; } } else { OpenXmlPackageException openEx = new OpenXmlPackageException("Workbook not found"); throw openEx; } }