c# excel excel-formula formulas closedxml

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:

  1. Porque en stackoverflow existe un caso similar: si el idioma de mis funciones coincide con mi lenguaje Excel (ambos son ingleses)
  2. Intenté si las fórmulas más simples funcionarían como SUM() o FIND() -> (-SUM funciona, FIND no funciona)
  3. Escribí las fórmulas directamente en una hoja Excel (las fórmulas funcionan aquí)
  4. Lo intenté afuera del Loop con información de celda codificada y sin la variable "cellindex"
  5. Comprobado la documentación XML cerrada
  6. Con signos iguales al comienzo de las fórmulas y sin él
  7. 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 ...