closedxml c#
Excel no reconoce fórmulas de closedXML/c# (1)
Información: el siguiente código está en un bucle foreach
Trabajos:
indexSheet.Cell("G" + cellIndex).FormulaA1 = "=SUM(A1:A10)";
Solo funciona, cuando escribo esto directamente en excel:
indexSheet.Cell("G" + cellIndex).FormulaA1 = "=FIND(/"erw/";H5)"; // with Property
indexSheet.Cell("G" + cellIndex).SetFormulaA1("=FIND(/"erw/";H5)"); //with Function
indexSheet.Cell("G" + cellIndex).FormulaA1 = $"COUNTIF(H{cellIndex};/"*/"&$C$2&/"*/")*(MAX($G$4:G{cellIndex - 1})+1)";
indexSheet.Cell("B" + cellIndex).FormulaA1 = $"=IF(ROW()-{cellIndex}>MAX(G:G);/"/";HYPERLINK(CONCATENATE(/"#/";(INDEX(H:H;MATCH(ROW()-4;G:G;0)));/"!B{cellIndex}/");(INDEX(H:H;MATCH(ROW()-4;G:G;0)))))";
He comprobado / probado:
- Porque en stackoverflow existe un caso similar: si el idioma de mis funciones coincide con mi lenguaje Excel (ambos son ingleses)
- Intenté si las fórmulas más simples funcionarían como
SUM()
oFIND()
-> (-SUM funciona, FIND no funciona) - Escribí las fórmulas directamente en una hoja Excel (las fórmulas funcionan aquí)
- Lo intenté afuera del Loop con información de celda codificada y sin la variable "cellindex"
- Comprobado la documentación XML cerrada
- Con signos iguales al comienzo de las fórmulas y sin él
- Intenté con closedXML Vers. 0.76.0 y 0.80.1 (último estable)
Excel me muestra esto: Picture1
Y esto: Picture2
El archivo XML-log vinculado de la Imagen 2 contiene información sobre las partes eliminadas
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<recoveryLog xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
<logFileName>error035720_03.xml</logFileName><summary>Errors were detected in file ''C:/Users/XXX/Documents/Output/CodeBook.xlsx''</summary>
<removedRecords>
<removedRecord>Removed Records: Formula from /xl/worksheets/sheet.xml part</removedRecord>
<removedRecord>Removed Records: Formula from /xl/calcChain.xml part (Calculation properties)</removedRecord>
</removedRecords>
</recoveryLog>
no puede usar punto y coma ( ;
) para separar argumentos en closedxml. Use la coma ( ,
) de esta manera:
indexSheet.Cell("G" + cellIndex).FormulaA1 = "=FIND(/"erw/",H5)";
esa es la razón por la que SUM(range)
funciona pero FIND(find_text;within_text)
no ...