簡體   English   中英

C#將列表添加到Excel文件

[英]C# Appending list to excel file

因此,目前,我下面的代碼生成一個字符串,並將其添加到目錄中每個圖像文件的列表中,然后將其添加到列表中后,打開一個excel文件,追加該列表並設置其格式。 當前,我的問題是我的excel行選擇了整列並粘貼列表,如何獲取它以識別列表中有多少個字符串,而僅將這些字符串追加到excel工作表中。

        //Fill A2:B6 with an array of values .
        oRng = oSheet.get_Range("C2");
        oRng.EntireColumn.Value2 = checkInformation.ToArray();

這是我的整個項目

class Program
{
    [STAThread]
    static void Main(string[] args)
    {
        Microsoft.Office.Interop.Excel.Application oXL;
        Microsoft.Office.Interop.Excel._Workbook oWB;
        Microsoft.Office.Interop.Excel._Worksheet oSheet;
        Microsoft.Office.Interop.Excel.Range oRng;
        object misvalue = System.Reflection.Missing.Value;

        Console.WriteLine("Initializing Check Parser Menu.....");
        string dataPath = @"C:\Users\User\Desktop\Tesseract\Tesseract\tessdata";
        string[] filePaths = Directory.GetFiles(@"C:\Users\User\Desktop\Tesseract\Tesseract\Check_Images", "*.png");
        string checkData = "";
        int checkCounter = 0;
        List<string> checkInformation = new List<string>();
        foreach (string filePath in filePaths)
        {
            checkCounter++;
            Console.WriteLine("Initializing Check Parser... on Check: " + checkCounter);
            using (TesseractEngine ocr = new TesseractEngine(dataPath, "eng", EngineMode.TesseractOnly))
            {
                using (Pix p = Pix.LoadFromFile(filePath))
                {
                    using (Pix img = p.Scale(2, 3))
                    {

                        using (var page = ocr.Process(img))
                        {

                            string text = page.GetText();

                            if (text.Contains("Claim ID"))
                            {
                                int indexOfNone = text.IndexOf("NONE");
                                int indexOfClaimId = text.IndexOf("Claim ID");
                                int difference = indexOfClaimId - indexOfNone;
                                var dollarData = text.Substring(indexOfNone, difference);
                                int startingPoint = indexOfNone + (dollarData.Length - 6);
                                var dollarAmount = text.Substring(startingPoint, 6);
                                var claimIdData = text.Substring(indexOfClaimId, 14);
                                var claimInfoOutput = claimIdData + " Check Amount: " + dollarAmount;

                                Console.WriteLine(claimInfoOutput);
                                checkInformation.Add(claimInfoOutput);

                            }
                            else
                            {
                                Console.WriteLine("You will need to locate this check, there was an issue parsing " + "\n" + filePath);
                                Console.WriteLine("Press any Key to continue");
                                Console.ReadKey();
                            }

                        }
                    }
                }
            }


        }
        Console.WriteLine("Writing Data to Excel File... DONT TaCH");
        try
        {
            //Start Excel and get Application object.
            oXL = new Microsoft.Office.Interop.Excel.Application();
            oXL.Visible = true;

            //Get a new workbook.
            oWB = (Microsoft.Office.Interop.Excel._Workbook)(oXL.Workbooks.Add(""));
            oSheet = (Microsoft.Office.Interop.Excel._Worksheet)oWB.ActiveSheet;

            //Add table headers going cell by cell. //Format A1:B1 as bold, vertical alignment = center.
            oSheet.Cells[1, 1] = "Claim ID";
            oSheet.Cells[1, 2] = "Check Amount";
            oSheet.get_Range("A1", "B1").Font.Bold = true;
            oSheet.get_Range("A1", "B1").VerticalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter;

            // Create an array to multiple values at once.

            //Fill A2:B6 with an array of values .
            oRng = oSheet.get_Range("C2");
            oRng.Value2 = checkInformation.ToArray();
            //oSheet.get_Range("A2", "B6").Value2 = checkInformation.ToArray();


            //Fill A2 with a formula(=MID(C2,9,5) 
            oRng = oSheet.get_Range("A2", "A50");
            oRng.Formula = "=MID(C2,9,5)";
            //Fill B2 with a =RIGHT(C2,6)
            oRng = oSheet.get_Range("B2", "B50");
            oRng.Formula = "=RIGHT(C2,6)";

            //AutoFit columns A:C.
            oRng = oSheet.get_Range("A1", "C1");
            oRng.EntireColumn.AutoFit();

            oXL.Visible = false;
            oXL.UserControl = false;
            oWB.SaveAs("C:\\Users\\User\\Desktop\\Tesseract\\Tesseract\\excel\\checkdata.xlsx", Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookDefault,
                Type.Missing, Type.Missing,
                false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange,
                Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

            oWB.Close();
            ;
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.ToString());
        }

    }

好的,我解決了這個問題,很抱歉給您打擾,但是這就是我所做的。

            //Fill A2:B6 with an array of values .
            string cellName;
            int counter = 2;
            foreach (var check in checkInformation)
            {
                cellName = "C" + counter.ToString();
                oRng = oSheet.get_Range(cellName, cellName);
                oRng.Value2 = check.ToString();
                ++counter;
            }

基本上我只需要對列表中的每個項目說這是第一個單元格名稱,將value.tostring追加

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM