/// <summary> /// /// </summary> /// <param name="RefundCostume"></param> /// <param name="times">打印次数</param> public void Print(RefundCostume RefundCostume, int times, DataGridView dataGridView) { this.RefundCostume = RefundCostume; InteractResult <RetailPrintType> rPrintType = CommonGlobalCache.ServerProxy.GetRetailPrintType(); if (rPrintType.ExeResult == ExeResult.Success) { if (rPrintType.Data == RetailPrintType.SmallTickets) { InteractResult <PrintTemplateInfo> result = CommonGlobalCache.ServerProxy.GetPrintTemplateInfo(PrintTemplateType.Retail); if (result.ExeResult == ExeResult.Success) { PrintTemplateInfo PTemplateInfo = result.Data; this.CurrentPTemplate = PTemplateInfo; PrintHelper printer = new PrintHelper(RefundCostume_PrintPage2); printer.printDocument.DefaultPageSettings.Margins = new Margins(1, 1, 5, 1); printer.printDocument.DefaultPageSettings.PaperSize = new PaperSize(RefundCostume.RefundOrder.RefundOrderID, PrintHelper.GetInch(8), 600); printer.DirectlyPrint(this.CurrentPTemplate.PrintCount); } } else { setPrintDataGridView(RefundCostume, dataGridView, PrintTemplateType.RetailOrder); } } }
public void Print(DayReport retailCostume, DayReport czmx, DayReport yysr, DayReport total) { InteractResult <PrintTemplateInfo> result = CommonGlobalCache.ServerProxy.GetPrintTemplateInfo(PrintTemplateType.DayReport); if (result.ExeResult == ExeResult.Success) { PrintTemplateInfo PTemplateInfo = result.Data; this.CurrentPTemplate = PTemplateInfo; this.retailCostume = retailCostume; this.cz = czmx; this.sr = yysr; this.total = total; PrintHelper printer = new PrintHelper(RetailCostume_PrintPage2); printer.printDocument.DefaultPageSettings.Margins = new Margins(1, 1, 5, 1); printer.printDocument.DefaultPageSettings.PaperSize = new PaperSize(retailCostume.ReportDate.ToString(), PrintHelper.GetInch(8), 800); printer.DirectlyPrint(CurrentPTemplate.PrintCount); } }
public HttpResponseMessage Print(VoucherPrintRequest request) { PrintTemplateInfo tmpInfo = new PrintTemplateInfo(); tmpInfo.name = "凭证打印模板_v1.xlsx"; tmpInfo.procName = "sp_voucher_print_v1"; tmpInfo.id = request.id; PrintAssemble printAssemble = new PrintAssemble(tmpInfo, service); string filePath = printAssemble.Package(); var stream = new FileStream(filePath, FileMode.Open); HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK); response.Content = new StreamContent(stream); response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.ms-excel"); response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = request.FileName }; //System.IO.File.Delete(filePath); return(response); }
private void selectPrintInfo() { switch (result.ExeResult) { case ExeResult.Error: GlobalMessageBox.Show(result.Msg); break; case ExeResult.Success: PrintTemplateInfo PTempInfo = result.Data; if (PTempInfo.PrintColumnInfos.Count > 0) { // List<PrintColumnsInfo> list = GlobalUtilOfPrint.getPurchaseStockColumnsInfo(); List <PrintColumnsInfo> source = (List <PrintColumnsInfo>) this.dataGridViewColumns.DataSource; //lastPrintColumnsInfo.Clear(); List <PrintColumnsInfo> columnsSelect = new List <PrintColumnsInfo>(); foreach (PrintColumnsInfo cInfo in source) { foreach (PrintColumnInfo item in PTempInfo.PrintColumnInfos) { if (cInfo.name == item.Name) { cInfo.ischeck = true; columnsSelect.Add(cInfo); break; } else { cInfo.ischeck = false; } } } curColumnInfo = PTempInfo.PrintColumnInfos; curColumnsSelect = columnsSelect; setColumnsHeaderInfo(columnsSelect, PTempInfo.PrintColumnInfos); this.dataGridViewColumns.DataSource = source; } else { List <PrintColumnsInfo> source = (List <PrintColumnsInfo>) this.dataGridViewColumns.DataSource; foreach (PrintColumnsInfo cItem in source) { cItem.ischeck = false; } List <PrintColumnInfo> sourceList = null; this.dataGridView3.DataSource = sourceList; } if (PTempInfo.SystemVariables.Count > 0) { List <PrintSysInfo> list = (List <PrintSysInfo>) this.dataGridViewSys.DataSource; // lastPrintSysInfo.Clear(); List <PrintSysInfo> columnsSys = new List <PrintSysInfo>(); foreach (PrintSysInfo pSys in list) { foreach (string sysInfo in PTempInfo.SystemVariables) { if (pSys.name == sysInfo) { pSys.ischeck = true; columnsSys.Add(pSys); break; } else { pSys.ischeck = false; } } } loadList.AddRange(columnsSys); setLblValue(columnsSys); this.dataGridViewSys.DataSource = list; } else { List <PrintSysInfo> list = (List <PrintSysInfo>) this.dataGridViewSys.DataSource; foreach (PrintSysInfo item in list) { item.ischeck = false; } } if (PTempInfo.OrderName != null && PTempInfo.OrderName != "") { this.lblCurDataName.Text = PTempInfo.OrderName; this.txtDataName.Text = PTempInfo.OrderName; } if (PTempInfo.PrintCount > 0) { this.numericTxtCount.Text = PTempInfo.PrintCount.ToString(); } // lastPrintColumnsInfo=result.Data. // listColumns = result.Data.PrintColumnInfos; break; default: break; } }
/// <summary> /// /// </summary> /// <param name="retailCostume"></param> /// <param name="times">打印次数</param> public void Print(RetailCostume retailCostume, int times, DataGridView dataGridView) { this.retailCostume = retailCostume; InteractResult <RetailPrintType> rPrintType = CommonGlobalCache.ServerProxy.GetRetailPrintType(); if (rPrintType.ExeResult == ExeResult.Success) { if (rPrintType.Data == RetailPrintType.SmallTickets) { InteractResult <PrintTemplateInfo> result = CommonGlobalCache.ServerProxy.GetPrintTemplateInfo(PrintTemplateType.Retail); if (result.ExeResult == ExeResult.Success) { PrintTemplateInfo PTemplateInfo = result.Data; this.CurrentPTemplate = PTemplateInfo; PrintHelper printer = new PrintHelper(RetailCostume_PrintPage2); printer.printDocument.DefaultPageSettings.Margins = new Margins(1, 1, 5, 1); printer.printDocument.DefaultPageSettings.PaperSize = new PaperSize(retailCostume.RetailOrder.ID, PrintHelper.GetInch(8), 600); printer.DirectlyPrint(this.CurrentPTemplate.PrintCount); } } else { setPrintDataGridView(retailCostume, dataGridView, PrintTemplateType.RetailOrder); } } else { } /**/ } private static void setPrintDataGridView(RetailCostume item, DataGridView dataGridView2, PrintTemplateType type) { InteractResult <PrintTemplateInfo> result = CommonGlobalCache.ServerProxy.GetPrintTemplateInfo(type); //行列数基本不受限制,但超过一页失去意义,因为以Body为主,以其它为辅 // Header header = new Header(4, 2); //可以指定每页是否重复打印 if (result.ExeResult == ExeResult.Success) { PrintTemplateInfo CurrentPTemplate = result.Data; for (int c = 0; c < CurrentPTemplate.PrintCount; c++) { MisGoldPrinterOfReWrite misGoldPrinter = new MisGoldPrinterOfReWrite(false, new PrinterMargins(20, 20, 20, 20, 800, 1129)); misGoldPrinter.Title = CurrentPTemplate.OrderName; //主标题(C#用\n表示换行) } misGoldPrinter.Caption = ""; double headRow = Math.Round(Convert.ToSingle(CurrentPTemplate.SystemVariables.Count / 2)); Header header = new Header(Convert.ToInt32(headRow) + 1, 2); // CommonGlobalUtil.WriteLog("变量总数=" + CurrentPTemplate.SystemVariables.Count + "\r\n" + "应显示行号=" + headRow); header.IsDrawAllPage = true; #region Member _member = null; if (item.RetailOrder.MemeberID != null) { _member = CommonGlobalCache.ServerProxy.GetOneMember(item.RetailOrder.MemeberID); } for (int i = 0; i < CurrentPTemplate.SystemVariables.Count; i++) { int curR = 0; if (i < 2) { curR = 0; } else { double resRow = i / 2; curR = Convert.ToInt32(Math.Round(resRow)); } string KeyStr = ""; if (CurrentPTemplate.SystemVariables[i] == "销售单号") { KeyStr = "销售单号:"; header.SetText(curR, i % 2, CurrentPTemplate.SystemVariables[i] + ":" + item.RetailOrder.ID); } else if (CurrentPTemplate.SystemVariables[i] == "单据日期") { KeyStr = "单据日期:"; header.SetText(curR, i % 2, KeyStr + item.RetailOrder.CreateTime.GetDateTimeFormats('f')[0].ToString()); } else if (CurrentPTemplate.SystemVariables[i] == "客户名称") { KeyStr = "客户名称:"; if (_member != null) { header.SetText(curR, i % 2, KeyStr + _member.Name); } else { header.SetText(curR, i % 2, KeyStr); } } else if (CurrentPTemplate.SystemVariables[i] == "客户电话") { KeyStr = "客户电话:"; if (_member != null) { header.SetText(curR, i % 2, KeyStr + _member.PhoneNumber); } else { header.SetText(curR, i % 2, KeyStr); } } else if (CurrentPTemplate.SystemVariables[i] == "客户地址") { KeyStr = "客户地址:"; if (_member != null) { header.SetText(curR, i % 2, KeyStr + _member.DetailAddress); } else { header.SetText(curR, i % 2, KeyStr); } } else if (CurrentPTemplate.SystemVariables[i] == "操作人") { KeyStr = "操 作 人:"; header.SetText(curR, i % 2, KeyStr + CommonGlobalCache.GetUserName(item.RetailOrder.GuideID)); } else if (CurrentPTemplate.SystemVariables[i] == "单据备注") { KeyStr = "备 注:"; header.SetText(curR, i % 2, KeyStr + item.RetailOrder.Remarks.ToString()); } } #endregion misGoldPrinter.Header = header; // List<PrintColumnInfo> allPrintColumnInfos=new List<PrintColumnInfo>(); List <PrintColumnInfo> dataGV = new List <PrintColumnInfo>(); PrintColumnInfo prinAutoIDColumn = new PrintColumnInfo(); prinAutoIDColumn.Name = "序列号"; prinAutoIDColumn.Rate = 5; dataGV.Add(prinAutoIDColumn); dataGV.AddRange(CurrentPTemplate.PrintColumnInfos); // allPrintColumnInfos = dataGV; string ColumnsList = string.Empty; foreach (PrintColumnInfo itemC in dataGV) { ColumnsList += itemC.Name + ","; } CommonGlobalUtil.WriteLog("模板设置打印列表头为=" + ColumnsList + "\r\n"); //表格是否为零条记录 bool isflag = false; if (dataGV.Count == 0) { isflag = true; } List <int> columnCount = new List <int>(); int pinrtColNum = 0; string dataGridColumnsList = string.Empty; if (dataGridView2.Columns.Count > 0) { for (int i = 0; i < dataGridView2.Columns.Count; i++) { DataGridViewColumn column = dataGridView2.Columns[i]; if (dataGV.FindAll(t => t.Name == column.HeaderText).Count > 0) { columnCount.Add(i); dataGridColumnsList += column.HeaderText + ","; pinrtColNum++; } else { if (dataGV.FindAll(t => t.Name == column.DataPropertyName).Count > 0) { columnCount.Add(i); column.HeaderText = column.HeaderText.Replace("\r\n", " "); dataGridColumnsList += column.DataPropertyName + ","; pinrtColNum++; } else { if (column.DataPropertyName.Contains("XL")) { string name = column.DataPropertyName; //XL3 //3XL string newname = name.Replace("XL", ""); string checkstr = newname + "XL"; if (dataGV.FindAll(t => t.Name == checkstr).Count > 0) { columnCount.Add(i); column.HeaderText = column.HeaderText.Replace("\r\n", " "); dataGridColumnsList += column.DataPropertyName + ","; pinrtColNum++; } else { column.Visible = false; } } else { column.Visible = false; } } } if (isflag) { if (i == 0) { //打印设置模板不设置任何列,但由于MisGoldPrinter这个类的打印主体为DataGridView,所有必须设置一列默认空的 columnCount.Add(i); column.Visible = true; column.HeaderText = ""; DataTable dt = new DataTable(); DataColumn c1 = new DataColumn(); c1.ColumnName = "HeaderText"; dt.Columns.Add(c1); dataGridView2.DataSource = null; dataGridView2.DataSource = dt; } } //} } CommonGlobalUtil.WriteLog("DataGridView能打印的列为=" + dataGridColumnsList); MultiHeader multiHeader = new MultiHeader(1, dataGV.Count); for (int a = 0; a < dataGV.Count; a++) { multiHeader.SetText(0, a, dataGV[a].Name); } misGoldPrinter.IsTotalIsDrawAllPage = false; misGoldPrinter.DataSource = DataGridViewUtil.ToStringArray(dataGridView2, false, true); misGoldPrinter.RowsPerPage = CurrentPTemplate.Rows + 1; //根据设置传值 misGoldPrinter.IsSubTotalPerPage = true; int footerRowsNum = 0; if (((GoldPrinter.Body)(misGoldPrinter.Body)).Rows >= 2) { footerRowsNum = ((GoldPrinter.Body)(misGoldPrinter.Body)).Rows; } else { footerRowsNum = 2; } Footer footer = new Footer(footerRowsNum, dataGV.Count); int colIndex = -1; int colIndexSecond = -1; for (int b = 0; b < dataGV.Count; b++) { if (dataGV[b].Name == "金额") { colIndex = b; } if (dataGV[b].Name == "数量") { colIndexSecond = b; } } string addressStr = string.Empty; for (int a = 0; a < CurrentPTemplate.SystemVariables.Count; a++) { //if (dataGridView2.Rows.Count >= 2) //{ if (CurrentPTemplate.SystemVariables[a] == "店铺地址") { Shop curShop = CommonGlobalCache.GetShop(item.RetailOrder.ShopID); if (curShop != null) { footer.SetText(0, 0, "店铺地址:" + curShop.Address); } } if (CurrentPTemplate.SystemVariables[a] == "联系电话") { Shop curShop = CommonGlobalCache.GetShop(item.RetailOrder.ShopID); if (curShop != null) { footer.SetText(1, 0, "联系电话:" + curShop.PhoneNumber); } } //} //else if(dataGridView2.Rows.Count >= 1) //{ // if (CurrentPTemplate.SystemVariables[a] == "店铺地址") // { // if (item.RetailOrder.ShopID != null && item.RetailOrder.ShopID != "_online") // { // addressStr += "店铺地址:" + CommonGlobalCache.GetShop(item.RetailOrder.ShopID).Address; // } // } // if (CurrentPTemplate.SystemVariables[a] == "联系电话") // { // if (addressStr != string.Empty) // { // addressStr += " "; // } // if (item.RetailOrder.ShopID != null && item.RetailOrder.ShopID != "_online") // { // addressStr += "联系电话:" + CommonGlobalCache.GetShop(item.RetailOrder.ShopID).PhoneNumber; // } // } //} } //if (dataGridView2.Rows.Count == 1) //{ // footer.SetText(0, 0, addressStr); //} MoneyConvertChinese MConvertC = new MoneyConvertChinese(); /* if (dataGridView2.Rows.Count > 1) * { * footer.SetText(0, 0, "合计 金额大写 " + MConvertC.MoneyToChinese(item.RetailOrder.TotalMoneyReceived.ToString())); * * } * else * { * footer.SetText(0, 0, addressStr + " 合计 金额大写 " + MConvertC.MoneyToChinese(item.RetailOrder.TotalMoneyReceived.ToString())); * * }*/ misGoldPrinter.EndSubTotalColsList = MConvertC.MoneyToChinese(item.RetailOrder.TotalMoneyReceived.ToString()) + ":" + item.RetailOrder.TotalMoneyReceived.ToString(); // footer.SetText(0, 1, "合计:" + item.RetailOrder.TotalMoneyReceived); // PrinterBase pbase = footer.CalculatePageInfo(); /* if (Math.Ceiling((decimal)dataGridView2.Rows.Count / CurrentPTemplate.Rows) > 1) * { * footer.IsDrawAllPage = false; * } * else * { * * footer.IsDrawAllPage = true; * }*/ footer.IsDrawAllPage = false; Bottom bottom = new Bottom(); bottom.IsDrawAllPage = true; misGoldPrinter.SubTotalColsList = (colIndex).ToString() + ";" + (colIndexSecond).ToString(); //用分号分隔的要求小计的列 /* if (!Directory.Exists(CommonGlobalUtil.SystemDir + "EXPORTS\\")) * { * Directory.CreateDirectory(CommonGlobalUtil.SystemDir + "EXPORTS\\"); * } * misGoldPrinter.FileName = CommonGlobalUtil.SystemDir + "EXPORTS\\" + item.RetailOrder.ID + ".jpg";*/ ((GoldPrinter.Body)(misGoldPrinter.Body)).Font = dataGridView2.Font; int[] widths = new int[dataGV.Count]; for (int j = 0; j < dataGV.Count; j++) { widths[j] = Convert.ToInt32(dataGV[j].Rate); } List <int> widthList = new List <int>(); /* for (int i = 0; i < dataGV.Count; i++) * { * DataGridViewColumn column = dataGridView2.Columns[columnCount[i]]; * if (column.Visible && !String.IsNullOrEmpty(column.HeaderText)) * { * widthList.Add(widths[i]); * } * * }*/ if (isflag) { widths = new int[1]; widths[0] = 100; // widthList.Add(widths[0]); } // widths = widthList.ToArray(); int newWidth = 800; /* int totalWidth = 0; * for (int i = 0; i < widths.Length; i++) * { * totalWidth += widths[i]; * }*/ //if (dataGridView2.Columns.Count > 0) //{ for (int i = 0; i < widths.Length; i++) { widths[i] = decimal.ToInt32(Math.Round((widths[i] * newWidth * (decimal)0.1), 0, MidpointRounding.AwayFromZero)); // widths[i] = decimal.ToInt32(Math.Round((widths[i] * newWidth * (decimal)1.0 / totalWidth), 0, MidpointRounding.AwayFromZero)); } CommonGlobalUtil.WriteLog("实际打印数量=" + pinrtColNum + "\r\n" + "设置能打印的列数量=" + widths.Length.ToString()); /* bottomFooter.ColsWidth = widths;*/ footer.ColsWidth = widths; misGoldPrinter.Footer = footer; /* misGoldPrinter.BottomFooter = bottomFooter;*/ misGoldPrinter.Bottom = bottom; multiHeader.ColsWidth = widths; misGoldPrinter.MultiHeader = multiHeader; multiHeader.ColsWidth = widths; ((GoldPrinter.Body)(misGoldPrinter.Body)).IsAverageColsWidth = false; ((GoldPrinter.Body)(misGoldPrinter.Body)).ColsWidth = widths; misGoldPrinter.Preview(); misGoldPrinter.Dispose(); misGoldPrinter = null; }
private static void setPrintPurchaseData(PurchaseOrder item, DataGridView dataGridView2, PrintTemplateType type) { InteractResult <PrintTemplateInfo> result = CommonGlobalCache.ServerProxy.GetPrintTemplateInfo(type); //行列数基本不受限制,但超过一页失去意义,因为以Body为主,以其它为辅 // Header header = new Header(4, 2); //可以指定每页是否重复打印 if (result.ExeResult == ExeResult.Success) { PrintTemplateInfo CurrentPTemplate = result.Data; for (int c = 0; c < CurrentPTemplate.PrintCount; c++) { GoldPrinter.MisGoldPrinter misGoldPrinter = new GoldPrinter.MisGoldPrinter(false, new PrinterMargins(20, 20, 20, 20, 800, 1129)); if (CurrentPTemplate.OrderName != "") { //misGoldPrinter.Title = CurrentPTemplate.OrderName; //主标题(C#用\n表示换行) ////this.CurrentPTemplate = PTemplateInfo; //double headRow = Math.Round(Convert.ToSingle(CurrentPTemplate.SystemVariables.Count / 2)); //Header header = new Header(Convert.ToInt32(headRow) + 1, 2); //header.IsDrawAllPage = true; misGoldPrinter.Title = CurrentPTemplate.OrderName; //主标题(C#用\n表示换行) } misGoldPrinter.Caption = ""; double headRow = Math.Round(Convert.ToSingle(CurrentPTemplate.SystemVariables.Count / 2)); Header header = new Header(Convert.ToInt32(headRow) + 1, 2); CommonGlobalUtil.WriteLog("变量总数=" + CurrentPTemplate.SystemVariables.Count + "\r\n" + "应显示行号=" + headRow); header.IsDrawAllPage = true; for (int i = 0; i < CurrentPTemplate.SystemVariables.Count; i++) { int curR = 0; if (i < 2) { curR = 0; } else { double resRow = i / 2; curR = Convert.ToInt32(Math.Round(resRow)); } string KeyStr = ""; if (CurrentPTemplate.SystemVariables[i] == "采购单号") { KeyStr = "采购单号:"; header.SetText(curR, i % 2, CurrentPTemplate.SystemVariables[i] + item.ID); } else if (CurrentPTemplate.SystemVariables[i] == "开单时间") { KeyStr = "开单时间:"; header.SetText(curR, i % 2, KeyStr + item.CreateTime.GetDateTimeFormats('f')[0].ToString()); } else if (CurrentPTemplate.SystemVariables[i] == "供应商") { KeyStr = "供 应 商:"; header.SetText(curR, i % 2, KeyStr + CommonGlobalCache.GetSupplierName(item.SupplierID)); } else if (CurrentPTemplate.SystemVariables[i] == "操作人") { KeyStr = "操 作 人:"; header.SetText(curR, i % 2, KeyStr + CommonGlobalCache.GetUserName(item.AdminUserID)); } else if (CurrentPTemplate.SystemVariables[i] == "总数量") { KeyStr = "总 数 量:"; header.SetText(curR, i % 2, KeyStr + item.TotalCount.ToString()); } else if (CurrentPTemplate.SystemVariables[i] == "总成本") { KeyStr = "总 成 本:"; header.SetText(curR, i % 2, KeyStr + item.TotalCost.ToString()); } else if (CurrentPTemplate.SystemVariables[i] == "单据备注") { KeyStr = "备 注:"; header.SetText(curR, i % 2, KeyStr + item.Remarks.ToString()); } } /* header.SetText(0, 0, "采购单号:" + item.ID); * header.SetText(0, 1, "开单时间:" + item.CreateTime.GetDateTimeFormats('f')[0].ToString()); //DataSource可以是字符串、一维数组、二维数组、DataTable、WinDataGrid、WebDataGrid、ListView\ListView、 * header.SetText(1, 0, "供 应 商:" + CommonGlobalCache.GetSupplierName(item.SupplierID)); * header.SetText(1, 1, "操 作 人:" + CommonGlobalCache.GetUserName(item.AdminUserID)); //同仁们还可以根据实际应用对GridBase的DataSource进行扩展 * header.SetText(2, 0, "总 数 量:" + item.TotalCount.ToString()); * header.SetText(2, 1, "总 成 本:" + item.TotalCost.ToString()); //同仁们还可以根据实际应用对GridBase的DataSource进行扩展 * header.SetText(3, 0, "备 注:"); * header.SetText(3, 1, item.Remarks);*/ misGoldPrinter.Header = header; //misGoldPrinter.RowsPerPage //Bottom bottom = new Bottom(); // bottom.DrawPrinterMargins /*misGoldPrinter.DataSource = DataGridViewUtil.ToStringArray(dataGridView2, true, true); * if (!Directory.Exists(CommonGlobalUtil.SystemDir + "EXPORTS\\")) * { * Directory.CreateDirectory(CommonGlobalUtil.SystemDir + "EXPORTS\\"); * } * misGoldPrinter.FileName = CommonGlobalUtil.SystemDir + "EXPORTS\\" + item.ID + ".jpg"; * ((GoldPrinter.Body)(misGoldPrinter.Body)).Font = dataGridView2.Font; * * // int[] widths = new int[] { * // 80,100,50,40,50,50,50,50,50, * // 30,30,30,30,30,30,30,30,30,30,30 * // ,40,50,50 * //}; * int[] widths = new int[CurrentPTemplate.PrintColumnInfos.Count]; * for (int j = 0; j < CurrentPTemplate.PrintColumnInfos.Count; j++) * { * widths[j] = Convert.ToInt32(CurrentPTemplate.PrintColumnInfos[j].Rate); * } * * * //尺码固定的,但是他会变,那么怎么根据他的显示设置, * * List<int> widthList = new List<int>(); * List<int> columnCount = new List<int>(); * List<DataGridViewColumn> columns = new List<DataGridViewColumn>(); * List<PrintColumnInfo> dataGV = CurrentPTemplate.PrintColumnInfos; * foreach (DataGridViewColumn col in dataGridView2.Columns) * { * if (col.Tag?.ToString() != PrinterNoCount) * { * // columns.Add(col); * } * if (dataGV.FindAll(t => t.Name == col.HeaderText).Count > 0) * { * columns.Add(col); * * } * else * { * col.Visible = false; * } * * * * } * * for (int i = 0; i < columns.Count; i++) * { * DataGridViewColumn column = columns[i]; * if (column.Visible) * { * widthList.Add(widths[i]); * } * } * * widths = widthList.ToArray(); * int newWidth = 800; * //int totalWidth = 0; * //for (int i = 0; i < widths.Length; i++) * //{ * // totalWidth += widths[i]; * //} * * for (int i = 0; i < widths.Length; i++) * { * // widths[i] = decimal.ToInt32(Math.Round((widths[i] * newWidth * (decimal)0.1), 0, MidpointRounding.AwayFromZero)); * * widths[i] = decimal.ToInt32(Math.Round((widths[i] * 10 * (decimal)0.1), 0, MidpointRounding.AwayFromZero)); * } * ((GoldPrinter.Body)(misGoldPrinter.Body)).ColsWidth = widths; * misGoldPrinter.Preview(); * misGoldPrinter.Dispose(); * misGoldPrinter = null;*/ List <PrintColumnInfo> dataGV = CurrentPTemplate.PrintColumnInfos; string ColumnsList = string.Empty; foreach (PrintColumnInfo itemC in dataGV) { ColumnsList += itemC.Name + ","; } CommonGlobalUtil.WriteLog("模板设置打印列表头为=" + ColumnsList + "\r\n"); bool isflag = false; if (dataGV.Count == 0) { isflag = true; } List <int> columnCount = new List <int>(); int pinrtColNum = 0; string dataGridColumnsList = string.Empty; if (dataGridView2.Columns.Count > 0) { for (int i = 0; i < dataGridView2.Columns.Count; i++) { DataGridViewColumn column = dataGridView2.Columns[i]; //if (column.HeaderText == "F" || column.HeaderText == "XS" || column.HeaderText == "S" || column.HeaderText == "M" || column.HeaderText == "L" // || column.HeaderText == "XL" || column.HeaderText == "2XL" || column.HeaderText == "3XL" || column.HeaderText == "4XL" || column.HeaderText == "5XL" // || column.HeaderText == "6XL") //{ // if (dataGV.FindAll(t => t.Name == "尺码列").Count > 0) // { // columnCount.Add(i); // } // else // { // column.Visible = false; // } //} //else //{ if (dataGV.FindAll(t => t.Name == column.HeaderText).Count > 0) { columnCount.Add(i); dataGridColumnsList += column.HeaderText + ","; pinrtColNum++; } else { if (dataGV.FindAll(t => t.Name == column.DataPropertyName).Count > 0) { columnCount.Add(i); column.HeaderText = column.HeaderText.Replace("\r\n", " "); dataGridColumnsList += column.DataPropertyName + ","; pinrtColNum++; } else { if (column.DataPropertyName.Contains("XL")) { string name = column.DataPropertyName; //XL3 //3XL string newname = name.Replace("XL", ""); string checkstr = newname + "XL"; if (dataGV.FindAll(t => t.Name == checkstr).Count > 0) { columnCount.Add(i); column.HeaderText = column.HeaderText.Replace("\r\n", " "); dataGridColumnsList += column.DataPropertyName + ","; pinrtColNum++; } else { column.Visible = false; } } else { column.Visible = false; } } } if (isflag) { if (i == 0) { //打印设置模板不设置任何列,但由于MisGoldPrinter这个类的打印主体为DataGridView,所有必须设置一列默认空的 columnCount.Add(i); column.Visible = true; column.HeaderText = ""; DataTable dt = new DataTable(); DataColumn c1 = new DataColumn(); c1.ColumnName = "HeaderText"; dt.Columns.Add(c1); dataGridView2.DataSource = null; dataGridView2.DataSource = dt; } } //} } CommonGlobalUtil.WriteLog("DataGridView能打印的列为=" + dataGridColumnsList); misGoldPrinter.DataSource = DataGridViewUtil.ToStringArray(dataGridView2, true, true); // misGoldPrinter.DataSource = dataGridView2.DataSource; if (!Directory.Exists(CommonGlobalUtil.SystemDir + "EXPORTS\\")) { Directory.CreateDirectory(CommonGlobalUtil.SystemDir + "EXPORTS\\"); } misGoldPrinter.FileName = CommonGlobalUtil.SystemDir + "EXPORTS\\" + item.ID + ".jpg"; ((GoldPrinter.Body)(misGoldPrinter.Body)).Font = dataGridView2.Font; /* int[] widths = new int[] { * 80,100,50,40, 50, * 30,30,30,30,30,30,30,30,30,30,30 * ,40,50,50 * };*/ int[] widths = new int[CurrentPTemplate.PrintColumnInfos.Count]; for (int j = 0; j < CurrentPTemplate.PrintColumnInfos.Count; j++) { widths[j] = Convert.ToInt32(CurrentPTemplate.PrintColumnInfos[j].Rate); } /* List<int> widthList = new List<int>(); * for (int i = 0; i < CurrentPTemplate.PrintColumnInfos.Count; i++) * { * DataGridViewColumn column = dataGridView2.Columns[columnCount[i]]; * if (column.Visible && !String.IsNullOrEmpty(column.HeaderText)) * { * widthList.Add(widths[i]); * } * * }*/ if (isflag) { widths = new int[1]; widths[0] = 100; /* widthList.Add(widths[0]);*/ } /* widths = widthList.ToArray();*/ int newWidth = 800; /* int totalWidth = 0; * for (int i = 0; i < widths.Length; i++) * { * totalWidth += widths[i]; * }*/ //if (dataGridView2.Columns.Count > 0) //{ for (int i = 0; i < widths.Length; i++) { widths[i] = decimal.ToInt32(Math.Round((widths[i] * newWidth * (decimal)0.1), 0, MidpointRounding.AwayFromZero)); // widths[i] = decimal.ToInt32(Math.Round((widths[i] * newWidth * (decimal)1.0 / totalWidth), 0, MidpointRounding.AwayFromZero)); } CommonGlobalUtil.WriteLog("实际打印数量=" + pinrtColNum + "\r\n" + "设置能打印的列数量=" + widths.Length.ToString()); //misGoldPrinter.Bottom= ((GoldPrinter.Body)(misGoldPrinter.Body)).ColsWidth = widths; misGoldPrinter.Preview(); misGoldPrinter.Dispose(); //misGoldPrinter.Print(); misGoldPrinter = null; } } } } }
//简单打印示例 public static void Print(PfOrder item, DataGridView dataGridView2, int times = 1) { InteractResult <PrintTemplateInfo> result; if (item.IsRefundOrder) { result = CommonGlobalCache.ServerProxy.GetPrintTemplateInfo(PrintTemplateType.PfTOrder); } else { result = CommonGlobalCache.ServerProxy.GetPrintTemplateInfo(PrintTemplateType.PfOrder); } if (result.ExeResult == ExeResult.Success) { PrintTemplateInfo CurrentPTemplate = result.Data; for (int c = 0; c < CurrentPTemplate.PrintCount; c++) { GoldPrinter.MisGoldPrinter misGoldPrinter = new GoldPrinter.MisGoldPrinter(false, new PrinterMargins(20, 20, 20, 20, 800, 1129)); if (CurrentPTemplate.OrderName != "") { misGoldPrinter.Title = CurrentPTemplate.OrderName; //主标题(C#用\n表示换行) } misGoldPrinter.Caption = ""; double headRow = Math.Round(Convert.ToSingle(CurrentPTemplate.SystemVariables.Count / 2)); Header header = new Header(Convert.ToInt32(headRow) + 1, 2); header.IsDrawAllPage = true; CommonGlobalUtil.WriteLog("变量总数=" + CurrentPTemplate.SystemVariables.Count + "\r\n" + "应显示行号=" + headRow + 1); //GoldPrinter.MisGoldPrinter misGoldPrinter = new GoldPrinter.MisGoldPrinter(false, new PrinterMargins(20, 20, 20, 20, 787, 1129)); // if (item.IsRefundOrder) // { // misGoldPrinter.Title = "批发退货单"; // } // else // { // misGoldPrinter.Title = "批发发货单"; // } //// misGoldPrinter.Title = "批发单"; //主标题(C#用\n表示换行) // misGoldPrinter.Caption = ""; //副标题 // //misGoldPrinter.Top = "单号:" + item.AllocateOrder.ID + "|收货方:" + CommonGlobalCache.GetShopName(item.AllocateOrder.DestShopID) + "|开单日期:" + item.AllocateOrder.CreateTime; //抬头,一行三列的文字说明,用|分隔 for (int i = 0; i < CurrentPTemplate.SystemVariables.Count; i++) { int curR = 0; if (i < 2) { curR = 0; } else { double resRow = i / 2; curR = Convert.ToInt32(Math.Round(resRow)); } string KeyStr = ""; if (CurrentPTemplate.SystemVariables[i] == "单号") { KeyStr = "批发单号:"; header.SetText(curR, i % 2, CurrentPTemplate.SystemVariables[i] + item.ID); } else if (CurrentPTemplate.SystemVariables[i] == "客户") { KeyStr = "客 户:"; header.SetText(curR, i % 2, KeyStr + PfCustomerCache.GetUserNameWithPf(item.PfCustomerID)); } else if (CurrentPTemplate.SystemVariables[i] == "开单时间") { KeyStr = "开单时间:"; header.SetText(curR, i % 2, KeyStr + item.CreateTime.GetDateTimeFormats('f')[0].ToString()); } else if (CurrentPTemplate.SystemVariables[i] == "操作人") { KeyStr = "操 作 人:"; header.SetText(curR, i % 2, KeyStr + CommonGlobalCache.GetUserName(item.AdminUserID)); } else if (CurrentPTemplate.SystemVariables[i] == "付款方式") { KeyStr = "付款方式:"; header.SetText(curR, i % 2, KeyStr + item.PayTypeName); } else if (CurrentPTemplate.SystemVariables[i] == "总数量") { KeyStr = "总 数 量:"; header.SetText(curR, i % 2, KeyStr + item.TotalCount.ToString()); } else if (CurrentPTemplate.SystemVariables[i] == "上欠金额") { KeyStr = "上欠金额:"; header.SetText(curR, i % 2, KeyStr + item.PaymentBalanceOld.ToString()); } else if (CurrentPTemplate.SystemVariables[i] == "本次应收金额") { KeyStr = "本次应收金额:"; header.SetText(curR, i % 2, KeyStr + item.TotalPfPrice.ToString()); } else if (CurrentPTemplate.SystemVariables[i] == "应收总额") { KeyStr = "应收总额:"; header.SetText(curR, i % 2, KeyStr + item.PaymentBalance.ToString()); } else if (CurrentPTemplate.SystemVariables[i] == "单据备注") { KeyStr = "备 注:"; header.SetText(curR, i % 2, KeyStr + item.Remarks.ToString()); } } // Header header = new Header(4, 3); //行列数基本不受限制,但超过一页失去意义,因为以Body为主,以其它为辅 // header.IsDrawAllPage = true; //可以指定每页是否重复打印 //header.SetText(0, 0, "批发单号:" + item.ID); //header.SetText(0, 1, "客 户:" + PfCustomerCache.GetUserNameWithPf(item.PfCustomerID)); //header.SetText(0, 2, "开单时间:" + item.CreateTime.GetDateTimeFormats('f')[0].ToString()); //DataSource可以是字符串、一维数组、二维数组、DataTable、WinDataGrid、WebDataGrid、ListView\ListView、 //header.SetText(1, 0, "操 作 人:" + CommonGlobalCache.GetUserName(item.AdminUserID)); //header.SetText(1, 1, "付款方式:" + item.PayTypeName); //同仁们还可以根据实际应用对GridBase的DataSource进行扩展 //header.SetText(1, 2, String.Empty); //header.SetText(2, 0, "总 数 量:" + item.TotalCount.ToString()); //header.SetText(2, 1, "批发总额:" + item.TotalPfPrice.ToString()); //同仁们还可以根据实际应用对GridBase的DataSource进行扩展 //header.SetText(2, 2, String.Empty); //header.SetText(3, 0, "备 注:" ); //header.SetText(3, 1, item.Remarks); //同仁们还可以根据实际应用对GridBase的DataSource进行扩展 //header.SetText(3, 2, String.Empty); misGoldPrinter.Header = header; List <PrintColumnInfo> dataGV = CurrentPTemplate.PrintColumnInfos; string ColumnsList = string.Empty; foreach (PrintColumnInfo itemC in dataGV) { ColumnsList += itemC.Name + ","; } CommonGlobalUtil.WriteLog("模板设置打印列表头为=" + ColumnsList + "\r\n"); bool isflag = false; if (dataGV.Count == 0) { isflag = true; } // DataTable dt = dataGridView2.DataSource as DataTable; // DataTable newDt = new DataTable(); List <int> columnCount = new List <int>(); int pinrtColNum = 0; string dataGridColumnsList = string.Empty; for (int i = 0; i < dataGridView2.Columns.Count; i++) { DataGridViewColumn column = dataGridView2.Columns[i]; //if (column.HeaderText == "F" || column.HeaderText == "XS" || column.HeaderText == "S" || column.HeaderText == "M" || column.HeaderText == "L" // || column.HeaderText == "XL" || column.HeaderText == "XL2" || column.HeaderText == "XL3" || column.HeaderText == "XL4" || column.HeaderText == "XL5" // || column.HeaderText == "XL6") //{ // if (dataGV.FindAll(t => t.Name == "尺码列").Count > 0) // { // columnCount.Add(i); // } // else // { // column.Visible = false; // } //} //else //{ if (dataGV.FindAll(t => t.Name == column.HeaderText).Count > 0) { columnCount.Add(i); dataGridColumnsList += column.HeaderText + ","; pinrtColNum++; } else { if (dataGV.FindAll(t => t.Name == column.DataPropertyName).Count > 0) { columnCount.Add(i); column.HeaderText = column.HeaderText.Replace("\r\n", " "); dataGridColumnsList += column.DataPropertyName + ","; pinrtColNum++; } else { if (column.DataPropertyName.Contains("XL")) { string name = column.DataPropertyName; //XL3 //3XL string newname = name.Replace("XL", ""); string checkstr = newname + "XL"; if (dataGV.FindAll(t => t.Name == checkstr).Count > 0) { columnCount.Add(i); column.HeaderText = column.HeaderText.Replace("\r\n", " "); dataGridColumnsList += column.DataPropertyName + ","; pinrtColNum++; } else { column.Visible = false; } } else { column.Visible = false; } } } //} CommonGlobalUtil.WriteLog("DataGridView能打印的列为=" + dataGridColumnsList); if (isflag) { if (i == 0) { columnCount.Add(i); column.Visible = true; column.HeaderText = ""; DataTable dt = new DataTable(); DataColumn c1 = new DataColumn(); c1.ColumnName = "HeaderText"; dt.Columns.Add(c1); dataGridView2.DataSource = null; dataGridView2.DataSource = dt; } } } misGoldPrinter.DataSource = DataGridViewUtil.ToStringArray(dataGridView2, true, true); if (!Directory.Exists(CommonGlobalUtil.SystemDir + "EXPORTS\\")) { Directory.CreateDirectory(CommonGlobalUtil.SystemDir + "EXPORTS\\"); } misGoldPrinter.FileName = CommonGlobalUtil.SystemDir + "EXPORTS\\" + item.ID + ".jpg"; ((GoldPrinter.Body)(misGoldPrinter.Body)).Font = dataGridView2.Font; /* int[] widths = new int[] { * 80,100,50,40, 50, * 30,30,30,30,30,30,30,30,30,30,30 * ,40,50,50 * };*/ int[] widths = new int[CurrentPTemplate.PrintColumnInfos.Count]; CommonGlobalUtil.WriteLog("widths长度" + widths.Length); CommonGlobalUtil.WriteLog("实际打印数量=" + pinrtColNum + "\r\n" + "设置能打印的列数量=" + widths.Length.ToString()); for (int j = 0; j < CurrentPTemplate.PrintColumnInfos.Count; j++) { widths[j] = Convert.ToInt32(CurrentPTemplate.PrintColumnInfos[j].Rate); } List <int> widthList = new List <int>(); for (int i = 0; i < CurrentPTemplate.PrintColumnInfos.Count; i++) { DataGridViewColumn column = dataGridView2.Columns[columnCount[i]]; if (column.Visible && !String.IsNullOrEmpty(column.HeaderText)) { widthList.Add(widths[i]); } else { /* if (column.Visible && !String.IsNullOrEmpty(column.DataPropertyName)) * { * widthList.Add(widths[i]); * }*/ } } if (isflag) { widths = new int[1]; widths[0] = 100; widthList.Add(widths[0]); } widths = widthList.ToArray(); int newWidth = 800; /* int totalWidth = 0; * for (int i = 0; i < widths.Length; i++) * { * totalWidth += widths[i]; * }*/ for (int i = 0; i < widths.Length; i++) { widths[i] = decimal.ToInt32(Math.Round((widths[i] * newWidth * (decimal)0.1), 0, MidpointRounding.AwayFromZero)); // widths[i] = decimal.ToInt32(Math.Round((widths[i] * newWidth * (decimal)1.0 / totalWidth), 0, MidpointRounding.AwayFromZero)); } ((GoldPrinter.Body)(misGoldPrinter.Body)).ColsWidth = widths; //((GoldPrinter.Body)(misGoldPrinter.Body)).RowHeight = 100; misGoldPrinter.Preview(); misGoldPrinter.Dispose(); misGoldPrinter = null; } } } }
private void selectPrintInfo() { InteractResult <PrintTemplateInfo> result = GlobalCache.ServerProxy.GetPrintTemplateInfo(PrintTemplateType.DayReport); switch (result.ExeResult) { case ExeResult.Error: GlobalMessageBox.Show(result.Msg); break; case ExeResult.Success: PrintTemplateInfo PTempInfo = result.Data; /* if (PTempInfo.PrintColumnInfos.Count > 0) * { * // List<PrintColumnsInfo> list = GlobalUtilOfPrint.getPurchaseStockColumnsInfo(); * * List<PrintColumnsInfo> source = (List<PrintColumnsInfo>)this.dataGridViewColumns.DataSource; * //lastPrintColumnsInfo.Clear(); * List<PrintColumnsInfo> columnsSelect = new List<PrintColumnsInfo>(); * foreach (PrintColumnsInfo cInfo in source) * { * foreach (PrintColumnInfo item in PTempInfo.PrintColumnInfos) * { * * if (cInfo.name == item.Name) * { * cInfo.ischeck = true; * * columnsSelect.Add(cInfo); * break; * } * else * { * cInfo.ischeck = false; * } * } * } * setColumnsHeaderInfo(columnsSelect); * this.dataGridViewColumns.DataSource = source; * * }*/ if (PTempInfo.SystemVariables.Count > 0) { List <PrintSysInfo> list = (List <PrintSysInfo>) this.dataGridViewSys.DataSource; // lastPrintSysInfo.Clear(); List <PrintSysInfo> columnsSysfirst = new List <PrintSysInfo>(); List <PrintSysInfo> columnsSysSecnod = new List <PrintSysInfo>(); List <PrintSysInfo> columnsSysthirdth = new List <PrintSysInfo>(); List <PrintSysInfo> columnsSysfourth = new List <PrintSysInfo>(); List <PrintSysInfo> columnsSysfiveth = new List <PrintSysInfo>(); List <PrintSysInfo> columnsSyssixth = new List <PrintSysInfo>(); foreach (PrintSysInfo pSys in list) { foreach (string sysInfo in PTempInfo.SystemVariables) { string[] sArray = sysInfo.Split('#'); if (pSys.name == sArray[0] && pSys.type.ToString() == sArray[1]) { pSys.ischeck = true; if (pSys.name == "日结时间" || pSys.name == "日结日期" || pSys.name == "店铺名称") { columnsSysfirst.Add(pSys); } else if (pSys.name == "期初库存" || pSys.name == "采购进货" || pSys.name == "采购退货" || pSys.name == "调拨入库" || pSys.name == "调拨" || pSys.name == "报损出库" || pSys.name == "盘盈数" || pSys.name == "盘亏数" || pSys.name == "批发发货" || pSys.name == "批发退货" || pSys.name == "当日销售" || pSys.name == "顾客退货" || pSys.name == "差异调整" || pSys.name == "期末库存" ) { columnsSysSecnod.Add(pSys); } else if ((pSys.name == "现金" && pSys.type == 0 && Convert.ToInt32(sArray[1]) == pSys.type) || (pSys.name == "银联卡" && pSys.type == 0 && Convert.ToInt32(sArray[1]) == pSys.type) || (pSys.name == "微信" && pSys.type == 0 && Convert.ToInt32(sArray[1]) == pSys.type) || (pSys.name == "支付宝" && pSys.type == 0 && Convert.ToInt32(sArray[1]) == pSys.type) || (pSys.name == "VIP卡余额" && pSys.type == 0 && Convert.ToInt32(sArray[1]) == pSys.type) || (pSys.name == "VIP卡积分返现" && pSys.type == 0 && Convert.ToInt32(sArray[1]) == pSys.type) || (pSys.name == "优惠券金额" && pSys.type == 0 && Convert.ToInt32(sArray[1]) == pSys.type)) { columnsSysthirdth.Add(pSys); } else if ((pSys.name == "现金" && pSys.type == 1 && Convert.ToInt32(sArray[1]) == pSys.type) || (pSys.name == "银联卡" && pSys.type == 1 && Convert.ToInt32(sArray[1]) == pSys.type) || (pSys.name == "微信" && pSys.type == 1 && Convert.ToInt32(sArray[1]) == pSys.type) || (pSys.name == "支付宝" && pSys.type == 1 && Convert.ToInt32(sArray[1]) == pSys.type) || (pSys.name == "其他" && pSys.type == 1 && Convert.ToInt32(sArray[1]) == pSys.type)) { columnsSysfourth.Add(pSys); } else if (pSys.name == "零售单数" || pSys.name == "营收金额" || pSys.name == "当日现金结余") { columnsSysfiveth.Add(pSys); } else if (pSys.name == "营业员签名" || pSys.name == "财务签名") { columnsSyssixth.Add(pSys); } // columnsSys.Add(pSys); break; } else { pSys.ischeck = false; } } } loadList.AddRange(columnsSysfirst); loadList.AddRange(columnsSysSecnod); loadList.AddRange(columnsSysthirdth); loadList.AddRange(columnsSysfourth); loadList.AddRange(columnsSysfiveth); loadList.AddRange(columnsSyssixth); setLblValue(columnsSysfirst, columnsSysSecnod, columnsSysthirdth, columnsSysfourth, columnsSysfiveth, columnsSyssixth); this.dataGridViewSys.DataSource = list; lastPrintSysInfo = list; } else { List <PrintSysInfo> list = (List <PrintSysInfo>) this.dataGridViewSys.DataSource; foreach (PrintSysInfo item in list) { item.ischeck = false; } } if (PTempInfo.OrderName != null && PTempInfo.OrderName != "") { this.lblCurDataName.Text = PTempInfo.OrderName; this.txtDataName.Text = PTempInfo.OrderName; } if (PTempInfo.PrintCount > 0) { this.numericTxtCount.Text = PTempInfo.PrintCount.ToString(); } // lastPrintColumnsInfo=result.Data. // listColumns = result.Data.PrintColumnInfos; break; default: break; } }
private void selectPrintInfo() { switch (result.ExeResult) { case ExeResult.Error: GlobalMessageBox.Show(result.Msg); break; case ExeResult.Success: PrintTemplateInfo PTempInfo = result.Data; if (PTempInfo.PrintColumnInfos.Count > 0) { // List<PrintColumnsInfo> list = GlobalUtilOfPrint.getPurchaseStockColumnsInfo(); List <PrintColumnsInfo> source = (List <PrintColumnsInfo>) this.dataGridViewColumns.DataSource; //lastPrintColumnsInfo.Clear(); List <PrintColumnsInfo> columnsSelect = new List <PrintColumnsInfo>(); foreach (PrintColumnsInfo cInfo in source) { foreach (PrintColumnInfo item in PTempInfo.PrintColumnInfos) { if (cInfo.name == item.Name) { cInfo.ischeck = true; columnsSelect.Add(cInfo); break; } else { cInfo.ischeck = false; } } } // PTempInfo.PrintColumnInfos[0].n curColumnInfo = PTempInfo.PrintColumnInfos; curColumnsSelect = columnsSelect; setColumnsHeaderInfo(columnsSelect, PTempInfo.PrintColumnInfos); this.dataGridViewColumns.DataSource = source; } else { List <PrintColumnsInfo> source = (List <PrintColumnsInfo>) this.dataGridViewColumns.DataSource; foreach (PrintColumnsInfo cItem in source) { cItem.ischeck = false; } List <PrintColumnInfo> sourceList = null; // this.dataGridView3.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; this.dataGridView3.DataSource = sourceList; } if (PTempInfo.SystemVariables.Count > 0) { List <PrintSysInfo> list = (List <PrintSysInfo>) this.dataGridViewSys.DataSource; // lastPrintSysInfo.Clear(); List <PrintSysInfo> columnsSys = new List <PrintSysInfo>(); List <PrintSysInfo> curFirstInfo = new List <PrintSysInfo>(); List <PrintSysInfo> curSecondInfo = new List <PrintSysInfo>(); List <PrintSysInfo> curThirdInfo = new List <PrintSysInfo>(); List <PrintSysInfo> curFourthInfo = new List <PrintSysInfo>(); foreach (PrintSysInfo pSys in list) { foreach (string sysInfo in PTempInfo.SystemVariables) { if (pSys.name == sysInfo) { pSys.ischeck = true; if (pSys.name == "单号" || pSys.name == "日期" || pSys.name == "电话" || pSys.name == "地址" || pSys.name == "顾问") { curFirstInfo.Add(pSys); } else if (pSys.name == "卡号" || pSys.name == "本次积分" || pSys.name == "当前积分" || pSys.name == "累计积分" || pSys.name == "余额") { curSecondInfo.Add(pSys); } else if (pSys.name == "银联卡" || pSys.name == "现金" || pSys.name == "VIP卡" || pSys.name == "支付宝" || pSys.name == "微信" || pSys.name == "积分兑现" || pSys.name == "优惠券" || pSys.name == "其他") { curThirdInfo.Add(pSys); } else if (pSys.name == "数量" || pSys.name == "折扣优惠" || pSys.name == "应收" || pSys.name == "姓名" || pSys.name == "找零" || pSys.name == "结尾附加文字" || pSys.name == "商城二维码" || pSys.name == "店铺") { curFourthInfo.Add(pSys); } // columnsSys.Add(pSys); break; } else { pSys.ischeck = false; } // loadList.Add(pSys); } } loadList.AddRange(curFirstInfo); loadList.AddRange(curSecondInfo); loadList.AddRange(curThirdInfo); loadList.AddRange(curFourthInfo); setLblValue(curFirstInfo, curSecondInfo, curThirdInfo, curFourthInfo, PTempInfo.AdditionalText); this.dataGridViewSys.DataSource = list; //curSysInfo = list; // loadList = list; } else { List <PrintSysInfo> list = (List <PrintSysInfo>) this.dataGridViewSys.DataSource; foreach (PrintSysInfo item in list) { item.ischeck = false; } } if (PTempInfo.PrintCount > 0) { this.numericTxtCount.Text = PTempInfo.PrintCount.ToString(); } // lastPrintColumnsInfo=result.Data. // listColumns = result.Data.PrintColumnInfos; break; default: break; } }
//简单打印示例 public static void Print(CheckStoreOrder item, DataGridView dataGridView2, int times = 1) { //if (times < 0) { times = 0; } //for (int i = 0; i < times; i++) //{ InteractResult <PrintTemplateInfo> result = CommonGlobalCache.ServerProxy.GetPrintTemplateInfo(PrintTemplateType.CheckStoreOrder); if (result.ExeResult == ExeResult.Success) { PrintTemplateInfo CurrentPTemplate = result.Data; for (int c = 0; c < CurrentPTemplate.PrintCount; c++) { GoldPrinter.MisGoldPrinter misGoldPrinter = new GoldPrinter.MisGoldPrinter(false, new PrinterMargins(20, 20, 20, 20, 800, 1129)); // misGoldPrinter.RowsPerPage = 3; if (CurrentPTemplate.OrderName != "") { misGoldPrinter.Title = CurrentPTemplate.OrderName; //主标题(C#用\n表示换行) } misGoldPrinter.Caption = ""; double headRow = Math.Round(Convert.ToSingle(CurrentPTemplate.SystemVariables.Count / 2)); Header header = new Header(Convert.ToInt32(headRow) + 1, 2); header.IsDrawAllPage = true; CommonGlobalUtil.WriteLog("变量总数=" + CurrentPTemplate.SystemVariables.Count + "\r\n" + "应显示行号=" + headRow + 1); // misGoldPrinter.Title = "盘点单"; //主标题(C#用\n表示换行) //misGoldPrinter.Caption = ""; //副标题 //misGoldPrinter.Top = "单号:" + item.AllocateOrder.ID + "|收货方:" + CommonGlobalCache.GetShopName(item.AllocateOrder.DestShopID) + "|开单日期:" + item.AllocateOrder.CreateTime; //抬头,一行三列的文字说明,用|分隔 // Header header = new Header(4, 3); //行列数基本不受限制,但超过一页失去意义,因为以Body为主,以其它为辅 //header.IsDrawAllPage = true; //可以指定每页是否重复打印 for (int i = 0; i < CurrentPTemplate.SystemVariables.Count; i++) { int curR = 0; if (i < 2) { curR = 0; } else { double resRow = i / 2; curR = Convert.ToInt32(Math.Round(resRow)); } string KeyStr = ""; if (CurrentPTemplate.SystemVariables[i] == "单号") { KeyStr = "盘点单号:"; header.SetText(curR, i % 2, CurrentPTemplate.SystemVariables[i] + item.ID); } else if (CurrentPTemplate.SystemVariables[i] == "店铺") { KeyStr = "店 铺:"; header.SetText(curR, i % 2, KeyStr + CommonGlobalCache.GetShopName(item.ShopID)); } else if (CurrentPTemplate.SystemVariables[i] == "操作人") { KeyStr = "操 作 人:"; header.SetText(curR, i % 2, KeyStr + CommonGlobalCache.GetUserName(item.OperatorUserID)); } else if (CurrentPTemplate.SystemVariables[i] == "审核人") { KeyStr = "审 核 人:"; header.SetText(curR, i % 2, KeyStr + CommonGlobalCache.GetUserName(item.CheckUserID)); } else if (CurrentPTemplate.SystemVariables[i] == "盘点时间") { KeyStr = "盘点时间:"; header.SetText(curR, i % 2, KeyStr + item.CreateTime.GetDateTimeFormats('f')[0].ToString()); } else if (CurrentPTemplate.SystemVariables[i] == "审核时间") { KeyStr = "审核时间:"; header.SetText(curR, i % 2, KeyStr + item.CheckTime.GetDateTimeFormats('f')[0].ToString()); } else if (CurrentPTemplate.SystemVariables[i] == "单据备注") { KeyStr = "备 注:"; header.SetText(curR, i % 2, KeyStr + item.Remarks.ToString()); } } // header.SetText(0, 0, "盘点单号:" + item.ID); // header.SetText(0, 1, "任务编号:" + item.CheckStoreTaskID); /* header.SetText(0, 2, String.Empty); * header.SetText(1, 0, "店 铺:" + CommonGlobalCache.GetShopName(item.ShopID)); * header.SetText(1, 1, "操 作 人:" + CommonGlobalCache.GetUserName(item.OperatorUserID)); * header.SetText(1, 2, "审 核 人:" + CommonGlobalCache.GetUserName(item.CheckUserID)); //同仁们还可以根据实际应用对GridBase的DataSource进行扩展 * header.SetText(2, 0, "盘点时间:" + item.CreateTime.GetDateTimeFormats('f')[0].ToString()); * header.SetText(2, 1, "审核时间:" + item.CheckTime.GetDateTimeFormats('f')[0].ToString()); * header.SetText(2, 2, String.Empty); * header.SetText(3, 0, "备 注:"); * header.SetText(3, 1, item.Remarks); * header.SetText(3, 2, String.Empty);*/ misGoldPrinter.Header = header; //将定制对象,赋给页头 // misGoldPrinter.Top = new String[] { "单号:" + item.AllocateOrder.ID + "|收货方:" + CommonGlobalCache.GetShopName(item.AllocateOrder.DestShopID) + "|开单日期:" + item.AllocateOrder.CreateTime, // "发货方:" + CommonGlobalCache.GetShopName(item.AllocateOrder.SourceShopID) + "|操作人:" + CommonGlobalCache.GetUserName(item.AllocateOrder.SourceUserID) + "|打印日期:" + System.DateTime.Now.ToLongDateString() }; //抬头,一行三列的文字说明,用|分隔 // misGoldPrinter.Bottom = "发货方:" + CommonGlobalCache.GetShopName(item.AllocateOrder.SourceShopID) + "|操作人:" + CommonGlobalCache.GetUserName(item.AllocateOrder.SourceUserID) + "|打印日期:" + System.DateTime.Now.ToLongDateString() + "|"; //结尾,说明同抬头 List <PrintColumnInfo> dataGV = CurrentPTemplate.PrintColumnInfos; bool isflag = false; string ColumnsList = string.Empty; foreach (PrintColumnInfo itemC in dataGV) { ColumnsList += itemC.Name + ","; } CommonGlobalUtil.WriteLog("模板设置打印列表头为=" + ColumnsList + "\r\n"); if (dataGV.Count == 0) { isflag = true; } // DataTable dt = dataGridView2.DataSource as DataTable; // DataTable newDt = new DataTable(); List <int> columnCount = new List <int>(); int pinrtColNum = 0; string dataGridColumnsList = string.Empty; for (int i = 0; i < dataGridView2.Columns.Count; i++) { DataGridViewColumn column = dataGridView2.Columns[i]; if (column.DataPropertyName == "FAtm" || column.DataPropertyName == "XSAtm" || column.DataPropertyName == "SAtm" || column.DataPropertyName == "MAtm" || column.DataPropertyName == "LAtm" || column.DataPropertyName == "XLAtm" || column.DataPropertyName == "XL2Atm" || column.DataPropertyName == "XL3Atm" || column.DataPropertyName == "XL4Atm" || column.DataPropertyName == "XL5Atm" || column.DataPropertyName == "XL6Atm") { column.Visible = false; continue; } //if (column.Visible==true) //{ if (dataGV.FindAll(t => t.Name == column.HeaderText).Count > 0) { columnCount.Add(i); dataGridColumnsList += column.HeaderText + ","; pinrtColNum++; } else { if (dataGV.FindAll(t => t.Name == column.DataPropertyName).Count > 0) { columnCount.Add(i); column.HeaderText = column.HeaderText.Replace("\r\n", " "); dataGridColumnsList += column.DataPropertyName + ","; pinrtColNum++; } else { if (column.DataPropertyName.Contains("XL")) { string name = column.DataPropertyName; //XL3 //3XL string newname = name.Replace("XL", ""); string checkstr = newname + "XL"; if (dataGV.FindAll(t => t.Name == checkstr).Count > 0) { columnCount.Add(i); column.HeaderText = column.HeaderText.Replace("\r\n", " "); dataGridColumnsList += column.DataPropertyName + ","; pinrtColNum++; } else { column.Visible = false; } } else { column.Visible = false; } } } if (isflag) { if (i == 0) { columnCount.Add(i); column.Visible = true; column.HeaderText = ""; DataTable dt = new DataTable(); DataColumn c1 = new DataColumn(); c1.ColumnName = "HeaderText"; dt.Columns.Add(c1); dataGridView2.DataSource = null; dataGridView2.DataSource = dt; } } //} } CommonGlobalUtil.WriteLog("DataGridView能打印的列为=" + dataGridColumnsList); misGoldPrinter.DataSource = DataGridViewUtil.ToStringArray(dataGridView2, true, true); if (!Directory.Exists(CommonGlobalUtil.SystemDir + "EXPORTS\\")) { Directory.CreateDirectory(CommonGlobalUtil.SystemDir + "EXPORTS\\"); } misGoldPrinter.FileName = CommonGlobalUtil.SystemDir + "EXPORTS\\" + item.ID + ".jpg"; ((GoldPrinter.Body)(misGoldPrinter.Body)).Font = dataGridView2.Font; /* int[] widths = new int[] { * 80,100,50,40, 50, * 30,30,30,30,30,30,30,30,30,30,30 * ,40,50,50 * };*/ int[] widths = new int[CurrentPTemplate.PrintColumnInfos.Count]; for (int j = 0; j < CurrentPTemplate.PrintColumnInfos.Count; j++) { widths[j] = Convert.ToInt32(CurrentPTemplate.PrintColumnInfos[j].Rate); } List <int> widthList = new List <int>(); for (int i = 0; i < CurrentPTemplate.PrintColumnInfos.Count; i++) { DataGridViewColumn column = dataGridView2.Columns[columnCount[i]]; if (column.Visible && !String.IsNullOrEmpty(column.HeaderText)) { widthList.Add(widths[i]); } } if (isflag) { widths = new int[1]; widths[0] = 100; widthList.Add(widths[0]); } widths = widthList.ToArray(); int newWidth = 800; /* int totalWidth = 0; * for (int i = 0; i < widths.Length; i++) * { * totalWidth += widths[i]; * }*/ for (int i = 0; i < widths.Length; i++) { widths[i] = decimal.ToInt32(Math.Round((widths[i] * newWidth * (decimal)0.1), 0, MidpointRounding.AwayFromZero)); // widths[i] = decimal.ToInt32(Math.Round((widths[i] * newWidth * (decimal)1.0 / totalWidth), 0, MidpointRounding.AwayFromZero)); } CommonGlobalUtil.WriteLog("实际打印数量=" + pinrtColNum + "\r\n" + "设置能打印的列数量=" + widths.Length.ToString()); ((GoldPrinter.Body)(misGoldPrinter.Body)).ColsWidth = widths; misGoldPrinter.Preview(); misGoldPrinter.Dispose(); misGoldPrinter = null; } } } }
//简单打印示例 public static void Print(ReplenishOrder item, DataGridView dataGridView2, int times = 1) { result = CommonGlobalCache.ServerProxy.GetPrintTemplateInfo(PrintTemplateType.ReplenishOrder); if (result.ExeResult == ExeResult.Success) { PrintTemplateInfo CurrentPTemplate = result.Data; for (int c = 0; c < CurrentPTemplate.PrintCount; c++) { GoldPrinter.MisGoldPrinter misGoldPrinter = new GoldPrinter.MisGoldPrinter(false, new PrinterMargins(20, 20, 20, 20, 800, 1129)); if (CurrentPTemplate.OrderName != "") { misGoldPrinter.Title = CurrentPTemplate.OrderName; //主标题(C#用\n表示换行) } misGoldPrinter.Caption = ""; double headRow = Math.Round(Convert.ToSingle(CurrentPTemplate.SystemVariables.Count / 2)); Header header = new Header(Convert.ToInt32(headRow) + 1, 2); header.IsDrawAllPage = true; CommonGlobalUtil.WriteLog("变量总数=" + CurrentPTemplate.SystemVariables.Count + "\r\n" + "应显示行号=" + headRow + 1); for (int i = 0; i < CurrentPTemplate.SystemVariables.Count; i++) { int curR = 0; if (i < 2) { curR = 0; } else { double resRow = i / 2; curR = Convert.ToInt32(Math.Round(resRow)); } string KeyStr = ""; if (CurrentPTemplate.SystemVariables[i] == "单号") { KeyStr = "补货申请单号:"; header.SetText(curR, i % 2, CurrentPTemplate.SystemVariables[i] + item.ID); } else if (CurrentPTemplate.SystemVariables[i] == "申请时间") { KeyStr = "申请时间:"; header.SetText(curR, i % 2, KeyStr + item.CreateTime.GetDateTimeFormats('f')[0].ToString()); } else if (CurrentPTemplate.SystemVariables[i] == "申请店铺") { KeyStr = "申请店铺:"; header.SetText(curR, i % 2, KeyStr + CommonGlobalCache.GetShopName(item.ShopID)); } else if (CurrentPTemplate.SystemVariables[i] == "申请人") { KeyStr = "申 请 人:"; header.SetText(curR, i % 2, KeyStr + CommonGlobalCache.GetUserName(item.RequestGuideID)); } else if (CurrentPTemplate.SystemVariables[i] == "总数量") { KeyStr = "总 数 量:"; header.SetText(curR, i % 2, KeyStr + item.TotalCount.ToString()); } else if (CurrentPTemplate.SystemVariables[i] == "总金额") { KeyStr = "总 金 额:"; header.SetText(curR, i % 2, KeyStr + item.TotalPrice.ToString()); } else if (CurrentPTemplate.SystemVariables[i] == "单据备注") { KeyStr = "备 注:"; header.SetText(curR, i % 2, KeyStr + item.Remarks.ToString()); } } misGoldPrinter.Header = header; //行列数基本不受限制,但超过一页失去意义,因为以Body为主,以其它为辅 //可以指定每页是否重复打印 /* header.SetText(0, 0, "补货申请单号:" + item.ID); * header.SetText(0, 1, "申请时间:" + item.CreateTime.GetDateTimeFormats('f')[0].ToString()); * header.SetText(1, 0, "申请店铺:" + CommonGlobalCache.GetShopName(item.ShopID)); * header.SetText(1, 1, "申 请 人:" + CommonGlobalCache.GetUserName(item.RequestGuideID)); * header.SetText(2, 0, "总 数 量:" + item.TotalCount.ToString()); * header.SetText(2, 1, "总 金 额:" + item.TotalPrice.ToString()); * header.SetText(3, 0, "备 注:"); * header.SetText(3, 1, item.Remarks); * misGoldPrinter.Header = header;*/ //List<String> lines = new List<string>(); //misGoldPrinter.Lines = lines; List <PrintColumnInfo> dataGV = CurrentPTemplate.PrintColumnInfos; string ColumnsList = string.Empty; foreach (PrintColumnInfo itemC in dataGV) { ColumnsList += itemC.Name + ","; } CommonGlobalUtil.WriteLog("模板设置打印列表头为=" + ColumnsList + "\r\n"); bool isflag = false; if (dataGV.Count == 0) { isflag = true; } // DataTable dt = dataGridView2.DataSource as DataTable; // DataTable newDt = new DataTable(); List <int> columnCount = new List <int>(); int pinrtColNum = 0; string dataGridColumnsList = string.Empty; for (int i = 0; i < dataGridView2.Columns.Count; i++) { DataGridViewColumn column = dataGridView2.Columns[i]; if (dataGV.FindAll(t => t.Name == column.HeaderText).Count > 0) { columnCount.Add(i); dataGridColumnsList += column.HeaderText + ","; pinrtColNum++; } else { if (dataGV.FindAll(t => t.Name == column.DataPropertyName).Count > 0) { columnCount.Add(i); dataGridColumnsList += column.DataPropertyName + ","; pinrtColNum++; } else { if (dataGV.FindAll(t => t.Name == column.DataPropertyName).Count > 0) { columnCount.Add(i); column.HeaderText = column.HeaderText.Replace("\r\n", " "); dataGridColumnsList += column.DataPropertyName + ","; pinrtColNum++; } else { if (column.DataPropertyName.Contains("XL")) { string name = column.DataPropertyName; //XL3 //3XL string newname = name.Replace("XL", ""); string checkstr = newname + "XL"; if (dataGV.FindAll(t => t.Name == checkstr).Count > 0) { columnCount.Add(i); column.HeaderText = column.HeaderText.Replace("\r\n", " "); dataGridColumnsList += column.DataPropertyName + ","; pinrtColNum++; } else { column.Visible = false; } } else { column.Visible = false; } } } } if (isflag) { if (i == 0) { columnCount.Add(i); column.Visible = true; column.HeaderText = ""; DataTable dt = new DataTable(); DataColumn c1 = new DataColumn(); c1.ColumnName = "HeaderText"; dt.Columns.Add(c1); dataGridView2.DataSource = null; dataGridView2.DataSource = dt; } } } CommonGlobalUtil.WriteLog("DataGridView能打印的列为=" + dataGridColumnsList); misGoldPrinter.DataSource = DataGridViewUtil.ToStringArray(dataGridView2, true, true); if (!Directory.Exists(CommonGlobalUtil.SystemDir + "EXPORTS\\")) { Directory.CreateDirectory(CommonGlobalUtil.SystemDir + "EXPORTS\\"); } misGoldPrinter.FileName = CommonGlobalUtil.SystemDir + "EXPORTS\\" + item.ID + ".jpg"; ((GoldPrinter.Body)(misGoldPrinter.Body)).Font = dataGridView2.Font; /* int[] widths = new int[] { * 80,100,50,40, 50, * 30,30,30,30,30,30,30,30,30,30,30 * ,40,50,50 * };*/ int[] widths = new int[CurrentPTemplate.PrintColumnInfos.Count]; for (int j = 0; j < CurrentPTemplate.PrintColumnInfos.Count; j++) { widths[j] = Convert.ToInt32(CurrentPTemplate.PrintColumnInfos[j].Rate); } List <int> widthList = new List <int>(); for (int i = 0; i < CurrentPTemplate.PrintColumnInfos.Count; i++) { DataGridViewColumn column = dataGridView2.Columns[columnCount[i]]; if (column.Visible && !String.IsNullOrEmpty(column.HeaderText)) { widthList.Add(widths[i]); } } if (isflag) { widths = new int[1]; widths[0] = 100; widthList.Add(widths[0]); } widths = widthList.ToArray(); int newWidth = 800; /* int totalWidth = 0; * for (int i = 0; i < widths.Length; i++) * { * totalWidth += widths[i]; * }*/ for (int i = 0; i < widths.Length; i++) { widths[i] = decimal.ToInt32(Math.Round((widths[i] * newWidth * (decimal)0.1), 0, MidpointRounding.AwayFromZero)); // widths[i] = decimal.ToInt32(Math.Round((widths[i] * newWidth * (decimal)1.0 / totalWidth), 0, MidpointRounding.AwayFromZero)); } CommonGlobalUtil.WriteLog("实际打印数量=" + pinrtColNum + "\r\n" + "设置能打印的列数量=" + widths.Length.ToString()); ((GoldPrinter.Body)(misGoldPrinter.Body)).ColsWidth = widths; misGoldPrinter.Preview(); misGoldPrinter.Dispose(); misGoldPrinter = null; } } } }