0
Может ли кто-нибудь помочь в форматировании типа данных данных для двух столбцов динамически ?.Формат данных таблицы данных в 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;
}
}
}
Любые предложения? В таблице данных есть 10 столбцов, а столбец 3,4,5 должен быть отформатирован с двумя десятичными знаками, а также необходимо ввести 0.00, если значение равно нулю или null.
Что тип данных этих столбцов? Вы должны преобразовать его в float или double с помощью float.tryparse – dadde
Тип данных столбцов десятичный (18,2) по умолчанию равен 0 в excel. Мне нужно значение 0.00 для значения null или «0». Также нужно, если значение целое число 529, то оно должно отображаться как 529.00 – user3120927
Нет. Я имею в виду, что такое тип данных вашего объекта val = array [i]; для этих столбцов? Отладка и проверка. Вы предполагаете, что они анализируются как строки, и если это так, вам нужно разобрать их, чтобы удваивать или плавать, прежде чем выполнять форматирование. Также проверьте string.isNullOrEmpty() для обработки нулей. – dadde