Пример #1
0
        protected override void WriteContent()
        {
            //建立寫入前置作業
            int writeRow = 4;
            PasteDataRowsOptions options = new PasteDataRowsOptions();

            options.IncludeSummary = false;
            options.Row            = writeRow;

            DataRow[] rows = _table.Select();

            //寫入內容
            writeRow = this.SheetAdapter.PasteDataRows(rows, options);

            //寫入總計
            string[] sumCols  = new string[] { "數量", "標準工時", "實際工時(內+外)", "實際工資(內+外)" };
            DataRow  totalRow = _table.NewRow();

            totalRow[0] = "總計";
            foreach (string sumCol in sumCols)
            {
                object o;
                o = _table.Compute("SUM([" + sumCol + "])", string.Empty);
                totalRow[sumCol] = Convert.IsDBNull(o) ? 0 : (decimal)o;
            }
            _table.Rows.Add(totalRow);

            writeRow = this.SheetAdapter.PasteDataRow(totalRow, writeRow, 1);


            base.WriteContent();
        }
Пример #2
0
        protected override void WriteContent()
        {
            DataTable linesTable = DataTableHelper.SelectDistinct(_table, "產線");

            //建立寫入前置作業
            int writeRow = 4;
            PasteDataRowsOptions options = new PasteDataRowsOptions();

            options.IncludeSummary = true;
            options.SummaryColumns.AddRange(new string[] { "退驗數量", "待驗數量", "數量", "標準工時", "單位人工成本", "總標準工時", "內部工時", "內部工資", "外包工資", "外包工時", "已生產數量", "尚需工時" });

            //對每個產線
            foreach (DataRow lineRow in linesTable.Rows)
            {
                DataRow[] rows = _table.Select("產線 = '" + lineRow["產線"] + "'", "工作單號,序號");

                //寫入內容
                options.Row           = writeRow;
                options.SummaryPrefix = lineRow["產線"] + "產線小計";

                writeRow = this.SheetAdapter.PasteDataRows(rows, options);
            }

            //寫入總計
            DataTable tmpTable = _table.Clone();
            DataRow   totalRow = tmpTable.NewRow();

            totalRow[0] = "總計";

            foreach (string sumCol in options.SummaryColumns)
            {
                if (!string.IsNullOrEmpty(tmpTable.Columns[sumCol].Expression))
                {
                    tmpTable.Columns[sumCol].Expression = string.Empty;
                }

                object o;
                o = _table.Compute("SUM(" + sumCol + ")", "產線<>'F'");
                totalRow[sumCol] = Convert.IsDBNull(o) ? 0 : (decimal)o;
            }

            tmpTable.Rows.Add(totalRow);

            writeRow = this.SheetAdapter.PasteDataRow(totalRow, writeRow, 1);

            base.WriteContent();
        }
Пример #3
0
        protected override void WriteContent()
        {
            //�إ߼g�J�e�m�@�~
            int writeRow = 4;
            PasteDataRowsOptions options = new PasteDataRowsOptions();
            options.IncludeSummary = false;
            options.Row = writeRow;

            DataRow[] rows = _table.Select();

            //�g�J���e
            writeRow = this.SheetAdapter.PasteDataRows(rows, options);

            //�g�J�`�p
            string[] sumCols = new string[] { "�ƶq", "�зǤu��", "��ڤu��(��+�~)", "��ڤu��(��+�~)" };
            DataRow totalRow = _table.NewRow();
            totalRow[0] = "�`�p";
            foreach (string sumCol in sumCols)
            {
                object o;
                o = _table.Compute("SUM([" + sumCol + "])", string.Empty);
                totalRow[sumCol] = Convert.IsDBNull(o) ? 0 : (decimal)o;
            }
            _table.Rows.Add(totalRow);

            writeRow = this.SheetAdapter.PasteDataRow(totalRow, writeRow, 1);

            base.WriteContent();
        }
Пример #4
0
        protected override void WriteContent()
        {
            //this.SheetAdapter.PasteDataTable(_table, 3, 1);

            int write = _columnHdrRow + 1;

            //List<string> sortElements = new List<string>();

            //if (!string.IsNullOrEmpty(_form.QCN))
            //    sortElements.Add("QCN");
            //if (!string.IsNullOrEmpty(_form.PartNumber))
            //    sortElements.Add("�~��");
            //if (!string.IsNullOrEmpty(_form.WorksheetFrom) || !string.IsNullOrEmpty(_form.WorksheetTo))
            //    sortElements.Add("�u�@�渹");

            //sortElements.Add("������");

            //DataRow[] rows = _table.Select(null, string.Join(",", sortElements.ToArray()));

            DataRow[] rows;
            int resultCol;

            if (_form.InspeceMode == InspeceMode.ByPn)
            {
                rows = _groupTable.Select(null, _form.SortString);

                foreach (DataRow row in rows)
                    write = this.SheetAdapters[0].PasteDataRow(row, write, 1);

            }
            else
            {
                rows = _table.Select(null, _form.SortString);
                resultCol = this.SheetAdapters[0].ReportProfile.IndexOf("���窬�A") + 1;
                foreach (DataRow row in rows)
                {
                    write = this.SheetAdapters[0].PasteDataRow(row, write, 1);

                    string result = row["���窬�A"].ToString();
                    int color = 65280;
                    int fontColor = -16777216;
                    if (result == "NG")
                    {
                        color = 255;
                        fontColor = 16316664;
                        //fontColor = -1;
                    }
                    else if (result == "Concession")
                    {
                        color = 65535;
                    }

                    Range range = this.SheetAdapters[0].GetRange(write - 1, resultCol);
                    range.Interior.Color = color;
                    range.Font.Color = fontColor;
                    range.Font.Bold = true;
                    range.HorizontalAlignment = XlHAlign.xlHAlignCenter;
                }
            }

            //�έp���
            if (_form.OutputStatistic)
            {

                DataView view = _table.DefaultView;
                view.Sort = "���u ASC";
                DataTable disLineTable = view.ToTable(true, "���u");

                foreach (DataRow lineRow in disLineTable.Rows)
                {
                    DataRow newRow = _statisticTable.NewRow();

                    string line = lineRow[0].ToString();
                    int count, num;

                    count = (int)_table.Compute("COUNT(���u)", "���u = '" + line + "' AND �̫��������=True AND ���窬�A <> 'NG'");
                    num = Convert.ToInt32(_table.Compute("SUM(�e�˦���)", "���u = '" + line + "'  AND �̫��������=True"));

                    newRow["���u"] = line;
                    newRow["�J�w�`���"] = count;
                    newRow["�e���`����"] = num;

                    _statisticTable.Rows.Add(newRow);
                }

                write = _columnHdrRow + 1;

                PasteDataRowsOptions option = new PasteDataRowsOptions();
                option.IncludeSummary = true;
                option.SummaryPrefix = "Total";
                option.SummaryColumns.AddRange(new string[] { "�J�w�`���", "�e���`����" });
                option.Row = write;

                this.SheetAdapters[1].PasteDataRows(_statisticTable.Select(), option);
            }

            base.WriteContent();
        }
Пример #5
0
        protected override void WriteContent()
        {
            //this.SheetAdapter.PasteDataTable(_table, 3, 1);

            int write = _columnHdrRow + 1;


            //List<string> sortElements = new List<string>();

            //if (!string.IsNullOrEmpty(_form.QCN))
            //    sortElements.Add("QCN");
            //if (!string.IsNullOrEmpty(_form.PartNumber))
            //    sortElements.Add("品號");
            //if (!string.IsNullOrEmpty(_form.WorksheetFrom) || !string.IsNullOrEmpty(_form.WorksheetTo))
            //    sortElements.Add("工作單號");

            //sortElements.Add("檢驗日期");

            //DataRow[] rows = _table.Select(null, string.Join(",", sortElements.ToArray()));

            DataRow[] rows;
            int       resultCol;

            if (_form.InspeceMode == InspeceMode.ByPn)
            {
                rows = _groupTable.Select(null, _form.SortString);

                foreach (DataRow row in rows)
                {
                    write = this.SheetAdapters[0].PasteDataRow(row, write, 1);
                }
            }
            else
            {
                rows      = _table.Select(null, _form.SortString);
                resultCol = this.SheetAdapters[0].ReportProfile.IndexOf("檢驗狀態") + 1;
                foreach (DataRow row in rows)
                {
                    write = this.SheetAdapters[0].PasteDataRow(row, write, 1);

                    string result    = row["檢驗狀態"].ToString();
                    int    color     = 65280;
                    int    fontColor = -16777216;
                    if (result == "NG")
                    {
                        color     = 255;
                        fontColor = 16316664;
                        //fontColor = -1;
                    }
                    else if (result == "Concession")
                    {
                        color = 65535;
                    }

                    Range range = this.SheetAdapters[0].GetRange(write - 1, resultCol);
                    range.Interior.Color      = color;
                    range.Font.Color          = fontColor;
                    range.Font.Bold           = true;
                    range.HorizontalAlignment = XlHAlign.xlHAlignCenter;
                }
            }

            //統計資料
            if (_form.OutputStatistic)
            {
                DataView view = _table.DefaultView;
                view.Sort = "產線 ASC";
                DataTable disLineTable = view.ToTable(true, "產線");

                foreach (DataRow lineRow in disLineTable.Rows)
                {
                    DataRow newRow = _statisticTable.NewRow();

                    string line = lineRow[0].ToString();
                    int    count, num;

                    count = (int)_table.Compute("COUNT(產線)", "產線 = '" + line + "' AND 最後檢驗紀錄=True AND 檢驗狀態 <> 'NG'");
                    num   = Convert.ToInt32(_table.Compute("SUM(送檢次數)", "產線 = '" + line + "'  AND 最後檢驗紀錄=True"));

                    newRow["產線"]    = line;
                    newRow["入庫總批數"] = count;
                    newRow["送檢總次數"] = num;

                    _statisticTable.Rows.Add(newRow);
                }

                write = _columnHdrRow + 1;

                PasteDataRowsOptions option = new PasteDataRowsOptions();
                option.IncludeSummary = true;
                option.SummaryPrefix  = "Total";
                option.SummaryColumns.AddRange(new string[] { "入庫總批數", "送檢總次數" });
                option.Row = write;

                this.SheetAdapters[1].PasteDataRows(_statisticTable.Select(), option);
            }

            base.WriteContent();
        }
Пример #6
0
        protected override void WriteContent()
        {
            DataTable linesTable = DataTableHelper.SelectDistinct(_table, "���u");

            //�إ߼g�J�e�m�@�~
            int writeRow = 4;
            PasteDataRowsOptions options = new PasteDataRowsOptions();
            options.IncludeSummary = true;
            /* 1.08.4
            options.SummaryColumns.AddRange(new string[] { "�Ͳ��u��", "�~�]�u��" });*/
            options.SummaryColumns.AddRange(new string[] { "�Ͳ��u��"});
            foreach (HourType hourType in Enum.GetValues(typeof(HourType)))
            {
                if(hourType != HourType.�@��u��)
                    options.SummaryColumns.Add(hourType.ToString());
            }
            options.ExcludeColumns.Add("�ɤJ");

            string[] npCols = new string[NpDic.Count];
            NpDic.Values.CopyTo(npCols, 0);
            options.SummaryColumns.AddRange(npCols);

            //��C�Ӳ��u
            foreach (DataRow lineRow in linesTable.Rows)
            {
                DataRow[] rows = _table.Select("���u = '" + lineRow["���u"] + "'", "���u�W��");

                //�g�J���e
                options.Row = writeRow;
                options.SummaryPrefix = lineRow["���u"] + "���u�p�p";

                foreach (DataRow row in rows)
                {
                    if (!row.IsNull("�ɤJ"))
                        row["���u"] = "��" + row["�ɤJ"] + "�ɤJ";
                }

                writeRow = this.SheetAdapter.PasteDataRows(rows, options);
            }

            //�g�J�`�p
            DataRow totalRow = _table.NewRow();
            totalRow[0] = "�`�p";
            foreach (string sumCol in options.SummaryColumns)
            {
                object o;
                o = _table.Compute("SUM([" + sumCol + "])", string.Empty);
                totalRow[sumCol] = Convert.IsDBNull(o) ? 0 : (decimal)o;
            }
            _table.Rows.Add(totalRow);

            writeRow = this.SheetAdapter.PasteDataRow(totalRow, writeRow, 1);

            //�]�w��ܮ榡
            foreach (string npCol in npCols)
                this.SheetAdapter.SetFormat(4, _table.Columns.IndexOf(npCol) + 1, "G/�q�ή榡;G/�q�ή榡;* \"-\"_-");

            this.SheetAdapter.SetFormat(4, _table.Columns.IndexOf("�Ͳ��u��") + 1, "G/�q�ή榡;G/�q�ή榡;* \"-\"_-");
            foreach (HourType hourType in Enum.GetValues(typeof(HourType)))
            {
                if(hourType != HourType.�@��u��)
                    this.SheetAdapter.SetFormat(4, _table.Columns.IndexOf(hourType.ToString()) + 1, "G/�q�ή榡;G/�q�ή榡;* \"-\"_-");
            }
            this.SheetAdapter.SetFormat(4, _table.Columns.IndexOf("�D�Ͳ�TTL") + 1, "G/�q�ή榡;G/�q�ή榡;* \"-\"_-");
            this.SheetAdapter.SetFormat(4, _table.Columns.IndexOf("�Ͳ�%") + 1, "0.00%");
            this.SheetAdapter.SetFormat(4, _table.Columns.IndexOf("�D�Ͳ�%") + 1, "0.00%");
            //this.SheetAdapter.SetFormat(4, _table.Columns.IndexOf("�~�]�u��") + 1, "#,##0.00;#,##0.00;* \"-\"_-");

            base.WriteContent();
        }
Пример #7
0
        void BeforePasteDataRowSummary(object sender, DataRow[] rows, PasteDataRowsOptions options, ref int writeRow, int col, object args)
        {
            decimal unusual = 0;
            decimal package = 0;
            if (rows.Length > 0)
            {
                DataTable table = rows[0].Table;
                string line = rows[0]["���u"].ToString();

                // ���o���`�Ͳ��u��
                object result = table.Compute("SUM(�����u��)", "���u = '" + line + "' AND �u������=" + (int)HourType.���`�Ͳ��u��);
                if (result != null && result != DBNull.Value)
                    unusual = (decimal)result;

                // ���o�]�ˤu��
                result = table.Compute("SUM(�����u��)", "���u = '" + line + "' AND �u������=" + (int)HourType.�]��);
                if (result != null && result != DBNull.Value)
                    package = (decimal)result;

                DataRow tmpRow = table.NewRow();
                tmpRow["���"] = null;
                tmpRow[0] = "���`�Ͳ��u��";
                tmpRow["����`�u��"] = unusual;
                writeRow = ((WorksheetAdapter)sender).PasteDataRow(tmpRow, writeRow, col);

                tmpRow[0] = "�]��";
                tmpRow["����`�u��"] = package;
                writeRow = ((WorksheetAdapter)sender).PasteDataRow(tmpRow, writeRow, col);
            }
        }
Пример #8
0
        protected override void WriteContent()
        {
            System.Data.DataTable linesTable = DataTableHelper.SelectDistinct(_table, "���u");

            //�إ߼g�J�e�m�@�~
            int writeRow = 4;
            PasteDataRowsOptions options = new PasteDataRowsOptions();
            options.IncludeSummary = false;	//��ʱ���Summary Row
            options.SummaryColumns.AddRange(new string[] { /*"�h��ƶq", */"�ƶq"/*, "�зǤu��", "���H�u����"*/, "�����u��", "�����u��", "�~�]�u��", "�~�]�u��", "�з��`�u��", "�з��`�u��", "����`�u��" /*"���зǤu��", "��ڤu��", "��ڤu��"*/ });
            options.NoSummaryColumns.AddRange(new string[] { "�зǤu��", "���H�u����", "���зǤu��", "��ڤu��", "��ڤu��" });

            PasteDataRowEventHandler beforeSummary = new PasteDataRowEventHandler(BeforePasteDataRowSummary);
            //this.SheetAdapter.BeforePasteDataRowSummary += beforeSummary;

            DataTableHelper dtHelper = new DataTableHelper();
            DataTable nonNormalHourTable = dtHelper.SelectGroupByInto("ReportTable", _srcTable,
                    "���u, Sum(�����u��) �����u��, �u������",
                    null, "���u,��ڧ�����,�u�@�渹,�~��,�~�W,�ƶq,�зǤu��,���H�u����,���зǤu��,�u�~�s��,�u������");

            //��C�Ӳ��u
            foreach (DataRow lineRow in linesTable.Rows)
            {
                //NOTICE: ��Select����ק�ɤ]�����ק�BeforePasteDataRowSummary���e
                DataRow[] rows = _table.Select("���u = '" + lineRow["���u"] + "'", "�u�@�渹,�Ǹ�");

                foreach (DataRow row in rows)
                {
                    string worksheet = (string)row["�u�@�渹"];
                    int serialNumber = (int)row["�Ǹ�"];
                    //��h���`+�]��
                    object abnormalResult = _srcTable.Compute("SUM(�����u��)", "�u�@�渹='" + worksheet + "' AND �u�~�s�� = " + serialNumber + " AND ���u = '" + lineRow["���u"] + "' AND (�u������=" + (int)HourType.���`�Ͳ��u�� + " OR �u������=" + (int)HourType.�]�� + ")");
                    if (abnormalResult != DBNull.Value)
                        row["����`�u��"] = (decimal)row["����`�u��"] - (decimal)abnormalResult;
                }
                //�g�J���e
                options.IncludeSummary = false;
                options.Row = writeRow;
                options.SummaryPrefix = lineRow["���u"] + "���u�p�p";
                writeRow = this.SheetAdapter.PasteDataRows(rows, options);

                //�g�J���`�Ͳ��u��,�]�ˤu��
                decimal unusual = 0;
                decimal package = 0;

                // ���o���`�Ͳ��u��
                object result = nonNormalHourTable.Compute("SUM(�����u��)", "���u = '" + lineRow["���u"] + "' AND �u������=" + (int)HourType.���`�Ͳ��u��);
                if (result != null && result != DBNull.Value)
                    unusual = (decimal)result;

                // ���o�]�ˤu��
                result = nonNormalHourTable.Compute("SUM(�����u��)", "���u = '" + lineRow["���u"] + "' AND �u������=" + (int)HourType.�]��);
                if (result != null && result != DBNull.Value)
                    package = (decimal)result;

                DataRow tmpRow = _table.NewRow();
                tmpRow["���"] = null;
                tmpRow[0] = "���`�Ͳ��u��";
                tmpRow["����`�u��"] = unusual;
                writeRow = this.SheetAdapter.PasteDataRow(tmpRow, writeRow, options.Column);

                tmpRow[0] = "�]��";
                tmpRow["����`�u��"] = package;
                writeRow = this.SheetAdapter.PasteDataRow(tmpRow, writeRow, options.Column);

                //�g�J�p�p
                options.Row = writeRow;
                _subttlRows.Add(writeRow);
                writeRow = this.SheetAdapter.PasteSummaryRow(rows, options);
            }
            //this.SheetAdapter.BeforePasteDataRowSummary -= beforeSummary;

            decimal ttlUnusual = 0;
            decimal ttlPackage = 0;

            // ���o���`�Ͳ��u��
            object tmpResult = nonNormalHourTable.Compute("SUM(�����u��)", "�u������=" + (int)HourType.���`�Ͳ��u��);
            if (tmpResult != null && tmpResult != DBNull.Value)
                ttlUnusual = (decimal)tmpResult;

            // ���o�]�ˤu��
            tmpResult = nonNormalHourTable.Compute("SUM(�����u��)", "�u������=" + (int)HourType.�]��);
            if (tmpResult != null && tmpResult != DBNull.Value)
                ttlPackage = (decimal)tmpResult;

            //�g�J�`�p(���]�A���`,�]��)
            DataTable tmpTable = _table.Clone();
            tmpTable.Columns["����`�u��"].Expression = string.Empty;	//����`�u�ɦۤv�p��

            DataRow totalRow = tmpTable.NewRow();

            foreach (string sumCol in options.SummaryColumns)
            {
                if (!string.IsNullOrEmpty(tmpTable.Columns[sumCol].Expression))
                    tmpTable.Columns[sumCol].Expression = string.Empty;

                object o;
                o = _table.Compute("SUM(" + sumCol + ")", string.Empty);
                totalRow[sumCol] = Convert.IsDBNull(o) ? 0 : (decimal)o;
            }
            foreach (string noSumCol in options.NoSummaryColumns)
            {
                tmpTable.Columns[noSumCol].Expression = string.Empty;
                totalRow[noSumCol] = DBNull.Value;
            }

            ////����`�u�� - (���`�Ͳ��u��+�]��) �e����L�F
            //object ttlHourObj = _table.Compute("SUM(����`�u��)", string.Empty);
            //decimal ttlHour = Convert.IsDBNull(ttlHourObj) ? 0 : (decimal)ttlHourObj;
            ////totalRow["����`�u��"] = ttlHour - (ttlUnusual + ttlPackage);

            totalRow[0] = "�`�p";
            _ttlRow = writeRow;
            tmpTable.Rows.Add(totalRow);
            writeRow = this.SheetAdapter.PasteDataRow(totalRow, writeRow, 1);

            //tmpTable = _table.Clone();
            ////�g�J���`,�]���`�p
            //tmpTable.Columns[tmpTable.Columns["�~�]�u��"].Ordinal].DataType = typeof(object);

            //DataRow abnormalTotalRow = tmpTable.NewRow();
            //abnormalTotalRow["���"] = null;
            //abnormalTotalRow[tmpTable.Columns["�~�]�u��"].Ordinal] = "���`�Ͳ��u��";
            //abnormalTotalRow["����`�u��"] = ttlUnusual;
            //writeRow = this.SheetAdapter.PasteDataRow(abnormalTotalRow, writeRow, options.Column);

            //abnormalTotalRow[tmpTable.Columns["�~�]�u��"].Ordinal] = "�]��";
            //abnormalTotalRow["����`�u��"] = ttlPackage;
            //writeRow = this.SheetAdapter.PasteDataRow(abnormalTotalRow, writeRow, options.Column);

            ////�g�J�`�p(+���`,�]��)
            //totalRow = tmpTable.NewRow();
            //options.SummaryColumns = new List<string>(new string[] { "����`�u��", "��`�u��" });
            //options.NoSummaryColumns = new List<string>(new string[] { "�ƶq", "�����u��", "�����u��", "�~�]�u��", "�~�]�u��", "�зǤu��", "���H�u����", "���зǤu��", "��ڤu��", "��ڤu��", "�з��`�u��" });

            //foreach (string sumCol in options.SummaryColumns)
            //{
            //    if (!string.IsNullOrEmpty(tmpTable.Columns[sumCol].Expression))
            //        tmpTable.Columns[sumCol].Expression = string.Empty;

            //    object o;
            //    o = _table.Compute("SUM(" + sumCol + ")", string.Empty);
            //    totalRow[sumCol] = Convert.IsDBNull(o) ? 0 : (decimal)o;
            //}
            //foreach (string noSumCol in options.NoSummaryColumns)
            //{
            //    tmpTable.Columns[noSumCol].Expression = string.Empty;
            //    totalRow[noSumCol] = DBNull.Value;
            //}

            //totalRow[tmpTable.Columns["�~�]�u��"].Ordinal] = "Total";
            //totalRow["���"] = null;
            //tmpTable.Rows.Add(totalRow);

            //_ttlRow = writeRow;
            //writeRow = this.SheetAdapter.PasteDataRow(totalRow, writeRow, 1);

            base.WriteContent();
        }
Пример #9
0
        protected override void WriteContent()
        {
            DataTable linesTable = DataTableHelper.SelectDistinct(_table, "產線");

            //建立寫入前置作業
            int writeRow = 4;
            PasteDataRowsOptions options = new PasteDataRowsOptions();

            options.IncludeSummary = true;

            /* 1.08.4
             * options.SummaryColumns.AddRange(new string[] { "生產工時", "外包工時" }); */
            options.SummaryColumns.AddRange(new string[] { "生產工時" });
            options.ExcludeColumns.Add("借入");

            //string[] npCols = new string[NpDic.Count];
            //NpDic.Values.CopyTo(npCols, 0);
            List <string> npColList = new List <string>(NpDic.Values);

            //npColList.Remove("np請假");
            options.SummaryColumns.AddRange(npColList);

            //對每個產線
            foreach (DataRow lineRow in linesTable.Rows)
            {
                DataRow[] rows = _table.Select("產線 = '" + lineRow["產線"] + "'", "員工名稱");

                //寫入內容
                options.Row           = writeRow;
                options.SummaryPrefix = lineRow["產線"] + "產線小計";

                foreach (DataRow row in rows)
                {
                    if (!row.IsNull("借入"))
                    {
                        row["產線"] = "由" + row["借入"] + "借入";
                    }
                }

                writeRow = this.SheetAdapter.PasteDataRows(rows, options);
            }

            //寫入總計
            DataRow totalRow = _table.NewRow();

            totalRow[0] = "總計";
            foreach (string sumCol in options.SummaryColumns)
            {
                object o;
                o = _table.Compute("SUM([" + sumCol + "])", string.Empty);
                totalRow[sumCol] = Convert.IsDBNull(o) ? 0 : (decimal)o;
            }
            _table.Rows.Add(totalRow);

            writeRow = this.SheetAdapter.PasteDataRow(totalRow, writeRow, 1);

            //設定顯示格式
            foreach (string npCol in NpDic.Values)
            {
                this.SheetAdapter.SetFormat(4, _table.Columns.IndexOf(npCol) + 1, "G/通用格式;G/通用格式;* \"-\"_-");
            }

            this.SheetAdapter.SetFormat(4, _table.Columns.IndexOf("生產工時") + 1, "G/通用格式;G/通用格式;* \"-\"_-");
            this.SheetAdapter.SetFormat(4, _table.Columns.IndexOf("非生產TTL") + 1, "G/通用格式;G/通用格式;* \"-\"_-");
            this.SheetAdapter.SetFormat(4, _table.Columns.IndexOf("生產%") + 1, "0.00%");
            this.SheetAdapter.SetFormat(4, _table.Columns.IndexOf("非生產%") + 1, "0.00%");
            //this.SheetAdapter.SetFormat(4, _table.Columns.IndexOf("外包工時") + 1, "#,##0.00;#,##0.00;* \"-\"_-");

            base.WriteContent();
        }
Пример #10
0
        protected override void WriteContent()
        {
            DataTable linesTable = DataTableHelper.SelectDistinct(_table, "產線");

            //建立寫入前置作業
            int writeRow = 4;
            PasteDataRowsOptions options = new PasteDataRowsOptions();
            options.IncludeSummary = true;
            options.SummaryColumns.AddRange(new string[] {"退驗數量","待驗數量", "數量", "標準工時", "單位人工成本", "總標準工時", "內部工時", "內部工資", "外包工資", "外包工時", "已生產數量", "尚需工時" });

            //對每個產線
            foreach (DataRow lineRow in linesTable.Rows)
            {
                DataRow[] rows = _table.Select("產線 = '" + lineRow["產線"] + "'", "工作單號,序號");

                //寫入內容
                options.Row = writeRow;
                options.SummaryPrefix = lineRow["產線"] + "產線小計";

                writeRow = this.SheetAdapter.PasteDataRows(rows, options);
            }

            //寫入總計
            DataTable tmpTable = _table.Clone();
            DataRow totalRow = tmpTable.NewRow();
            totalRow[0] = "總計";

            foreach (string sumCol in options.SummaryColumns)
            {
                if (!string.IsNullOrEmpty(tmpTable.Columns[sumCol].Expression))
                    tmpTable.Columns[sumCol].Expression = string.Empty;

                object o;
                o = _table.Compute("SUM(" + sumCol + ")", "產線<>'F'");
                totalRow[sumCol] = Convert.IsDBNull(o) ? 0 : (decimal)o;
            }

            tmpTable.Rows.Add(totalRow);

            writeRow = this.SheetAdapter.PasteDataRow(totalRow, writeRow, 1);

            base.WriteContent();
        }
Пример #11
0
        protected override void WriteContent()
        {
            System.Data.DataTable linesTable = DataTableHelper.SelectDistinct(_table, "產線");

            //建立寫入前置作業
            int writeRow = 4;
            PasteDataRowsOptions options = new PasteDataRowsOptions();

            options.IncludeSummary = false;     //手動控制Summary Row
            options.SummaryColumns.AddRange(new string[] { /*"退驗數量", */ "數量" /*, "標準工時", "單位人工成本"*/, "內部工時", "內部工資", "外包工資", "外包工時", "標準總工資", "標準總工時", "實際總工時" /*"單位標準工資", "實際工時", "實際工資"*/ });
            options.NoSummaryColumns.AddRange(new string[] { "標準工時", "單位人工成本", "單位標準工資", "實際工時", "實際工資" });

            PasteDataRowEventHandler beforeSummary = new PasteDataRowEventHandler(BeforePasteDataRowSummary);
            //this.SheetAdapter.BeforePasteDataRowSummary += beforeSummary;

            DataTableHelper dtHelper           = new DataTableHelper();
            DataTable       nonNormalHourTable = dtHelper.SelectGroupByInto("ReportTable", _srcTable,
                                                                            "產線, Sum(內部工時) 內部工時, 工時類型",
                                                                            null, "產線,實際完成日,工作單號,品號,品名,數量,標準工時,單位人工成本,單位標準工資,工品編號,工時類型");

            //對每個產線
            foreach (DataRow lineRow in linesTable.Rows)
            {
                //NOTICE: 當Select條件修改時也必須修改BeforePasteDataRowSummary內容
                DataRow[] rows = _table.Select("產線 = '" + lineRow["產線"] + "'", "工作單號,序號");

                foreach (DataRow row in rows)
                {
                    string worksheet    = (string)row["工作單號"];
                    int    serialNumber = (int)row["序號"];
                    //減去異常+包裝
                    object abnormalResult = _srcTable.Compute("SUM(內部工時)", "工作單號='" + worksheet + "' AND 工品編號 = " + serialNumber + " AND 產線 = '" + lineRow["產線"] + "' AND (工時類型=" + (int)HourType.異常生產工時 + " OR 工時類型=" + (int)HourType.包裝 + ")");
                    if (abnormalResult != DBNull.Value)
                    {
                        row["實際總工時"] = (decimal)row["實際總工時"] - (decimal)abnormalResult;
                    }
                }
                //寫入內容
                options.IncludeSummary = false;
                options.Row            = writeRow;
                options.SummaryPrefix  = lineRow["產線"] + "產線小計";
                writeRow = this.SheetAdapter.PasteDataRows(rows, options);

                //寫入異常生產工時,包裝工時
                decimal unusual = 0;
                decimal package = 0;

                // 取得異常生產工時
                object result = nonNormalHourTable.Compute("SUM(內部工時)", "產線 = '" + lineRow["產線"] + "' AND 工時類型=" + (int)HourType.異常生產工時);
                if (result != null && result != DBNull.Value)
                {
                    unusual = (decimal)result;
                }

                // 取得包裝工時
                result = nonNormalHourTable.Compute("SUM(內部工時)", "產線 = '" + lineRow["產線"] + "' AND 工時類型=" + (int)HourType.包裝);
                if (result != null && result != DBNull.Value)
                {
                    package = (decimal)result;
                }

                DataRow tmpRow = _table.NewRow();
                tmpRow["單位"]    = null;
                tmpRow[0]       = "異常生產工時";
                tmpRow["實際總工時"] = unusual;
                writeRow        = this.SheetAdapter.PasteDataRow(tmpRow, writeRow, options.Column);

                tmpRow[0]       = "包裝";
                tmpRow["實際總工時"] = package;
                writeRow        = this.SheetAdapter.PasteDataRow(tmpRow, writeRow, options.Column);

                //寫入小計
                options.Row = writeRow;
                _subttlRows.Add(writeRow);
                writeRow = this.SheetAdapter.PasteSummaryRow(rows, options);
            }
            //this.SheetAdapter.BeforePasteDataRowSummary -= beforeSummary;

            decimal ttlUnusual = 0;
            decimal ttlPackage = 0;

            // 取得異常生產工時
            object tmpResult = nonNormalHourTable.Compute("SUM(內部工時)", "工時類型=" + (int)HourType.異常生產工時);

            if (tmpResult != null && tmpResult != DBNull.Value)
            {
                ttlUnusual = (decimal)tmpResult;
            }

            // 取得包裝工時
            tmpResult = nonNormalHourTable.Compute("SUM(內部工時)", "工時類型=" + (int)HourType.包裝);
            if (tmpResult != null && tmpResult != DBNull.Value)
            {
                ttlPackage = (decimal)tmpResult;
            }

            //寫入總計(不包括異常,包裝)
            DataTable tmpTable = _table.Clone();

            tmpTable.Columns["實際總工時"].Expression = string.Empty;                //實際總工時自己計算

            DataRow totalRow = tmpTable.NewRow();

            foreach (string sumCol in options.SummaryColumns)
            {
                if (!string.IsNullOrEmpty(tmpTable.Columns[sumCol].Expression))
                {
                    tmpTable.Columns[sumCol].Expression = string.Empty;
                }

                object o;
                o = _table.Compute("SUM(" + sumCol + ")", string.Empty);
                totalRow[sumCol] = Convert.IsDBNull(o) ? 0 : (decimal)o;
            }
            foreach (string noSumCol in options.NoSummaryColumns)
            {
                tmpTable.Columns[noSumCol].Expression = string.Empty;
                totalRow[noSumCol] = DBNull.Value;
            }

            ////實際總工時 - (異常生產工時+包裝) 前面減過了
            //object ttlHourObj = _table.Compute("SUM(實際總工時)", string.Empty);
            //decimal ttlHour = Convert.IsDBNull(ttlHourObj) ? 0 : (decimal)ttlHourObj;
            ////totalRow["實際總工時"] = ttlHour - (ttlUnusual + ttlPackage);

            totalRow[0] = "總計";
            _ttlRow     = writeRow;
            tmpTable.Rows.Add(totalRow);
            writeRow = this.SheetAdapter.PasteDataRow(totalRow, writeRow, 1);



            //tmpTable = _table.Clone();
            ////寫入異常,包裝總計
            //tmpTable.Columns[tmpTable.Columns["外包工資"].Ordinal].DataType = typeof(object);

            //DataRow abnormalTotalRow = tmpTable.NewRow();
            //abnormalTotalRow["單位"] = null;
            //abnormalTotalRow[tmpTable.Columns["外包工資"].Ordinal] = "異常生產工時";
            //abnormalTotalRow["實際總工時"] = ttlUnusual;
            //writeRow = this.SheetAdapter.PasteDataRow(abnormalTotalRow, writeRow, options.Column);

            //abnormalTotalRow[tmpTable.Columns["外包工資"].Ordinal] = "包裝";
            //abnormalTotalRow["實際總工時"] = ttlPackage;
            //writeRow = this.SheetAdapter.PasteDataRow(abnormalTotalRow, writeRow, options.Column);

            ////寫入總計(+異常,包裝)
            //totalRow = tmpTable.NewRow();
            //options.SummaryColumns = new List<string>(new string[] { "實際總工時", "標準總工時" });
            //options.NoSummaryColumns = new List<string>(new string[] { "數量", "內部工時", "內部工資", "外包工資", "外包工時", "標準工時", "單位人工成本", "單位標準工資", "實際工時", "實際工資", "標準總工資" });

            //foreach (string sumCol in options.SummaryColumns)
            //{
            //    if (!string.IsNullOrEmpty(tmpTable.Columns[sumCol].Expression))
            //        tmpTable.Columns[sumCol].Expression = string.Empty;

            //    object o;
            //    o = _table.Compute("SUM(" + sumCol + ")", string.Empty);
            //    totalRow[sumCol] = Convert.IsDBNull(o) ? 0 : (decimal)o;
            //}
            //foreach (string noSumCol in options.NoSummaryColumns)
            //{
            //    tmpTable.Columns[noSumCol].Expression = string.Empty;
            //    totalRow[noSumCol] = DBNull.Value;
            //}

            //totalRow[tmpTable.Columns["外包工資"].Ordinal] = "Total";
            //totalRow["單位"] = null;
            //tmpTable.Rows.Add(totalRow);

            //_ttlRow = writeRow;
            //writeRow = this.SheetAdapter.PasteDataRow(totalRow, writeRow, 1);

            base.WriteContent();
        }
Пример #12
-15
        void BeforePasteDataRowSummary(object sender, DataRow[] rows, PasteDataRowsOptions options, ref int writeRow, int col, object args)
        {
            decimal unusual = 0;
            decimal package = 0;

            if (rows.Length > 0)
            {
                DataTable table = rows[0].Table;
                string    line  = rows[0]["產線"].ToString();

                // 取得異常生產工時
                object result = table.Compute("SUM(內部工時)", "產線 = '" + line + "' AND 工時類型=" + (int)HourType.異常生產工時);
                if (result != null && result != DBNull.Value)
                {
                    unusual = (decimal)result;
                }

                // 取得包裝工時
                result = table.Compute("SUM(內部工時)", "產線 = '" + line + "' AND 工時類型=" + (int)HourType.包裝);
                if (result != null && result != DBNull.Value)
                {
                    package = (decimal)result;
                }

                DataRow tmpRow = table.NewRow();
                tmpRow["單位"]    = null;
                tmpRow[0]       = "異常生產工時";
                tmpRow["實際總工時"] = unusual;
                writeRow        = ((WorksheetAdapter)sender).PasteDataRow(tmpRow, writeRow, col);

                tmpRow[0]       = "包裝";
                tmpRow["實際總工時"] = package;
                writeRow        = ((WorksheetAdapter)sender).PasteDataRow(tmpRow, writeRow, col);
            }
        }