Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Population an Excel Range with an array
Message
 
 
À
06/07/2013 14:50:37
Information générale
Forum:
Visual FoxPro
Catégorie:
COM/DCOM et OLE Automation
Versions des environnements
Visual FoxPro:
VFP 9 SP2
OS:
Windows Server 2012
Network:
Windows 2008 Server
Database:
MS SQL Server
Application:
Web
Divers
Thread ID:
01577886
Message ID:
01577890
Vues:
104
This message has been marked as the solution to the initial question of the thread.
Check Message ID: 1076673

>Populating Excel rows from a table one at a time can be very slow.
>I came across something in .NET that speeds the process up a lot.. you can populate a range of cells from an array
>
>Using the .NET code below, I get a spreadsheet with the names where the belong.
>Using the VFP code below it, I get the word "John" in every cell.
>Can anyone tell me how to get it to see the whole array?
>
>Thanks in advance!!
>
>
>
>// .NET Code
>using System;
>using Excel = Microsoft.Office.Interop.Excel;
>using System.Reflection; 
>
>using System.Collections.Generic;
>using System.Linq;
>using System.Windows.Forms;
>using System.Text;
>
>namespace ExcelArray
>{
>  class Program
>  {
>    
>
>
>
>    static void Main(string[] args)
>    {
>      Excel.Application oXL;
>      Excel._Workbook oWB;
>      Excel._Worksheet oSheet;
>      Excel.Range oRng;
>      try
>      {
>        //Start Excel and get Application object.
>        oXL = new Excel.Application();
>        oXL.Visible = true;
>
>        //Get a new workbook.
>        oWB = (Excel._Workbook)(oXL.Workbooks.Add(Missing.Value));
>        oSheet = (Excel._Worksheet)oWB.ActiveSheet;
>
>        //Add table headers going cell by cell.
>        oSheet.Cells[1, 1] = "First Name";
>        oSheet.Cells[1, 2] = "Last Name";
>        oSheet.Cells[1, 3] = "Full Name";
>        oSheet.Cells[1, 4] = "Salary";
>
>        //Format A1:D1 as bold, vertical alignment = center.
>        oSheet.get_Range("A1", "D1").Font.Bold = true;
>        oSheet.get_Range("A1", "D1").VerticalAlignment =
>          Excel.XlVAlign.xlVAlignCenter;
>
>        // Create an array to multiple values at once.
>        string[,] saNames = new string[5, 2];
>
>        saNames[0, 0] = "John";
>        saNames[0, 1] = "Smith";
>        saNames[1, 0] = "Tom";
>        saNames[1, 1] = "Brown";
>        saNames[2, 0] = "Sue";
>        saNames[2, 1] = "Thomas";
>        saNames[3, 0] = "Jane";
>        saNames[3, 1] = "Jones";
>        saNames[4, 0] = "Adam";
>        saNames[4, 1] = "Johnson";
>
>        //Fill A2:B6 with an array of values (First and Last Names).
>        oSheet.get_Range("A2", "B6").Value2 = saNames;
>
>        //Fill C2:C6 with a relative formula (=A2 & " " & B2).
>        oRng = oSheet.get_Range("C2", "C6");
>        oRng.Formula = "=A2 & \" \" & B2";
>
>        //Fill D2:D6 with a formula(=RAND()*100000) and apply format.
>        oRng = oSheet.get_Range("D2", "D6");
>        oRng.Formula = "=RAND()*100000";
>        oRng.NumberFormat = "$0.00";
>
>        //AutoFit columns A:D.
>        oRng = oSheet.get_Range("A1", "D1");
>        oRng.EntireColumn.AutoFit();
>
>        //Manipulate a variable number of columns for Quarterly Sales Data.
>      //  DisplayQuarterlySales(oSheet);
>
>        //Make sure Excel is visible and give the user control
>        //of Microsoft Excel's lifetime.
>        oXL.Visible = true;
>        oXL.UserControl = true;
>      }
>      catch (Exception theException)
>      {
>        String errorMessage;
>        errorMessage = "Error: ";
>        errorMessage = String.Concat(errorMessage, theException.Message);
>        errorMessage = String.Concat(errorMessage, " Line: ");
>        errorMessage = String.Concat(errorMessage, theException.Source);
>
>        MessageBox.Show(errorMessage, "Error");
>      }
>
>
>    }
>  }
>}
>
>
>
>
>*-- VFP Code
>CLOSE ALL
>CLEAR ALL
>DIMENSION saNames(5,2)
>saNames[1, 1] = "John"
>saNames[1, 2] = "Smith"
>saNames[2, 1] = "Tom"
>saNames[2, 2] = "Brown"
>saNames[3, 1] = "Sue"
>saNames[3, 2] = "Thomas"
>saNames[4, 1] = "Jane"
>saNames[4, 2] = "Jones"
>saNames[5, 1] = "Adam"
>saNames[5, 2] = "Johnson"
>oExcel = CREATEOBJECT("Excel.Application")
>oExcel.Visible = .T.
>oBook =  oExcel.Workbooks.Add()
>oBook.Sheets[1].Name = "Summary"
>
>WITH oExcel.ActiveSheet
>  .Range["A1"].Value = "First"
>  .Range["B1"].Value = "Last"
>  oRange = .Range["A2:B6"]
>ENDWITH
>oRange.Value2 = saNames
>
>
--sb--
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform