簡體   English   中英

在C#WPF中將2D數組插入Excel

[英]Insert 2D array into excel in C# WPF

我想將String[][] (二維數組)插入excel,而不是“ cell by cell”或Row。

另一件事:我想打開一個模板XLS文件,將其寫入並以其他名稱保存。 我已經嘗試搜索Google 2天了。

請幫我 :-)

(在C#WPF中)

您想要類似的東西:

雖然我認為它僅適用於鋸齒狀數組,而不適用於2d數組。 未經2D陣列測試。

 var startCell = Worksheet.Cells[row, col];
 var endCell = Worksheet.Cells[row, col];
 var writeRange = (Excel.Range)Worksheet.Cells[startCell, endCell];
 writeRange.Value = myArray;

我最后要做的是使用object [,],並按行插入ro

      xlApp = new Excel.Application();

        xlWorkBook = xlApp.Workbooks.Open(ExcelFile);
        xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

        Excel.Range firstCell = xlWorkSheet.get_Range("A1", Type.Missing);

        Excel.Range lastCell = xlWorkSheet.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell, Type.Missing);


        Excel.Range worksheetCells = xlWorkSheet.get_Range(firstCell, lastCell);

        int rowCount = worksheetCells.Rows.Count;
        int colCount = worksheetCells.Columns.Count;

         object[,] cellFormulas = new String[rowCount, colCount];

         cellFormulas = worksheetCells.Formula as object[,];

       //  String[][] ResultMatrix = new String[rowCount][];



        xlWorkBook.Close(true, misValue, misValue);
        xlApp.Workbooks.Close();'

我可以解決第一個問題:

我想將String [] [](2D數組)插入excel,而不是“ cell by cell”或按Row。

首先,您應該將String[][]轉換為String[,] ,然后使用它(我測試過):

        public static void ExportToExcel(String[,] data, String sheetName, String path)
        {
            var dt = new DataTable();

            for (var row = 0; row < data.GetLength(0); ++row)
            {
                for (var col = 0; col < data.GetLength(1); col++)
                {
                    dt.Rows[row][col] = data[row, col];
                }
            }

            Excel.Application oXL;
            Excel.Workbook oWB;
            Excel.Worksheet oSheet;
            //Excel.Range oRange;

            oXL = new Excel.Application();

            oXL.Visible = true;
            oXL.DisplayAlerts = false;

            oWB = oXL.Workbooks.Add(Missing.Value);

            oSheet = (Excel.Worksheet)oWB.ActiveSheet;
            oSheet.Name = sheetName;

            var rowCount = 1;

            foreach (DataRow dr in dt.Rows)
            {
                rowCount += 1;
                for (var i = 1; i < dt.Columns.Count + 1; i++)
                {
                    if (rowCount == 2)
                    {
                        oSheet.Cells[1, i] = dt.Columns[i - 1].ColumnName;
                    }
                    oSheet.Cells[rowCount, i] = dr[i - 1].ToString();
                }
            }

            oSheet = null;
            oWB.SaveAs(path, Excel.XlFileFormat.xlWorkbookNormal,
                Missing.Value, Missing.Value, Missing.Value, Missing.Value,
                Excel.XlSaveAsAccessMode.xlExclusive,
                Missing.Value, Missing.Value, Missing.Value,
                Missing.Value, Missing.Value);
            oWB.Close(Missing.Value, Missing.Value, Missing.Value);
            oWB = null;

            oXL.Quit();

            GC.WaitForPendingFinalizers();
            GC.Collect();
            GC.WaitForPendingFinalizers();
            GC.Collect();
        }

注意:使用時應在您的引用中添加Microsoft.Office.Interop.Excel。

暫無
暫無

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

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