0
Est-ce que quelqu'un peut aider à formater dynamiquement le type de données de l'argent pour deux colonnes?Mettre en forme la valeur du tableau de données de l'argent dans C#
using System;
using System.Data;
using Microsoft.SqlServer.Dts.Runtime;
using System.Windows.Forms;
using System.Data.OleDb;
using System.IO;
using System.Reflection;
namespace ST_367d705c54de4e9e9f890350f933c80b.csproj
{
[Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute]
public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
{
#region VSTA generated code
enum ScriptResults
{
Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success,
Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
};
#endregion
public void Main()
{
string basePath = Dts.Variables["User::VarDirectoryPath"].Value.ToString();
try
{
OleDbDataAdapter A = new OleDbDataAdapter();
System.Data.DataTable dt = new System.Data.DataTable();
var delimiter = Dts.Variables["User::VarDelimiter"].Value.ToString();
A.Fill(dt, Dts.Variables["User::VarObject"].Value);
basePath = Dts.Variables["User::VarDirectoryPath"].Value.ToString();
string filePath = Path.Combine(basePath, (Dts.Variables["User::VarFileName_1"].Value.ToString()
+ Dts.Variables["User::VarDate"].Value.ToString() + Dts.Variables["User::VarFileExtension_1"].Value.ToString()));
int i = 0;
StreamWriter sw = null;
using (sw = new StreamWriter(filePath, false))
{
for (i = 0; i < dt.Columns.Count; i++)
{
sw.Write(dt.Columns[i].ToString() + Dts.Variables["User::VarDelimiter"].Value.ToString());
}
sw.WriteLine();
foreach (DataRow row in dt.Rows)
{
object[] array = row.ItemArray;
for (i = 0; i < array.Length; i++)
{
object val = array[i];
if (val == "0")
sw.Write(string.Format("#.##", val) + delimiter);
else
sw.Write(val + delimiter);
}
sw.WriteLine();
}
sw.Close();
}
}
catch (Exception ex)
{
string file = string.Format("err_{0}.txt", Dts.Variables["User::VarDate"].Value.ToString());
File.WriteAllText(Path.Combine(basePath, file), ex.ToString());
}
Dts.TaskResult = (int)ScriptResults.Success;
}
}
}
Des suggestions? Il y a 10 colonnes dans la table de données et la colonne 3,4,5 doit être formatée avec deux décimales et doit également entrer 0,00 si la valeur est égale à zéro ou nulle.
Quel est le type de données de ces colonnes? Vous devriez le convertir en floats ou en doubles en utilisant float.tryparse – dadde
Le type de données des colonnes est décimal (18,2) par défaut 0 dans Excel. J'ai besoin de la valeur de 0.00 pour la valeur nulle ou "0". Aussi besoin si la valeur entière numéro 529 alors il devrait afficher comme 529.00 – user3120927
Non, je veux dire quel est le type de données de votre objet val = tableau [i]; pour ces colonnes? Déboguer et vérifier. Vous supposez qu'ils sont analysés comme des chaînes et si c'est le cas, vous devez les analyser en double ou en flottant avant de faire votre mise en forme. Vérifiez également string.isNullOrEmpty() pour gérer les valeurs nulles. – dadde