Estoy usando Visual Studio 2010 (VB.Net) y Open XML SDK 2.0. ¿Cómo se inserta una fórmula en una hoja de cálculo de Excel 2010? Cuando hago esto, también deseo establecer la propiedad CellValue de la celda en un DBNull o EmptyString para obligar a Excel a recalcular la celda cuando el usuario abre el workbok.Usando Open XML, ¿cómo insertar una fórmula en una hoja de cálculo de Excel 2010?
Respuesta
acaba de salir de la CellValue como nulo, e instanciar un nuevo CellFormula así:
Cell cell = new Cell()
{
CellReference = "A3",
DataType = new EnumValue<CellValues>(CellValues.Number),
CellFormula = "SUM(A1:A2)"
};
El valor células se computará cuando se abra el documento en Excel
Esto viene del documento de ayuda adjunta al archivo de ayuda de Open XML SDK 2.0 para Microsoft Office, con algunas modificaciones para agregar una fórmula.
Main()
encuentra un documento de Excel en blanco con una hoja y agrega la fórmula SUM()
a los teléfonos A3
.
Sub Main()
Dim outputFilePath = "C:\Book1.xlsx"
Dim doc As SpreadsheetDocument = SpreadsheetDocument.Open(outputFilePath, True)
Dim workbookPart As WorkbookPart = doc.WorkbookPart
Dim worksheetPart As WorksheetPart = workbookPart.WorksheetParts.First()
InsertCellInWorksheet("A", 3, worksheetPart)
End Sub
' Given a column name, a row index, and a WorksheetPart, inserts a cell into the worksheet.
' If the cell already exists, return it.
Private Function InsertCellInWorksheet(ByVal columnName As String, ByVal rowIndex As UInteger, ByVal worksheetPart As WorksheetPart) As Cell
Dim worksheet As Worksheet = worksheetPart.Worksheet
Dim sheetData As SheetData = worksheet.GetFirstChild(Of SheetData)()
Dim cellReference As String = (columnName + rowIndex.ToString())
' If the worksheet does not contain a row with the specified row index, insert one.
Dim row As Row
If (sheetData.Elements(Of Row).Where(Function(r) r.RowIndex.Value = rowIndex).Count() <> 0) Then
row = sheetData.Elements(Of Row).Where(Function(r) r.RowIndex.Value = rowIndex).First()
Else
row = New Row()
row.RowIndex = rowIndex
sheetData.Append(row)
End If
' If there is not a cell with the specified column name, insert one.
If (row.Elements(Of Cell).Where(Function(c) c.CellReference.Value = columnName + rowIndex.ToString()).Count() > 0) Then
Return row.Elements(Of Cell).Where(Function(c) c.CellReference.Value = cellReference).First()
Else
' Cells must be in sequential order according to CellReference. Determine where to insert the new cell.
Dim refCell As Cell = Nothing
For Each cell As Cell In row.Elements(Of Cell)()
If (String.Compare(cell.CellReference.Value, cellReference, True) > 0) Then
refCell = cell
Exit For
End If
Next
Dim newCell As Cell = New Cell
newCell.CellReference = cellReference
newCell.CellFormula = New CellFormula("SUM(A1:A2)")
row.InsertBefore(newCell, refCell)
worksheet.Save()
Return newCell
End If
End Function
Tenga en cuenta que este método supone que cada celda que hace referencia en la fórmula tiene una referencia correctamente etiquetada.
Obtengo errores de compilación para este código. CellValues. [Formula] y newCell.Formula no contienen un método de fórmula/Props. ¿Estás usando OpenXML2.0? – eschneider
Estoy usando la versión: 2.0.5022.0 – eschneider
@eschneider Tipo de datos y fórmula actualizados, por favor intente ahora. –
puede establecer fórmula en la plantilla de Excel y escribir el código para volver a calcular ellas:
spreadSheet.WorkbookPart.Workbook.CalculationProperties.ForceFullCalculation = True spreadSheet.WorkbookPart.Workbook.CalculationProperties.FullCalculationOnLoad = True
no funciona. – AjayR
Escribo mi fórmula en las celdas de Excel y luego uso este código y funciona. –
- 1. Copie una hoja de cálculo completa en una nueva hoja de cálculo en Excel 2010
- 2. Formatee programáticamente una fecha en una hoja de Excel usando Office Open Xml SDK
- 3. Excel y "contenido ilegible" al crear una hoja de cálculo Open XML con MemoryStream
- 4. usando C# para seleccionar una hoja de cálculo en Excel
- 5. Open XML SDK 2.0: ¿cómo actualizar una celda en una hoja de cálculo?
- 6. Abrir hoja de cálculo xml en Excel de forma predeterminada
- 7. Tabla fórmula de hoja de cálculo org
- 8. Abrir archivo de Excel en una hoja de cálculo específica
- 9. hoja de cálculo Excel xml: ¿es posible incrustar imágenes?
- 10. C#: ¿Cómo exportar a una hoja de cálculo de Excel? usando XSLT/LINQ/Otros métodos?
- 11. Extrae datos de una hoja de cálculo Excel
- 12. Agregar una macro a una hoja de cálculo de Excel con Java
- 13. Cómo cambio el nombre de la hoja de C# en una hoja de cálculo de Excel
- 14. Extraer VBA de una hoja de cálculo de Excel
- 15. Escribir una fórmula en una celda de Excel usando VBA
- 16. Hoja de cálculo de Excel de Excel utilizando EPPlus
- 17. ¿Cómo puedo escribir en una hoja de cálculo de Excel usando Linq?
- 18. Ocultar una hoja de cálculo de Excel con VBA
- 19. ¿Cómo escribo mi hoja de cálculo Excel en una variable, usando PhpExcel?
- 20. Eliminar una conexión de datos de una hoja de cálculo de Excel 2010 en el modo de compatibilidad
- 21. Fórmula de hoja de cálculo de Google para obtener el último valor en una fila
- 22. ¿Cómo insertar fácilmente la hoja de cálculo de Excel en la página web?
- 23. fórmula de hoja de cálculo para reunir todos los partidos en una celda
- 24. Importación de datos de hoja de cálculo de Excel a otra hoja de cálculo de Excel que contiene VBA
- 25. Obtener cell-backgroundcolor en Excel con Open XML 2.0
- 26. ruby excel reader, gema de la hoja de cálculo
- 27. ¿Cómo llamo a una función de VSTO desde una fórmula en Excel?
- 28. Algoritmo para encontrar referencias circulares en una hoja de cálculo
- 29. ¿Cómo ocultar una hoja en Excel usando OpenXML C#?
- 30. ¿Cómo evito el uso dinámico cuando me burlo de una hoja de cálculo Excel?
¿Cómo podemos hacerlo sin necesidad de abrir Excel. – AjayR