я следующий вывод, генерируемый машине UNIX с 1996 года ... Мы модернизируем программное обеспечение для Windows, и мне нужно, чтобы создать этот точный вывод http://pastebin.com/YBHpSYDW из C#Старый текст принтер формата с #
Есть некоторые проблемы Я не могу справиться, потому что я не знаю, как ...
Как определить столбцы, установить aligment для столбца «IMPORTE» справа, если это открытый текст?
Я сделал этот вывод в Excel, который более читабельный, гибкий. Но они хотят этого жуткого старого материала , потому что по многим причинам и они я буду безумным, работающим для этих людей, они не хотят чтобы обновить что-нибудь, просто программное обеспечение, но сохранить все старые жуткие вещи @ вывода ...
Так что если кто-нибудь знает способ сделать это, это будет так полезно, спасибо.
EDIT Выход список данных из SQL Server, старые данные хранятся в MultiValue .DAT и .idx файлы, но теперь они в SQL Server ... Так что в принципе, код который генерирует значения состоит в следующем
var Query = getRows(sel.DataTable).Select(row =>
{
return new
{
banco = row["banco"].ToString(),
emisora = row["emisora"].ToString(),
sucursal = row["sucursal"].ToString(),
fecha = row["fecha"].ToString(),
identificacion = row["identificacion"].ToString(),
importe = row["importe"].ToString(),
importe_dec = row["importe_dec"].ToString(),
provincia = row["provincia"].ToString(),
referencia = row["referencia"].ToString(),
};
});
Тогда я сделать некоторые Еогеасп сделать магию ... Например
foreach (var banco in Query.GroupBy(l => l.banco))
Таким образом, проблема заключается в выходной файл для печати ...
EDIT 2 Понял работать, вот код
private void generarFicheroPrt()
{
try
{
SelectBD sel = new SelectBD(Program.ConexBD, "SELECT * FROM Seguros");
var Query = getRows(sel.DataTable).Select(row =>
{
return new
{
banco = row["banco"].ToString(),
emisora = row["emisora"].ToString(),
sucursal = row["sucursal"].ToString(),
fecha = row["fecha"].ToString(),
identificacion = row["identificacion"].ToString(),
importe = row["importe"].ToString(),
importe_dec = row["importe_dec"].ToString(),
provincia = row["provincia"].ToString(),
referencia = row["referencia"].ToString(),
};
});
using (StreamWriter sw = new StreamWriter(Program.path + @"\CV9005.prt"))
{
int i = 1;
int pag = 0;
int linea = 1;
sw.WriteLine();
sw.WriteLine("\x1b&l1O\x1b(s14H");
decimal total = 0;
foreach (var valor in Query.OrderBy(l => l.emisora))
{
if (linea == 48) linea = 1;
if (linea == 1)
{
pag++;
sw.WriteLine("\xc\t0125 BANCOFAR" + string.Empty.PadLeft(37, '\x20') + "COBRO POR VENTANILLA S. S. - CONTROL DE DOCUMENTOS PAG. "+ pag +"\n\n");
sw.WriteLine("\t N.ORDEN NUMERO REFERENCIA IMPORTE SUC. EMISORA");
sw.WriteLine("\t ------- ----------------- ---------------- ---- -----------------------------------------------------------");
sw.WriteLine();
}
setSufijoEmisora(valor.emisora);
decimal importe = Convert.ToDecimal(Int32.Parse(valor.importe) + "," + valor.importe_dec);
string imp = importe.ToString("N2", Cultures.Spain);
sw.WriteLine("\t\t" + string.Format("{0, 4}\t{1, -13}\t\t{2, 13}{3,6} {4, -59}", i.ToString(), valor.referencia, imp, valor.sucursal, valor.emisora + " " + sufijoEmisora));
i++;
linea++;
total = total + importe;
}
sw.WriteLine();
sw.WriteLine("\t\t\t\t\t TOTAL .....\t" + string.Format("{0, 13}", total.ToString("N2", Cultures.Spain)));
};
}
catch (Exception ex)
{
Logger.log(ex);
}
}
Может у просьба пояснить немного больше похоже, как вы генерировать вывод? Используете ли вы таблицы для создания этого вывода? Соответствующий фрагмент кода будет очень полезен, чтобы дать какое-либо предложение. – Raman
обновлен кодом, который генерирует результат. –
Где вы выводите это на консоль? В текстовый файл? непосредственно на принтер? Если вы выводите текстовый файл, вы можете использовать инструмент «PrintDocument» из окна инструмента и форматировать документ по своему усмотрению; или если вы хотите создать текстовый документ, используйте библиотеку «Microsoft.Office.Core». Эта библиотека имеет свойство документа, в котором вы редактируете много вещей, как вы делаете в словах.http://msdn.microsoft.com/en-us/library/microsoft.office.core.aspx – Jegan