Получить номер страницы по местоположению ячейки EXCEL INTEROP C # - PullRequest
0 голосов
/ 13 ноября 2018

Я хочу получить номер страницы, используя ячейку Excel Interop C #

например, D, 77 на странице 3 ... Я понятия не имею, какое свойство ячейки может быть ...

Я хочу

  ws.get_Range($"C{page2Start}", $"I{page2InfoEnd}").Value2 = preInfo;

Его таблица начинается со второй строки второй страницы.

enter image description here

//crete excle report from resultObject
public static Workbook WriteCertificateOfComplianceExcelReport(List<CertificateOfComplianceTableObject> mainTbl,bool show)
{
    List<CSerieses> serieses = QADataBaseManager.GetCSerieses();

    GlobalVariables.xlApp.DisplayAlerts = true;
    GlobalVariables.xlApp.Visible = true;
    GlobalVariables.xlApp.ScreenUpdating = true;

    Workbook wb = GlobalVariables.xlApp.Workbooks.Open(GlobalVariables.excelReport);
    Worksheet ws = (Worksheet)wb.Worksheets[1];

    if (ws == null)
    {
        Console.WriteLine("Worksheet could not be created. Check that your office installation and project references are correct.");
        return null;
    }
    ws.Cells.NumberFormat = "@";
    ws.Cells.Style.Font.Size = ws.Cells.Style.Font.Size - 1;
    ws.Cells.ShrinkToFit = true;

    string[] vals = QADataBaseManager.GetCustomerPO();
    var preInfo = new string[6, 7] {
        { vals[0], "","","Tadiran cat No:","","",vals[3]},
        { vals[1].Split(" ").First(), "","","Tadiran P/O:","","",vals[4]},
        { vals[2], "","","Description:","","",vals[5]},
        { "", "","","Customer P/N:","","",vals[6]},
        { "", "","","Test date:","","",vals[7]},
        { "", "","","Quantity:","","",vals[8]},
    };

    ws.get_Range("C7", "I12").Value2 = preInfo;

    if (Convert.ToInt32(vals[8]) != serieses.Sum(s => s.Count))
    {
        Console.WriteLine("\nError!!!!\n");
    }

    int j = 0;
    int i;
    for (i = 0; i < serieses.Count(); i++)
    {
        if (serieses[i].Mark)
        {
            string series = serieses[i].SeriesNumber.Trim();
            if (serieses[i].Count != 0)
            {
                series += $"({serieses[i].Count})";
            }
            ws.Cells[10 + j, "C"] = series;
            j++;
        }
    }

    ws.Cells[45, "G"] = QADataBaseManager.GetInspector();
    //ws.Cells[40, "G"] = "";//"------------";
    int page2Start = 44;
    int page2InfoEnd = page2Start + 5;
    ws.get_Range($"C{page2Start}", $"I{page2InfoEnd}").Value2 = preInfo;


    ws.get_Range($"A{page2Start}", $"I{page2InfoEnd + serieses.Count()}").Cells.HorizontalAlignment = XlHAlign.xlHAlignLeft;
    ws.get_Range($"A{page2Start}", $"I{page2InfoEnd + serieses.Count()}").Cells.Font.Name = "Times New Roman";

    var seriesObj = new string[serieses.Count(), 3];
    for (int ii = 0; ii < 999; ii++)
    {
        //int x = ws.Range[ii, ii].PageBreak;
       //wb.p();

    }
    var ranges = "";
    int seriesesLine = (page2InfoEnd - 2);
    for (i = 0; i < serieses.Count(); i++)
    {
        int k = (page2InfoEnd-2) + i;
        seriesObj[i, 0] = "Code & Quantity:";
        ranges += $"A{k}:B{k},";
        string series = serieses[i].SeriesNumber.Trim();
        if (serieses[i].Count != 0)
        {
            series += $"({serieses[i].Count})";
        }
        seriesObj[i, 2] = series;
        ranges += $"C{k}:E{k},";
    }
    ws.get_Range(ranges.TrimEnd(',')).Merge();
    ranges = "";
    ws.get_Range($"A{seriesesLine}", $"C{seriesesLine + (serieses.Count()-1)}").Value2 = seriesObj;

    int t_start = seriesesLine + serieses.Count() + 1;
    int t_end = t_start + mainTbl.Count()+ 1;


    Range tRange = ws.get_Range("A" + t_start, "K" + t_end);

    tRange.SetBorders();
    Range r = ws.get_Range($"A{t_start}", $"K{t_start}");
    r.HorizontalAlignment = XlHAlign.xlHAlignCenter;
    r.Cells.VerticalAlignment = XlVAlign.xlVAlignCenter;
    r.Cells.WrapText = true;


    ranges += $"A{ t_start}:C{ t_start},F{ t_start}:H{ t_start},I{ t_start}:J{ t_start}";
    ws.get_Range(ranges).Merge();

    //ws.get_Range("A" + t_start, "C" + t_start).Merge();
    //ws.get_Range("F" + t_start, "H" + t_start).Merge();
    //ws.get_Range("I" + t_start, "J" + t_start).Merge();

    var objData = new string[mainTbl.Count() + 2, 11];

    objData[0, 0] = "Test";
    objData[0, 3] = "Sample size";
    objData[0, 4] = "ACPT No.";
    objData[0, 5] = "Requirements";
    objData[0, 8] = "Findings";
    objData[0, 10] = "ACPT REG";

    objData[1, 0] = "Correct designation";
    objData[1, 3] = "1";
    objData[1, 4] = "---";
    objData[1, 5] = "TLP-81128/T/AR3";
    objData[1, 8] = "O.K.";
    objData[1, 10] = "A";

    int s_temp = t_start + 1;

    ws.get_Range($"D{s_temp}", $"K{s_temp}").Cells.HorizontalAlignment = XlHAlign.xlHAlignCenter;

    //ranges += $"A{ s_temp}:C{ s_temp},F{ s_temp}:H{ s_temp},I{ s_temp}:J{ s_temp},";

    Range from = ws.get_Range($"A{t_start}:J{t_start}");
    Range to = ws.get_Range($"A{t_start+1}:J{t_start + mainTbl.Count() + 1}");
    from.Copy(to);

    //ws.get_Range("A" + s_temp, "C" + s_temp).Merge();//5
    //ws.get_Range("F" + s_temp, "H" + s_temp).Merge();
    //ws.get_Range("I" + s_temp, "J" + s_temp).Merge();//2
    for (i = 0; i < mainTbl.Count(); i++)
    {
        CertificateOfComplianceTableObject obj = mainTbl[i];

        try
        {
            if (obj.PropNumber == 13)
            {

                obj.Text += "    " + QADataBaseManager.GetRequiermentsByCloserDateTime(41).Min + "mA   ";
                obj.Text += QADataBaseManager.GetRequiermentsByCloserDateTime(42).Min + "mS";
            }
            if (obj.PropNumber == 45)
            {
                obj.Text += "    " + QADataBaseManager.GetRequiermentsByCloserDateTime(47).Min + "mA   ";
                obj.Text += QADataBaseManager.GetRequiermentsByCloserDateTime(48).Min + "mS";
            }
        }
        catch (Exception ex)
        {
            MilBatDataBaseManager.WriteLog(ex.StackTrace, ex.Message);
        }
        objData[i + 2, 0] = obj.Text;
        objData[i + 2, 3] = obj.Cells.ToString();
        objData[i + 2, 4] = "1";
        objData[i + 2, 5] = obj.Requirements;
        objData[i + 2, 8] = obj.Finding;
        objData[i + 2, 10] = obj.ACPT_REG;
        int mergeI = t_start + 2 + i;
        //ranges += $"A{mergeI}:C{mergeI},F{mergeI}:H{mergeI},I{mergeI}:J{mergeI},";

        //ws.get_Range("A" + (t_start + 2 + i), "C" + (t_start + 2 + i)).Merge();
        //ws.get_Range("F" + (t_start + 2 + i), "H" + (t_start + 2 + i)).Merge();
        //ws.get_Range("I" + (t_start + 2 + i), "J" + (t_start + 2 + i)).Merge();


        if (obj.ACPT_REG.Equals("R"))
        {
            ws.get_Range($"K{i + 2 + t_start}").Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red);
        }
    }

    var range = ws.get_Range($"A{(t_start)}", $"K{mainTbl.Count() + 1 + t_start}");//.Value2 = objData;
    range.Value2 = objData;

    range.Font.Size = 13;
    //ws.get_Range($"A{(t_start)}", $"K{mainTbl.Count() + 1 + t_start}").Value2 = objData;

    ws.get_Range($"A{t_start + 1}", $"C{t_end}").Cells.HorizontalAlignment = XlHAlign.xlHAlignLeft;
    ranges = "";
    var remarks = QADataBaseManager.GetRemarks();
    var remArray = remarks["g"].Replace("\r\n", "\n").Split("\n");
    int remarkGSize = remArray.Count() + remArray.Sum(s => ((int)(s.Length / 60)))-1;
    //for (int k = 0; k < remArray.Count(); k++)
    //{

    //    ranges += $"A{ t_end + 3 +k}:K{ t_end + 3 + k},";
    //}


    switch (remarkGSize)
    {
        case 0:
        case 1:
        case 2:
        case 3:
            t_end += 2;
            break;
        case 4:
        case 5:
        case 6:
        case 7:
            t_end += 1;
            break;
        default:
            break;
    }
    ws.get_Range($"B{ t_end + 2}:K{ t_end + 2}").Merge();
    ws.Cells[t_end + 2, "B"] = remarks["g"];
    ws.get_Range($"C{t_end + 2}:I{ t_end + 2}").HorizontalAlignment = XlHAlign.xlHAlignLeft;
    //ws.get_Range($"A{ t_end + 3}:K{ t_end + 3 + remArray.Count()}").Rows.AutoFit();
    //ws.get_Range($"A{t_end + 2}:K{t_end + 2}").Rows.AutoFit();


    //ranges += $"A{ t_end + 3}:K{ t_end + 3 + remArray.Count()},";

    //ws.Range[ws.Cells[t_end + 2, "A"], ws.Cells[t_end + 2, "K"]].Merge();

    int statusStart = t_end + 2 + remarkGSize;

    switch (remarkGSize)
    {
        case 0:
        case 1:
        case 2:
        case 3:
            statusStart += 2;
            break;
        case 4:
        case 5:
        case 6:
        case 7:
            statusStart += 1;
            break;
        default:
            break;
    }

    QADataBaseManager.GetMifratFromCatalogProp();

    ws.get_Range($"A{statusStart}", $"H{statusStart + 4}").Cells.HorizontalAlignment =
         Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignLeft;
    ws.get_Range($"A{statusStart}", $"H{statusStart + 4}").Cells.Font.Name = "Calibri";
    ws.get_Range($"A{statusStart}", $"H{statusStart + 4}").Cells.Font.Size = 13;

    var EndInfoObj = new string[5, 10];

    EndInfoObj[0, 0] = "Status:";
    EndInfoObj[1, 0] = "Remarks:";
    EndInfoObj[3, 0] = "Tad. Spec:";
    EndInfoObj[4, 0] = "Date:";

    for (int t = 0; t <= 4; t++)
    {
        //ws.Range[ws.Cells[statusStart + t, "A"], ws.Cells[statusStart + t, "B"]].Merge();
        ranges += $"A{statusStart + t}:B{statusStart + t},";
    }

    //ws.Cells[statusStart, "D"] = "Approved By Name:";



    bool isFalse = QADataBaseManager.GetRejectWord();

    if(isFalse)
    {
        EndInfoObj[0, 2] = "Failed";
        ws.Range["C" + statusStart, "C" + statusStart].Font.Color = System.Drawing.Color.Red;
    }
    else
    {
        EndInfoObj[0, 2] = "Success";
        ws.get_Range("C" + statusStart, "C" + statusStart).Font.Color = System.Drawing.Color.Blue;
    }


    EndInfoObj[1, 2] = remarks["f"];
    EndInfoObj[3, 2] = GlobalVariables.MifratNumber;
    EndInfoObj[4, 2] = vals[7];

    ranges += $"C{ statusStart}:E{ statusStart},C{ statusStart + 1}:E{ statusStart + 1}," +
        $"C{ statusStart + 3}:E{ statusStart + 3},C{ statusStart + 4}:E{ statusStart + 4},";

    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ i>

    EndInfoObj[3, 5] = "Rev :";
    EndInfoObj[4, 5] = "Inspector :";

    ranges += $"F{ statusStart + 3}:G{ statusStart + 3},F{ statusStart + 4}:G{ statusStart + 4},";
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ i>

    EndInfoObj[3, 7] = GlobalVariables.Version;
    EndInfoObj[4, 7] = QADataBaseManager.GetInspector();

    ranges += $"H{ statusStart + 3}:I{ statusStart + 3},H{ statusStart + 4}:I{ statusStart + 4}";

    ws.get_Range(ranges).Merge();
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ i>

    EndInfoObj[4, 9] = "Stamp :";
    ws.get_Range("A" + statusStart, "J" + (statusStart + 4)).Value2 = EndInfoObj;
    GlobalVariables.xlApp.Visible = show;
    GlobalVariables.xlApp.ScreenUpdating = show;
    return wb;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...