旧打印机文本格式c#
本文关键字:格式 文本 打印机 | 更新日期: 2023-09-27 18:07:25
我有以下由1996年的UNIX机器生成的输出…我们正在为Windows升级软件,我需要从c#
创建这个精确的输出http://pastebin.com/YBHpSYDW有一些问题我无法处理,因为我不知道如何……
我如何确定列,设置"import"列向右对齐,如果它是明文?
我已经在Excel中完成了这个输出,这更可读,灵活…但是他们想要这些令人毛骨悚然的旧东西,因为有很多原因他们,我会发疯的为这些人工作,他们不想升级任何东西,只是软件,但保留每一个旧的令人毛骨悚然的东西@输出…
如果有谁知道怎么做,那就太有帮助了,谢谢。
编辑输出是来自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))
所以问题是打印的输出文件…
编辑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);
}
}
使用工具箱中的"PrintDocument"工具。
http://msdn.microsoft.com/en-gb/library/system.drawing.printing.printdocument%28v=vs.110%29.aspx这将帮助你进行基本的格式化。
编辑
要更丰富的格式化和保存到文件,请使用Microsoft.Office.Core命名空间,
http://msdn.microsoft.com/en-us/library/microsoft.office.core.aspx如果您想要非ASCII编码,请确保根据您的要求设置编码并保存所需编码的文件。
http://msdn.microsoft.com/en-us/library/microsoft.office.core.msoencoding.aspxusing(StreamWriter writer = new StreamWriter("a.txt", false, Encoding.UTF8))
{
writer.WriteLine(s);
}