8
votes

Est-il possible d'ignorer les avertissements Excel lors de la génération de feuilles de calcul utilisant EPPLUS?

Je stocke un mélange de valeurs numériques et non numériques dans une seule colonne de tableur à l'aide de C # et EPPLUS. Lorsque j'ouvre une feuille de calcul avec Excel, il montre des triangles verts dans les cellules avec des valeurs numériques donnant un avertissement qui "nombre stocké en tant que texte" et de donner une option pour l'ignorer pour une cellule particulière. Puis-je le faire du code ou est-ce une fonctionnalité spécifique Excel?


0 commentaires

4 Réponses :




1
votes

Vous pouvez vérifier si votre valeur est entière, convertissez-la en int et d'attribuer le numéro à la valeur de Cell. Ensuite, il sera enregistré comme numéro, pas de chaîne.

public static void SetValueIntOrStr(this ExcelRangeBase range, object value)
{
    string strVal = value.ToString();
    if (!String.IsNullOrEmpty(strVal))
    {
        double dVal;
        int iVal;

        if (double.TryParse(strVal, out dVal))
            range.Value = dVal;
        else if (Int32.TryParse(strVal, out iVal))
            range.Value = iVal;
        else
            range.Value = strVal;
    }
    else
        range.Value = null;
}


3 commentaires

Avez-vous un exemple de comment appeler ça?


J'ai ajouté une réponse plus spécifique à propos de cette demande d'un exemple de comment l'appeler ici: Stackoverflow.com/questions/39417362/...


Cela semble fonctionner: Utilisation (Var Feathermonth1Cell = ProDusageWorksheet.cells [ColumnfooErrow, Month1_Col]) {SetValueDoubleOrintorstr (Feathermonth1Cell, MonthyNaRonaears [0]); }



2
votes

Il s'agit d'une dérivation de la réponse du technicit qui fonctionne pour moi - j'ai ajouté la manutention de valeurs décimales et modifié le nom de la méthode pour documenter plus précisément sa vraie raison d'estre:

public static void ConvertValueToAppropriateTypeAndAssign(this ExcelRangeBase range, object value)
{
    string strVal = value.ToString();
    if (!String.IsNullOrEmpty(strVal))
    {
        decimal decVal;
        double dVal;
        int iVal;

        if (decimal.TryParse(strVal, out decVal))
        {
            range.Value = decVal;
        }
        else if (double.TryParse(strVal, out dVal))
        {
            range.Value = dVal;
        }
        else if (Int32.TryParse(strVal, out iVal))
        {
            range.Value = iVal;
        }
        else
        {
            range.Value = strVal;
        }
    }
    else
    {
        range.Value = null;
    }
}


1 commentaires

C'est juste ce dont j'avais besoin. J'ai ajouté un chèque d'objet nul avant la valeur.tostring () parce que j'étais parfois envoyé null.