/// <summary> /// 保存一份文件到Prepared中。 /// </summary> /// <param name="xlsFilePath"></param> private void saveTheExcel(string xlsFilePath) { //获取该记录表所对应的月份。 MyExcel srcExceFile = new MyExcel(xlsFilePath); srcExceFile.openWithoutAlerts(); Worksheet firstSheet_Src = srcExceFile.getFirstWorkSheetAfterOpen(); string year_and_month_src_str = new Usual_Excel_Helper(firstSheet_Src).getCellContentByRowAndColIndex(3, 3).Substring(0, 7); string fileNameWithoutSuffix = DirectoryHelper.getFileNameWithoutSuffix(xlsFilePath); string attendanceMachineFlag = fileNameWithoutSuffix.Substring(fileNameWithoutSuffix.Length - 1); year_and_month_src_str += string.Format(@"_{0}", attendanceMachineFlag); srcExceFile.close(); //year_and_month_src_str 即为文件名 //string fileName = DirectoryHelper.getFileName(xlsFilePath); //1.复制该excel 到 Prepared中。 Tools.CmdHelper.copyFileToDestDir(xlsFilePath, System.Windows.Forms.Application.StartupPath + "\\prepared\\" + year_and_month_src_str + ".xls"); string destFilePath = System.Windows.Forms.Application.StartupPath + "\\prepared\\" + year_and_month_src_str + ".xls"; //打开该文件 MyExcel myExcel = new MyExcel(destFilePath); myExcel.openWithoutAlerts(); //新增一个sheet. Worksheet firstSheet = myExcel.getFirstWorkSheetAfterOpen(); Usual_Excel_Helper uHelper = new Usual_Excel_Helper(firstSheet); //获取月份. string C3ContentStr = uHelper.getCellContentByRowAndColIndex(3, 3); string year_and_month_str = C3ContentStr.Substring(0, 7); Worksheet theLastestExcel = myExcel.AddSheetToLastIndex(year_and_month_str); myExcel.copyRangeFromOneToAnotherSheet(firstSheet, theLastestExcel); int sheetsCount = myExcel.getCountsOfAllSheet(); //删掉之前的表格,保留最后一个。 for (int i = 1; i <= sheetsCount - 1; i++) { myExcel.delTheSheet(1); } //一定要保存否则,无效。 myExcel.saveAndColumnsAutoFit(); //关闭该文件 myExcel.close(); }
/// <summary> /// 导出到Excel /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnExport_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(cbPN.Text.Trim())) { MessageBox.Show("您未选中成衣名称!", "提示:", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } //加载图片 cbPN_SelectedIndexChanged(sender, e); if (CmdHelper.ifExistsTheProcessByName("EXCEL") || CmdHelper.ifExistsTheProcessByName("et")) { Tools.FrmPrompt frmCloseExcel = new Tools.FrmPrompt("excel.exe|et.exe"); frmCloseExcel.ShowDialog(); } //导出到Excel中 string _defaultDir = System.Windows.Forms.Application.StartupPath + "\\成本汇总"; string _fileName = cbPN.Text.Trim() + "_成本汇总.xls"; xlsFilePath = FileNameDialog.getSaveFileNameWithDefaultDir("成衣汇总:", "*.xls|*.xls", _defaultDir, _fileName); if (!xlsFilePath.Contains(@"\")) { return; } //将图片存于粘贴板中。 Clipboard.SetImage(this.pictureBox.Image); System.Data.DataTable dt = (System.Data.DataTable)dgv.DataSource; string PN = dt.Rows[0]["成衣名称"].ToString(); ExcelHelper.saveDtToExcelWithProgressBar((System.Data.DataTable)dgv.DataSource, xlsFilePath, pb); MyExcel myExcel = new MyExcel(xlsFilePath); myExcel.open(); Worksheet wS = myExcel.getFirstWorkSheetAfterOpen(); //获取第二个Sheet. myExcel.App.Visible = false; Usual_Excel_Helper uEHelper = new Usual_Excel_Helper(wS); int maxRowCount = wS.UsedRange.Rows.Count; uEHelper.insertAboveTheSpecificRow(1); uEHelper.setSpecificCellValue("A1", PN); Range range = (wS.Range)[wS.Cells[2, 2], wS.Cells[maxRowCount, 2]]; uEHelper.delTheSpecificContentShiftToLeft(range); myExcel.App.DisplayAlerts = false; uEHelper.merge("A1", "G1"); uEHelper.MergeTheSpecificColumnWithoutBlankContent(2); //保存图片到I1. Range rangeI1 = uEHelper.getRange("I1", "I1"); /* * ActiveSheet.Range("A1").PasteSpecial( * Excel.Enums.XlPasteType.xlPasteAll, * Excel.Enums.XlPasteSpecialOperation.xlPasteSpecialOperationNone, * false, false); */ rangeI1.Select(); wS.PasteSpecial(); //sheet2中写入文件. IShowProductsCostSummary iShowProductsCostSummary = new ShowProductsCostSummaryImpl(); dt = iShowProductsCostSummary.get_P_C_Each_Port(cbPN.Text.Trim()); //序号, 成衣名称, 概要工序, 指定工序, 指定每部位工序, 工时, 件数, 单价, 最终单价. /* * seq_p_c_record, * product_name, * summary_process, * specific_process, * specific_each_process, * man_hours, * amount, * each_cost, * final_labour_cost */ //第二个表格. myExcel.AddSheetToLastIndex("每部件成本汇总"); Worksheet secondWS = myExcel.getSecondWorksheetAfterOpen(); //先写标题。 secondWS.Cells[1, 1] = "序号"; secondWS.Cells[1, 2] = "成衣名称"; secondWS.Cells[1, 3] = "部位"; secondWS.Cells[1, 4] = "工序"; secondWS.Cells[1, 5] = "单部件"; secondWS.Cells[1, 6] = "单部件_件数"; //secondWS.Cells[1, 6] = "工时"; secondWS.Cells[1, 7] = "单部件_工价"; //secondWS.Cells[1, 7] = "件数"; secondWS.Cells[1, 8] = "整部位_工时"; //secondWS.Cells[1, 8] = "单价"; secondWS.Cells[1, 9] = "整部位_工价"; secondWS.Cells[1, 10] = "最终_工价"; for (int i = 0; i <= dt.Rows.Count - 1; i++) { secondWS.Cells[2 + i, 1] = dt.Rows[i]["seq_p_c_record"].ToString(); secondWS.Cells[2 + i, 2] = dt.Rows[i]["product_name"].ToString(); secondWS.Cells[2 + i, 3] = dt.Rows[i]["summary_process"].ToString(); secondWS.Cells[2 + i, 4] = dt.Rows[i]["specific_process"].ToString(); secondWS.Cells[2 + i, 5] = dt.Rows[i]["specific_each_process"].ToString(); secondWS.Cells[2 + i, 6] = dt.Rows[i]["amount"].ToString(); secondWS.Cells[2 + i, 7] = dt.Rows[i]["each_cost"].ToString(); secondWS.Cells[2 + i, 8] = dt.Rows[i]["man_hours"].ToString(); secondWS.Cells[2 + i, 9] = dt.Rows[i]["labour_cost"].ToString(); secondWS.Cells[2 + i, 10] = dt.Rows[i]["final_labour_cost"].ToString(); } //获取最终单价的区域. Range _range_final_labour_cost; uEHelper = new Usual_Excel_Helper(secondWS); _range_final_labour_cost = uEHelper.getRange("J2", "J" + secondWS.UsedRange.Rows.Count); uEHelper.setFormulaR1C1ForRange(_range_final_labour_cost, "=IF(OR(ISBLANK(RC[-4]),ISBLANK(RC[-3])),RC[-1],RC[-4]*RC[-3])"); secondWS.UsedRange.EntireColumn.AutoFit(); myExcel.save(); myExcel.close(); //((FrmMainOfProductsCost)this.ParentForm).notifyIcon.ShowBalloonTip(7000, "提示:","汇总保存于: " + xlsFilePath, ToolTipIcon.Info); ShowResult.show(lblResult, "汇总保存于: " + xlsFilePath, true); timerRestoreLblResult.Start(); }