/// <summary>
        /// 化验单
        /// </summary>
        /// <param name="a"></param>
        private void PrintAssay(Assay a)
        {
            Log.Logs += $"正在打印化验单:{a.Name}\r";

            Word.Application thisApplication = new Word.ApplicationClass();
            wApp = thisApplication;
            string tmpDocFile   = AppDomain.CurrentDomain.BaseDirectory + folder + Properties.Settings.Default.PrintAssayDocx;
            object templatefile = tmpDocFile;

            wDoc = wApp.Documents.Add(ref templatefile, ref missing, ref missing, ref missing); //在现有进程内打开文档
            wDoc.Activate();                                                                    //当前文档置前

            //填充数据
            WordReplace(wApp, "#Name#", a.Name);
            if (a.Purchase != null)
            {
                WordReplace(wApp, "#CarnoOrStorename#", "车号:" + a.Purchase.CarNo);
            }
            if (a.Store != null)
            {
                WordReplace(wApp, "#CarnoOrStorename#", "油仓:" + a.Store.Name);
            }
            WordReplace(wApp, "#视密#", a.视密.ToString("0.000"));
            WordReplace(wApp, "#标密#", a.标密.ToString("0.000"));
            WordReplace(wApp, "#闭口闪点#", a.闭口闪点);
            WordReplace(wApp, "#Temperature#", a.Temperature.ToString("0.00"));
            WordReplace(wApp, "#OilTempTime#", a.OilTempTime.ToLongTimeString());
            WordReplace(wApp, "#SmellType#", strSmellType(a.SmellType));
            WordReplace(wApp, "#混水反应#", a.混水反应);
            WordReplace(wApp, "#十六烷值#", a.十六烷值);
            WordReplace(wApp, "#十六烷指数#", a.十六烷指数);
            WordReplace(wApp, "#初硫#", a.初硫.ToString("0.00"));
            WordReplace(wApp, "#Percentage10#", a.Percentage10.ToString("0.00"));
            WordReplace(wApp, "#Percentage50#", a.Percentage50.ToString("0.00"));
            WordReplace(wApp, "#Percentage90#", a.Percentage90.ToString("0.00"));
            WordReplace(wApp, "#回流#", a.回流.ToString("0.00"));
            WordReplace(wApp, "#干点#", a.干点.ToString("0.00"));
            WordReplace(wApp, "#蚀点#", a.蚀点.ToString("0.00"));
            WordReplace(wApp, "#凝点#", a.凝点.ToString("0.00"));
            WordReplace(wApp, "#含硫#", a.含硫.ToString("0.00"));
            WordReplace(wApp, "#CreatedBy#", a.CreatedBy);
            WordReplace(wApp, "#CreatedAt#", a.CreatedAt.ToString("yyyy-MM-dd HH:mm"));
            PrintTime(wApp);

            object background = false; //这个很重要,否则关闭的时候会提示请等待Word打印完毕后再退出,加上这个后可以使Word所有
            object filename   = AppDomain.CurrentDomain.BaseDirectory + createdfolder + a.Name + ".docx";

            wDoc.SaveAs(ref filename, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref
                        missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
            wDoc.PrintOut(ref background, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref
                          missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
                          ref missing);
            object saveOption = Word.WdSaveOptions.wdSaveChanges;

            wDoc.Close(ref saveOption, ref missing, ref missing); //关闭当前文档,如果有多个模版文件进行操作,则执行完这一步后接着执行打开Word文档的方法即可
                        saveOption = Word.WdSaveOptions.wdDoNotSaveChanges;

            wApp.Quit(ref saveOption, ref missing, ref missing); //关闭Word进程
        }
        /// <summary>
        /// 陆上装车单
        /// </summary>
        /// <param name="order">model</param>
        private void PrintLandLoad(Order order)
        {
            Log.Logs += $"正在打印LoadOil:{order.Name}\r";

            Word.Application thisApplication = new Word.ApplicationClass();
            wApp = thisApplication;
            string tmpDocFile   = AppDomain.CurrentDomain.BaseDirectory + folder + Properties.Settings.Default.PrintLandLoadDocx;
            object templatefile = tmpDocFile;

            wDoc = wApp.Documents.Add(ref templatefile, ref missing, ref missing, ref missing); //在现有进程内打开文档
            wDoc.Activate();                                                                    //当前文档置前

            decimal DiffWeightToLitre = order.DiffWeight / (decimal)order.Density * 1000;
            decimal OilCountTon       = order.OilCountLitre * (decimal)order.Density / 1000;
            decimal DiffPondLitre     = order.OilCountLitre - DiffWeightToLitre;

            //填充数据
            WordReplace(wApp, "#Name#", order.Name);
            WordReplace(wApp, "#ClientName#", order.Client.CarNo);
            WordReplace(wApp, "#CompanyName#", order.Client.Company?.Name);
            WordReplace(wApp, "#StoreName#", order.Store.Name);
            WordReplace(wApp, "#DiffWeight#", order.DiffWeight.ToString("0.0"));
            WordReplace(wApp, "#Count#", (order.Count * 1000).ToString("0.0"));
            WordReplace(wApp, "#DiffOrder#", (order.DiffWeight - order.Count * 1000).ToString("0.0"));
            WordReplace(wApp, "#Price#", order.IsPrintPrice? order.Price.ToString() : "0.00");
            WordReplace(wApp, "#TotalMoney#", order.TotalMoney.ToString());
            WordReplace(wApp, "#OilCount#", order.OilCountLitre.ToString());
            WordReplace(wApp, "#OilCountTon#", OilCountTon.ToString("0.0"));
            WordReplace(wApp, "#DiffWeight#", (order.OilCarWeight - order.EmptyCarWeight).ToString("0.0"));
            WordReplace(wApp, "#DiffWeightTon#", ((order.OilCarWeight - order.EmptyCarWeight) / 1000).ToString("0.0"));
            WordReplace(wApp, "#DiffWeightToLitre#", DiffWeightToLitre.ToString("0.00"));
            WordReplace(wApp, "#DiffPondLitre#", DiffPondLitre.ToString("0.0"));
            WordReplace(wApp, "#DiffPondTon#", (DiffPondLitre * (decimal)order.Density / 1000).ToString("0.0"));
            WordReplace(wApp, "#Instrument_bf#", (order.Instrument1 - order.OilCountLitre).ToString());
            WordReplace(wApp, "#Instrument_af#", order.Instrument1.ToString());
            WordReplace(wApp, "#Density#", order.Density.ToString("0.000"));
            WordReplace(wApp, "#OilTemperature#", order.OilTemperature.ToString());
            WordReplace(wApp, "#Worker#", order.Worker);
            WordReplace(wApp, "#LastUpdatedAt#", order.LastUpdatedAt.ToString());
            WordReplace(wApp, "#Salesman#", order.Salesman);
            PrintTime(wApp);

            object background = false; //这个很重要,否则关闭的时候会提示请等待Word打印完毕后再退出,加上这个后可以使Word所有
            object filename   = AppDomain.CurrentDomain.BaseDirectory + createdfolder + order.Name + ".docx";

            wDoc.SaveAs(ref filename, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref
                        missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
            wDoc.PrintOut(ref background, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref
                          missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
                          ref missing);
            object saveOption = Word.WdSaveOptions.wdSaveChanges;

            wDoc.Close(ref saveOption, ref missing, ref missing); //关闭当前文档,如果有多个模版文件进行操作,则执行完这一步后接着执行打开Word文档的方法即可
                        saveOption = Word.WdSaveOptions.wdDoNotSaveChanges;

            wApp.Quit(ref saveOption, ref missing, ref missing); //关闭Word进程
        }
        private void PrintUnload(Purchase p)
        {
            Log.Logs += $"正在打印陆上卸油单:{p.Name}\r";

            Word.Application thisApplication = new Word.ApplicationClass();
            wApp = thisApplication;
            string tmpDocFile   = AppDomain.CurrentDomain.BaseDirectory + folder + Properties.Settings.Default.PrintUnloadDocx;
            object templatefile = tmpDocFile;

            wDoc = wApp.Documents.Add(ref templatefile, ref missing, ref missing, ref missing); //在现有进程内打开文档
            wDoc.Activate();                                                                    //当前文档置前

            //填充数据

            WordReplace(wApp, "#Name#", p.Name);
            WordReplace(wApp, "#CarNo#", p.CarNo);
            WordReplace(wApp, "#ProductName#", p.Product?.Name);
            WordReplace(wApp, "#Count#", p.Count.ToString());
            WordReplace(wApp, "#OilCount#", p.OilCount.ToString("0.00"));
            WordReplace(wApp, "#Density#", p.Density.ToString("0.000"));
            WordReplace(wApp, "#ScaleWithCar#", p.ScaleWithCar.ToString());
            WordReplace(wApp, "#Scale#", p.Scale.ToString());

            string strToStore = "";

            foreach (var st in p.ToStoresList)
            {
                strToStore += "\r";
                strToStore += "卸入仓:" + st.Name + "\r";
                strToStore += "卸油前表数:" + st.InstrumentBf + "\r";
                strToStore += "卸油后表数:" + st.InstrumentAf + "\r";
                strToStore += "卸油数量:" + st.Count + "升\r";
            }
            WordReplace(wApp, "#ToStores#", strToStore);

            WordReplace(wApp, "#DiffLitre#", p.DiffLitre.ToString("0.00"));
            WordReplace(wApp, "#DiffTon#", p.DiffTon.ToString("0.00"));
            WordReplace(wApp, "#Worker#", p.Worker);
            WordReplace(wApp, "#StartTime#", p.StartTime.HasValue ? DateTime.Parse(p.StartTime.ToString()).ToString("yyyy-MM-dd HH:mm") : "");
            PrintTime(wApp);

            object background = false; //这个很重要,否则关闭的时候会提示请等待Word打印完毕后再退出,加上这个后可以使Word所有
            object filename   = AppDomain.CurrentDomain.BaseDirectory + createdfolder + p.Name + ".docx";

            wDoc.SaveAs(ref filename, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref
                        missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
            wDoc.PrintOut(ref background, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref
                          missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
                          ref missing);
            object saveOption = Word.WdSaveOptions.wdSaveChanges;

            wDoc.Close(ref saveOption, ref missing, ref missing); //关闭当前文档,如果有多个模版文件进行操作,则执行完这一步后接着执行打开Word文档的方法即可
                        saveOption = Word.WdSaveOptions.wdDoNotSaveChanges;

            wApp.Quit(ref saveOption, ref missing, ref missing); //关闭Word进程
        }
        /// <summary>
        /// 调拨单 也是收款单 水上陆上共用
        /// </summary>
        /// <param name="order"></param>
        private void PrintOrder(Order order)
        {
            Log.Logs += $"正在打印Order:{order.Name}\r";

            Word.Application thisApplication = new Word.ApplicationClass();
            wApp = thisApplication;
            string tmpDocFile   = AppDomain.CurrentDomain.BaseDirectory + folder + Properties.Settings.Default.PrintOrderDocx;
            object templatefile = tmpDocFile;

            wDoc = wApp.Documents.Add(ref templatefile, ref missing, ref missing, ref missing); //在现有进程内打开文档
            wDoc.Activate();                                                                    //当前文档置前

            //填充数据
            WordReplace(wApp, "#Name#", order.Name);
            WordReplace(wApp, "#CarNo#", order.CarNo);
            WordReplace(wApp, "#ProductName#", "石化油");
            WordReplace(wApp, "#Count#", order.Count.ToString());
            WordReplace(wApp, "#Unit#", order.Unit);
            WordReplace(wApp, "#Price#", order.IsPrintPrice ? order.Price.ToString("0.00") : "");
            WordReplace(wApp, "#TotalMoney#", order.IsPrintPrice? order.TotalMoney.ToString("0.00") : "");
            WordReplace(wApp, "#Payments#", strPayments(order.Payments.ToList()));
            WordReplace(wApp, "#CNMoney#", ConvertToChinese(order.TotalMoney));
            WordReplace(wApp, "#Remark#", order.Remark);
            WordReplace(wApp, "#LastUpdatedBy#", order.Cashier);
            WordReplace(wApp, "#Salesman#", order.Salesman);
            WordReplace(wApp, "#CreatedAt#", order.CreatedAt.ToString("yyyy-MM-dd HH:mm"));
            PrintTime(wApp);

            string strInvoice = "";

            if (order.IsInvoice)
            {
                strInvoice += "开票单位:" + order.BillingCompany + "\r";
                strInvoice += "开票单价:¥" + order.BillingPrice + "\r";
                strInvoice += "开票数量:" + order.BillingCount + order.Unit + "\r";
                //strInvoice += "类型:" + strTicketType(order.TicketType);
            }
            WordReplace(wApp, "#InvoiceContent#", strInvoice);

            object background = false; //这个很重要,否则关闭的时候会提示请等待Word打印完毕后再退出,加上这个后可以使Word所有
            object filename   = AppDomain.CurrentDomain.BaseDirectory + createdfolder + order.Name + ".docx";

            wDoc.SaveAs(ref filename, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref
                        missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
            wDoc.PrintOut(ref background, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref
                          missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
                          ref missing);
            object saveOption = Word.WdSaveOptions.wdSaveChanges;

            wDoc.Close(ref saveOption, ref missing, ref missing); //关闭当前文档,如果有多个模版文件进行操作,则执行完这一步后接着执行打开Word文档的方法即可
                        saveOption = Word.WdSaveOptions.wdDoNotSaveChanges;

            wApp.Quit(ref saveOption, ref missing, ref missing); //关闭Word进程
        }
示例#5
0
 /// <summary>
 /// Print the current document to the default printer.
 /// </summary>
 protected void PrintDocument()
 {
     _document.PrintOut(
         ref _refMissing,
         ref _refMissing,
         ref _refMissing,
         ref _refMissing,
         ref _refMissing,
         ref _refMissing,
         ref _refMissing,
         ref _refMissing,
         ref _refMissing,
         ref _refMissing,
         ref _refMissing,
         ref _refMissing,
         ref _refMissing,
         ref _refMissing,
         ref _refMissing,
         ref _refMissing,
         ref _refMissing,
         ref _refMissing);
 }
        /// <summary>
        /// 生产转仓单
        /// </summary>
        /// <param name="m"></param>

        private void PrintMoveStore(MoveStore m)
        {
            Log.Logs += $"正在打印生产转仓:{m.Name}\r";

            Word.Application thisApplication = new Word.ApplicationClass();
            wApp = thisApplication;
            string tmpDocFile   = AppDomain.CurrentDomain.BaseDirectory + folder + Properties.Settings.Default.PrintMoveStoreDocx;
            object templatefile = tmpDocFile;

            wDoc = wApp.Documents.Add(ref templatefile, ref missing, ref missing, ref missing); //在现有进程内打开文档
            wDoc.Activate();                                                                    //当前文档置前

            //填充数据
            WordReplace(wApp, "#Name#", m.Name);
            WordReplace(wApp, "#OutStoreName#", m.OutStoreName);
            WordReplace(wApp, "#OutPlan#", m.OutPlan.ToString("0.00"));
            WordReplace(wApp, "#OutDensity#", m.OutDensity.ToString("0.000"));
            WordReplace(wApp, "#OutTemperature#", m.OutTemperature.ToString());
            WordReplace(wApp, "#OutFact#", m.OutFact.ToString("0.00"));
            WordReplace(wApp, "#InStoreName#", m.InStoreName);
            WordReplace(wApp, "#InDensity#", m.InDensity.ToString("0.000"));
            WordReplace(wApp, "#InTemperature#", m.InTemperature.ToString());
            WordReplace(wApp, "#InFact#", m.InFact.ToString("0.00"));
            WordReplace(wApp, "#Manufacturer#", m.Worker);
            WordReplace(wApp, "#LastUpdatedAt#", m.LastUpdatedAt.ToString("yyyy-MM-dd HH:mm"));
            PrintTime(wApp);

            object background = false; //这个很重要,否则关闭的时候会提示请等待Word打印完毕后再退出,加上这个后可以使Word所有
            object filename   = AppDomain.CurrentDomain.BaseDirectory + createdfolder + m.Name + ".docx";

            wDoc.SaveAs(ref filename, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref
                        missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
            wDoc.PrintOut(ref background, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref
                          missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
                          ref missing);
            object saveOption = Word.WdSaveOptions.wdSaveChanges;

            wDoc.Close(ref saveOption, ref missing, ref missing); //关闭当前文档,如果有多个模版文件进行操作,则执行完这一步后接着执行打开Word文档的方法即可
                        saveOption = Word.WdSaveOptions.wdDoNotSaveChanges;

            wApp.Quit(ref saveOption, ref missing, ref missing); //关闭Word进程
        }
        /// <summary>
        /// 出库石化过磅单
        /// </summary>
        /// <param name="p"></param>
        private void PrintPonderation(Order o)
        {
            Log.Logs += $"正在打印出库石化过磅单:{o.Name}\r";

            Word.Application thisApplication = new Word.ApplicationClass();
            wApp = thisApplication;
            string tmpDocFile   = AppDomain.CurrentDomain.BaseDirectory + folder + Properties.Settings.Default.PrintPonderationDocx;
            object templatefile = tmpDocFile;

            wDoc = wApp.Documents.Add(ref templatefile, ref missing, ref missing, ref missing); //在现有进程内打开文档
            wDoc.Activate();                                                                    //当前文档置前

            //填充数据
            WordReplace(wApp, "#Name#", o.Name);
            WordReplace(wApp, "#CarNo#", o.CarNo);
            WordReplace(wApp, "#OilCarWeight#", o.OilCarWeight.ToString("0.00"));
            WordReplace(wApp, "#EmptyCarWeight#", o.EmptyCarWeight.ToString("0.00"));
            WordReplace(wApp, "#DiffWeight#", o.DiffWeight.ToString("0.00"));
            WordReplace(wApp, "#Worker#", o.Worker);
            WordReplace(wApp, "#LastUpdatedAt#", o.LastUpdatedAt.ToString());
            WordReplace(wApp, "#EndOilDateTime#", o.EndOilDateTime.ToString());
            WordReplace(wApp, "#StartOilDateTime#", o.StartOilDateTime.ToString());
            PrintTime(wApp);

            object background = false; //这个很重要,否则关闭的时候会提示请等待Word打印完毕后再退出,加上这个后可以使Word所有
            object filename   = AppDomain.CurrentDomain.BaseDirectory + createdfolder + o.Name + ".docx";

            wDoc.SaveAs(ref filename, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref
                        missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
            wDoc.PrintOut(ref background, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref
                          missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
                          ref missing);
            object saveOption = Word.WdSaveOptions.wdSaveChanges;

            wDoc.Close(ref saveOption, ref missing, ref missing); //关闭当前文档,如果有多个模版文件进行操作,则执行完这一步后接着执行打开Word文档的方法即可
                        saveOption = Word.WdSaveOptions.wdDoNotSaveChanges;

            wApp.Quit(ref saveOption, ref missing, ref missing); //关闭Word进程
        }
        private void PrintUnloadPond(Purchase p)
        {
            Log.Logs += $"正在打印卸车石化过磅单:{p.Name}\r";

            Word.Application thisApplication = new Word.ApplicationClass();
            wApp = thisApplication;
            string tmpDocFile   = AppDomain.CurrentDomain.BaseDirectory + folder + Properties.Settings.Default.PrintUnloadPondDocx;
            object templatefile = tmpDocFile;

            wDoc = wApp.Documents.Add(ref templatefile, ref missing, ref missing, ref missing); //在现有进程内打开文档
            wDoc.Activate();                                                                    //当前文档置前

            //填充数据

            WordReplace(wApp, "#Name#", p.Name);
            WordReplace(wApp, "#CarNo#", p.CarNo);
            WordReplace(wApp, "#ScaleWithCar#", p.ScaleWithCar.ToString());
            WordReplace(wApp, "#Scale#", p.Scale.ToString());
            WordReplace(wApp, "#DiffWeight#", p.DiffWeight.ToString());
            WordReplace(wApp, "#Worker#", p.Worker);
            WordReplace(wApp, "#StartTime#", p.StartTime.HasValue ? DateTime.Parse(p.StartTime.ToString()).ToString("yyyy-MM-dd HH:mm"): "");

            PrintTime(wApp);

            object background = false; //这个很重要,否则关闭的时候会提示请等待Word打印完毕后再退出,加上这个后可以使Word所有
            object filename   = AppDomain.CurrentDomain.BaseDirectory + createdfolder + p.Name + ".docx";

            wDoc.SaveAs(ref filename, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref
                        missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
            wDoc.PrintOut(ref background, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref
                          missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
                          ref missing);
            object saveOption = Word.WdSaveOptions.wdSaveChanges;

            wDoc.Close(ref saveOption, ref missing, ref missing); //关闭当前文档,如果有多个模版文件进行操作,则执行完这一步后接着执行打开Word文档的方法即可
                        saveOption = Word.WdSaveOptions.wdDoNotSaveChanges;

            wApp.Quit(ref saveOption, ref missing, ref missing); //关闭Word进程
        }
        /// <summary>
        /// 船舶清污完工证
        /// </summary>
        /// <param name="m"></param>
        private void PrintBoatClean(BoatClean m)
        {
            Log.Logs += $"正在打印BoatClean:{m.Name}\r";

            Word.Application thisApplication = new Word.ApplicationClass();
            wApp = thisApplication;
            string tmpDocFile   = AppDomain.CurrentDomain.BaseDirectory + folder + Properties.Settings.Default.PrintBoatCleanDocx;
            object templatefile = tmpDocFile;

            wDoc = wApp.Documents.Add(ref templatefile, ref missing, ref missing, ref missing); //在现有进程内打开文档
            wDoc.Activate();                                                                    //当前文档置前

            //填充数据
            WordReplace(wApp, "#Name#", m.Name);
            WordReplace(wApp, "#CarNo#", m.CarNo);
            WordReplace(wApp, "#Company#", m.Company);
            WordReplace(wApp, "#Voyage#", m.Voyage.ToString());
            WordReplace(wApp, "#Tonnage#", m.Tonnage.ToString());
            WordReplace(wApp, "#ResponseId#", m.ResponseId);
            WordReplace(wApp, "#Address#", m.Address);
            WordReplace(wApp, "#CreatedAt#", m.CreatedAt.ToString("yyyy-MM-dd HH:mm"));
            WordReplace(wApp, "#EndTime#", m.EndTime.ToString());
            PrintTime(wApp);

            object background = false; //这个很重要,否则关闭的时候会提示请等待Word打印完毕后再退出,加上这个后可以使Word所有
            object filename   = AppDomain.CurrentDomain.BaseDirectory + createdfolder + m.Name + ".docx";

            wDoc.SaveAs(ref filename, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref
                        missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
            wDoc.PrintOut(ref background, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref
                          missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
                          ref missing);
            object saveOption = Word.WdSaveOptions.wdSaveChanges;

            wDoc.Close(ref saveOption, ref missing, ref missing); //关闭当前文档,如果有多个模版文件进行操作,则执行完这一步后接着执行打开Word文档的方法即可
                        saveOption = Word.WdSaveOptions.wdDoNotSaveChanges;

            wApp.Quit(ref saveOption, ref missing, ref missing); //关闭Word进程
        }
示例#10
0
        void MakeWordFile(string shab_fname)
        {
            Word._Application oWord = new Word.Application();

            string        dir           = comboBox1.SelectedItem.ToString() + "_" + dateTimePicker1.Value.Year + "-" + dateTimePicker1.Value.Month + "-" + dateTimePicker1.Value.Day;
            DirectoryInfo directoryinfo = Directory.CreateDirectory(Environment.CurrentDirectory + "\\" + dir);

            Word._Document oDoc   = oWord.Documents.Add(Environment.CurrentDirectory + "\\" + shab_fname);
            string         WorkId = dataGridView1.CurrentRow.Cells["WorkId"].Value.ToString();
            string         fname  = Environment.CurrentDirectory + "\\" + dir + "\\" + WorkId + "_112ЭК.doc";

            try
            {
                SetTemplate(oDoc);
                oDoc.SaveAs(FileName: fname);
            }
            catch
            {
                MessageBox.Show("err");
                return;
            }

            if (checkBox1.Checked)
            {
                oDoc.PrintOut();
            }

            oDoc.Close();

            if (checkBox2.Checked)
            {
                System.Diagnostics.Process myProcess = new System.Diagnostics.Process();
                myProcess.StartInfo.FileName       = fname;
                myProcess.StartInfo.Verb           = "Open";
                myProcess.StartInfo.CreateNoWindow = false;
                myProcess.Start();
            }
        }
示例#11
0
        private void btnprint_Click(object sender, EventArgs e)
        {
            wordApp = new Microsoft.Office.Interop.Word.ApplicationClass();
            if (DialogResult.OK == MessageBox.Show("打印????"))
            {
                if (ChkGongDan.Checked)
                {
                    if (DgridGongDanMore.RowCount > 0)
                    {
                        docGongDan = wordApp.Documents.Add(NoThing, NoThing, NoThing, NoThing);
                        print(DgridGongDanMore, docGongDan, HeTongBianHao + "-工单");

                        docGongDan.PrintOut();
                    }
                }

                if (ChkLiaoDan.Checked)
                {
                    if (DgridLiaoDanMoer.RowCount > 0)
                    {
                        docLiaoDan = wordApp.Documents.Add(NoThing, NoThing, NoThing, NoThing);
                        print(DgridLiaoDanMoer, docLiaoDan, HeTongBianHao + "-料单");
                        docLiaoDan.PrintOut();
                    }
                }
                if (ChkCanShuDan.Checked)
                {
                    if (DgridCanShuDanMoer.RowCount > 0)
                    {
                        docCanShuDan = wordApp.Documents.Add(NoThing, NoThing, NoThing, NoThing);
                        print(DgridCanShuDanMoer, docCanShuDan, HeTongBianHao + "-参数单");
                        docCanShuDan.PrintOut();
                    }
                }
                wordApp.Quit();
            }
        }
        /// <summary>
        /// 公司预收款确认单
        /// </summary>
        /// <param name="order"></param>
        private void PrintCompanyPrepayment(ChargeLog cl)
        {
            Log.Logs += $"正在打印ClientPrepayment:{cl.Company.Name}\r";

            Word.Application thisApplication = new Word.ApplicationClass();
            wApp = thisApplication;
            string tmpDocFile   = AppDomain.CurrentDomain.BaseDirectory + folder + Properties.Settings.Default.PrintCompanyPrepaymentDocx;
            object templatefile = tmpDocFile;

            wDoc = wApp.Documents.Add(ref templatefile, ref missing, ref missing, ref missing); //在现有进程内打开文档
            wDoc.Activate();                                                                    //当前文档置前

            //填充数据
            WordReplace(wApp, "#CompanyName#", cl.Company.Name);
            WordReplace(wApp, "#Money#", cl.Money.ToString("0.00"));
            WordReplace(wApp, "#CNMoney#", ConvertToChinese(cl.Money));
            WordReplace(wApp, "#CreatedBy#", cl.CreatedBy);
            WordReplace(wApp, "#CreatedAt#", cl.CreatedAt.ToString("yyyy-MM-dd HH:mm"));
            WordReplace(wApp, "#PayType#", strPayType(cl.PayType));
            WordReplace(wApp, "#Balances#", cl.Company.Balances.ToString());
            PrintTime(wApp);

            object background = false; //这个很重要,否则关闭的时候会提示请等待Word打印完毕后再退出,加上这个后可以使Word所有
            object filename   = AppDomain.CurrentDomain.BaseDirectory + createdfolder + cl.Company.Name + ".docx";

            wDoc.SaveAs(ref filename, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref
                        missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
            wDoc.PrintOut(ref background, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref
                          missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
                          ref missing);
            object saveOption = Word.WdSaveOptions.wdSaveChanges;

            wDoc.Close(ref saveOption, ref missing, ref missing); //关闭当前文档,如果有多个模版文件进行操作,则执行完这一步后接着执行打开Word文档的方法即可
                        saveOption = Word.WdSaveOptions.wdDoNotSaveChanges;

            wApp.Quit(ref saveOption, ref missing, ref missing); //关闭Word进程
        }
示例#13
0
        public bool ConvertToWord(LeaveEntity leave, UserEntity user, UserEntity checkLeader, UserEntity approvalLeader, OrganizeEntity organ, RoleEntity role, string printName)
        {
            object missing = System.Reflection.Missing.Value;

            //创建一个Word应用程序实例
            Microsoft.Office.Interop.Word._Application oWord = new Microsoft.Office.Interop.Word.Application();

            oWord.ActivePrinter = printName;
            //设置为不可见
            oWord.Visible = false;

            //模板文件地址,这里假设在X盘根目录
            object oTemplate = "E:\\Temp\\template.doc";

            object filename = "E:\\Temp\\" + new Guid().ToString() + ".doc";

            //以模板为基础生成文档
            Microsoft.Office.Interop.Word._Document oDoc = oWord.Documents.Add(ref oTemplate, ref missing, ref missing, ref missing);

            oDoc.Activate(); //当前文档置前

            try
            {
                //声明书签数组
                object[] oBookMark = new object[12];
                //赋值书签名
                oBookMark[0]  = "F_CreateTime";
                oBookMark[1]  = "F_Account";
                oBookMark[2]  = "F_Department";
                oBookMark[3]  = "F_ApprovalLeader";
                oBookMark[4]  = "F_CheckLeader";
                oBookMark[5]  = "F_Group";
                oBookMark[6]  = "F_Position";
                oBookMark[7]  = "F_StartTime";
                oBookMark[8]  = "F_LeaveReason";
                oBookMark[9]  = "F_UserName";
                oBookMark[10] = "F_BeginEndTime";
                oBookMark[11] = "F_Name";
                //赋值任意数据到书签的位置
                oDoc.Bookmarks.get_Item(ref oBookMark[0]).Range.Text  = leave.F_CreateTime.ToString();
                oDoc.Bookmarks.get_Item(ref oBookMark[1]).Range.Text  = user.F_Account;
                oDoc.Bookmarks.get_Item(ref oBookMark[2]).Range.Text  = organ.F_FullName;
                oDoc.Bookmarks.get_Item(ref oBookMark[3]).Range.Text  = approvalLeader.F_RealName;
                oDoc.Bookmarks.get_Item(ref oBookMark[4]).Range.Text  = checkLeader.F_RealName;
                oDoc.Bookmarks.get_Item(ref oBookMark[5]).Range.Text  = "";
                oDoc.Bookmarks.get_Item(ref oBookMark[6]).Range.Text  = role.F_FullName;
                oDoc.Bookmarks.get_Item(ref oBookMark[7]).Range.Text  = user.F_CreatorTime.ToString();
                oDoc.Bookmarks.get_Item(ref oBookMark[8]).Range.Text  = leave.F_LeaveReason;
                oDoc.Bookmarks.get_Item(ref oBookMark[9]).Range.Text  = user.F_RealName;
                oDoc.Bookmarks.get_Item(ref oBookMark[10]).Range.Text = leave.F_BeginTime.ToString() + "至" + leave.F_EndTime.ToString();
                oDoc.Bookmarks.get_Item(ref oBookMark[11]).Range.Text = user.F_RealName;

                //oDoc.SaveAs(ref filename, ref missing, ref missing, ref missing,
                //ref missing, ref missing, ref missing, ref missing, ref missing,
                //ref missing, ref missing, ref missing, ref missing, ref missing,
                //ref missing, ref missing);

                //  return filename.ToString();
                //打印
                oDoc.PrintOut(ref missing, ref missing, ref missing, ref missing,

                              ref missing, ref missing, ref missing, ref missing,

                              ref missing, ref missing, ref missing, ref missing,

                              ref missing, ref missing, ref missing, ref missing,

                              ref missing, ref missing);

                return(true);
            }
            catch (Exception ex)
            {
                return(false);
            }
            finally
            {
                object saveChange = Microsoft.Office.Interop.Word.WdSaveOptions.wdDoNotSaveChanges;
                if (oDoc != null)
                {
                    oDoc.Close(ref saveChange, ref missing, ref missing);
                }
                if (oDoc != null)
                {
                    oWord.Quit(ref missing, ref missing, ref missing);
                }
            }
        }
示例#14
0
        public void MakeReport(DataGridView WorkerGrid, DataGridView WorkGrid, DataGridView InstructionGrid)
        {
            string[,] Worker      = SaveDataFromDGV(WorkerGrid); // инициализация двумерного массива для работы
            string[,] Instruction = SaveInstructionAndWorkFromDGV(InstructionGrid);

            application = new Word.Application();                                 // инициализация ворд документа
            object templatePathObj = Application.StartupPath + @"\Template.docx"; // путь до документа

            try
            {
                document = application.Documents.Add(ref templatePathObj, ref missingObj, ref missingObj, ref missingObj); // открытие документа
            }
            catch (Exception error)                                                                                        // в случае ошибки подчищаем память и показываем ошибку.
            {
                document.Close(ref falseObj, ref missingObj, ref missingObj);
                application.Quit(ref missingObj, ref missingObj, ref missingObj);
                document    = null;
                application = null;
                //throw error;
                MessageBox.Show(error.ToString(), "OK", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
            }
            string workStart = "08:00";
            string workEnd   = "17:00";
            //application.Visible = true;

            object bookmarkObj = "Naryad_Number"; // здесь и ниже заполняем текст в документе.

            Word.Range bookmarkRange = document.Bookmarks.get_Item(ref bookmarkObj).Range;
            bookmarkRange.Text = form.naryadNomer.Text;

            bookmarkObj        = "Naryad_Date";
            bookmarkRange      = document.Bookmarks.get_Item(ref bookmarkObj).Range;
            bookmarkRange.Text = form.Date.Text;



            bookmarkObj        = "Workman";
            bookmarkRange      = document.Bookmarks.get_Item(ref bookmarkObj).Range;
            bookmarkRange.Text = form.workman.Text;


            bookmarkObj        = "AmountWorkers";
            bookmarkRange      = document.Bookmarks.get_Item(ref bookmarkObj).Range;
            bookmarkRange.Text = WorkerGrid.SelectedRows.Count.ToString();

            bookmarkObj        = "WorkStart";
            bookmarkRange      = document.Bookmarks.get_Item(ref bookmarkObj).Range;
            bookmarkRange.Text = workStart;

            bookmarkObj        = "Date";
            bookmarkRange      = document.Bookmarks.get_Item(ref bookmarkObj).Range;
            bookmarkRange.Text = form.Date.Text;

            bookmarkObj        = "WorkEnd";
            bookmarkRange      = document.Bookmarks.get_Item(ref bookmarkObj).Range;
            bookmarkRange.Text = workEnd;

            bookmarkObj        = "Date2";
            bookmarkRange      = document.Bookmarks.get_Item(ref bookmarkObj).Range;
            bookmarkRange.Text = form.Date.Text;

            bookmarkObj        = "Head";
            bookmarkRange      = document.Bookmarks.get_Item(ref bookmarkObj).Range;
            bookmarkRange.Text = form.head.Text;

            bookmarkObj        = "Date3";
            bookmarkRange      = document.Bookmarks.get_Item(ref bookmarkObj).Range;
            bookmarkRange.Text = form.Date.Text;

            Print("WhatWork", WorkGrid);
            Print("Instruction", InstructionGrid);
            Print("InstructionID", InstructionGrid);



            bookmarkObj        = "AmountWorkers2";
            bookmarkRange      = document.Bookmarks.get_Item(ref bookmarkObj).Range;
            bookmarkRange.Text = WorkerGrid.SelectedRows.Count.ToString();

            Word.Table _table = document.Tables[1];
            Word.Range _currentRange;
            for (int i = 0; i < WorkerGrid.SelectedRows.Count; i++) // в этом циеле заполняется таблица
            {
                _currentRange      = _table.Cell(i + 2, 2).Range;
                _currentRange.Text = Worker[i, 0];

                _currentRange      = _table.Cell(i + 2, 3).Range;
                _currentRange.Text = Worker[i, 1];
            }
            //печать и закрытие документа
            document.PrintOut(ref missingObj, ref missingObj, ref missingObj, ref missingObj, ref missingObj, ref missingObj, ref missingObj, ref missingObj, ref missingObj, ref missingObj, ref missingObj, ref missingObj, ref missingObj, ref missingObj, ref missingObj, ref missingObj, ref missingObj, ref missingObj);
            document.Close(Word.WdSaveOptions.wdDoNotSaveChanges);

            application.Quit();
        }