วิธีการสร้าง/รูปสมุดงาน Excel ที่ใช้ Automation J ++ Visual แบบ

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 219430 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

สรุป

บทความนี้อธิบาย Automating Excel 97 หรือหลังจากการแสดงผล J ++ ไคลใช้ Java ภาษาการเขียนโปรแกรม โครงการใช้ไลบรารีชนิด Excel และแสดงวัตถุที่เกี่ยวกับการเขียนโปรแกรม

ข้อมูลเพิ่มเติม

บทความนี้ parallels บทความใน Microsoft Knowledge Base ที่อธิบายถึงกระบวนการเดียวกันที่ใช้ Microsoft ในการ Visual c ++และระดับชั้นมูลฐานของ Microsoftสำหรับข้อมูลเพิ่มเติมเกี่ยวกับการทำงานอัตโนมัติของ Excel จาก c ++ Visual คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
179706วิธีการใช้ MFC เพื่อทำให้ Excel และสร้าง/รูปแบบสมุดงานใหม่แบบ
  1. เริ่ม Visual J ++ 6.0 สร้างโปรแกรมประยุกต์ของคอนโซลใหม่โครงการ และกำหนดชื่อ XLJava1
  2. ในหน้าต่าง Explorer โครงการ เปิดแผนภูมิโครงการของคุณ และคลิกสองครั้งที่แฟ้ม Class1.java ที่สร้างขึ้นสำหรับคุณ
  3. จากนั้นProjectเมนู เลือกเพิ่ม Wrapper COMเลือกนั้นไลบรารีวัตถุของ Microsoft Excel 8.0, 9.0 หรือ 10.0 (ตามที่เหมาะสม)แล้ว คลิกตกลง. ซึ่งเพิ่ม Wrappers COM Java ที่มาจากไลบรารีชนิด Excel โครงการของคุณ
  4. ที่ด้านบนของแฟ้ม Class1.Java เพิ่มคำสั่งนำเข้าต่อไปนี้:
    
       import Excel8.*; // Change the 8 to 9 for Excel 2000, or 10 for 2002 or later
       // For Excel 2000 the statement should read
       // import Excel9.*; // Excel support
       import com.ms.com.*; // Variant & exception support. 
       import java.lang.InterruptedException; // Needed for Thread.sleep().
       (These are illustrated in the code sample below.)
    					
  5. ในจุดที่ใช้ Class1 และฟังก์ชัน main() เพิ่มรหัสเพื่อให้โปรแกรมของคุณปรากฏเป็นดังนี้:
         /**
     * This class can take a variable number of parameters on the command
     * line. Program execution begins with the main() method. The class
     * constructor is not invoked unless an object of type 'Class1'
     * created in the main() method.
     */ 
    import excel.*; // for Excel 2002, or - import excel9.*; for Excel 2000 or later
                      // or - import excel8.*; for Excel 97
    import java.lang.InterruptedException; // needed for thread.sleep
    import com.ms.com.*; // Variant & exception support<BR/>
    public class Class1
    {
    	/**
    	 * The main entry point for the application. 
    	 *
    	 * @param args Array of parameters passed to the application
    	 * via the command line.
    	 */ 
    	//==============================================================
    	// Add the following static member function declaration 
        // just before main()...
        // J/Direct declarations... to use Windows MessageBox
        /** @dll.import("USER32") */ 
        private static native int MessageBox(int hwndOwner, String text, 
                                             String title, int fuStyle);
        // Here is an example of its use.
        // MessageBox(0, "Hello, World", "Title", 0); //fuStyle switch
        //    values are defined in Winuser.h. Search on 'MB_OK'
        //==============================================================
    	public static void main (String[] args)
    	{
    		// Force COM objects to be created on the current thread.
          // Otherwise, older VMs might not release all references
          // and Excel might continue to run after you shutdown.
          ComLib.declareMessagePumpThread();
          // Launch Excel 
          Variant vEmpty = new Variant();
          vEmpty.noParam();
          Application xlApp = new Application();
          //xlApp.setVisible(0,true); // Excel 2000 & 97 1st param is LCID, Locale ID
    	  xlApp.setVisible(true); // One argument for Excel 2002 or later
       	
          // Get the workbook object via the object model.
          Workbooks books = xlApp.getWorkbooks();
          _Workbook book = books.Add(vEmpty,0);
          // Get the first sheet.		
          Sheets sheets = (Sheets)book.getSheets();
          _Worksheet sheet = (_Worksheet)sheets.getItem(new Variant(1));
          // Fill cells A1, B1, C1, and D1, one cell at a time, with "headers".
          Range range = sheet.getRange(new Variant("A1"),new Variant("A1"));
          //range.setValue(new Variant("First Name")); // Throughout, the SetValue
          // of Excel 97 and Excel 2000 no longer works in Excel 2002 or later.
    	  range.setValue2(new Variant("First Name"));
          range = sheet.getRange(new Variant("B1"),new Variant("B1"));
          //range.setValue(new Variant("Last Name"));
    	  range.setValue2(new Variant("Last Name"));
          range = sheet.getRange(new Variant("C1"),new Variant("C1"));
          //range.setValue(new Variant("Full Name"));
    	  range.setValue2(new Variant("Full Name"));
          range = sheet.getRange(new Variant("D1"),new Variant("D1"));
          //range.setValue(new Variant("Salary"));
    	  range.setValue2(new Variant("Salary"));
          // Format A1:D1 as bold, vertical alignment = center
          range = sheet.getRange(new Variant("A1"),new Variant("D1"));
          Font font = range.getFont();
          font.setBold(new Variant(true));
          range.setVerticalAlignment(new Variant(-4108));
          // Fill range A2:B6 with first and last names, 
          range = sheet.getRange(new Variant("A2"),new Variant("A2"));
          //range.setValue(new Variant("John"));
    	  range.setValue2(new Variant("John"));
          range = sheet.getRange(new Variant("B2"),new Variant("B2"));
          //range.setValue(new Variant("Smith"));
    	  range.setValue2(new Variant("Smith"));
          range = sheet.getRange(new Variant("A3"),new Variant("A3"));
          //range.setValue(new Variant("Tom"));
    	  range.setValue2(new Variant("Tom"));
          range = sheet.getRange(new Variant("B3"),new Variant("B3"));
          //range.setValue(new Variant("Brown"));
    	  range.setValue2(new Variant("Brown"));
          range = sheet.getRange(new Variant("A4"),new Variant("A4"));
          //range.setValue(new Variant("Sue"));
    	  range.setValue2(new Variant("Sue"));
          range = sheet.getRange(new Variant("B4"),new Variant("B4"));
          //range.setValue(new Variant("Thomas"));
    	  range.setValue2(new Variant("Thomas"));
          range = sheet.getRange(new Variant("A5"),new Variant("A5"));
          //range.setValue(new Variant("Jane"));
    	  range.setValue2(new Variant("Jane"));
          range = sheet.getRange(new Variant("B5"),new Variant("B5"));
          //range.setValue(new Variant("Jones"));
    	  range.setValue2(new Variant("Jones"));
          range = sheet.getRange(new Variant("A6"),new Variant("A6"));
          //range.setValue(new Variant("Adam"));
    	  range.setValue2(new Variant("Adam"));
          range = sheet.getRange(new Variant("B6"),new Variant("B6"));
          //range.setValue(new Variant("Johnson"));
    	  range.setValue2(new Variant("Johnson"));
          // Fill range C2:C6 with a relative formula(=A2 & " " & B2")
          range = sheet.getRange(new Variant("C2"),new Variant("C6"));
          range.setFormula(new Variant("=A2 & \" \" & B2"));
          // Fill D2:D6 with a formula (=RAND()*100000) and apply a 
          //  number format
          range = sheet.getRange(new Variant("D2"),new Variant("D6"));
          range.setFormula(new Variant("=RAND()*100000"));
          range.setNumberFormat(new Variant("$0.00"));
          // AutoFit columns A:D
          range = sheet.getRange(new Variant("A1"),new Variant("D1"));
          Range columns = range.getEntireColumn();
          columns.AutoFit();
          // Manipulate a variable number of columns
          //  for Quarterly Sales Data
          short NumQtrs;
          String msg;
          String msg2;
          msg2 = " "; // Initialize it to avoid compile error
          int reply;
          Range resizedrange;
          Interior interior;
          Borders borders;
          // Determine how many quarters to display data for.
          for(NumQtrs = 1; NumQtrs<=4; NumQtrs++)
          {
             if (NumQtrs == 1)
             {
              msg = "Enter sales data for " + NumQtrs + " quarter?";
              msg2 = "Displaying data for " + NumQtrs + " quarter";
             }
             else
             {
              msg = "Enter sales data for " + NumQtrs + " quarters?";
              msg2 = "Displaying data for " + NumQtrs + " quarters";
             }
             reply = MessageBox(0, msg, "Indicate Quarters", 36);
             if(6 == reply) break;			
          } // end For loop
       		
          MessageBox(0, msg2, "Data Setting", 0);
          if(5 == NumQtrs) // Limit display to <=4 quarters
          {
           NumQtrs = 4;
          }
          // Starting at E1, fill headers for number of columns selected.
          range = sheet.getRange(new Variant("E1"),new Variant("E1"));
          resizedrange = range.getResize(vEmpty, new Variant(NumQtrs));
          resizedrange.setFormula(
             new Variant("= \"Q\" & COLUMN()-4 & CHAR(10)& \"Sales\""));
          // Change the Orientation and Wrap Text properties for the headers.
          resizedrange.setOrientation(new Variant(38));
          resizedrange.setWrapText(new Variant(true));
          // Fill the interior colors of the headers.
          interior = resizedrange.getInterior();
          interior.setColorIndex(new Variant(36));
          // Fill the columns with a formula and apply a number format.
          range = sheet.getRange(new Variant("E2"),new Variant("E6"));
          resizedrange = range.getResize(vEmpty, new Variant(NumQtrs));
          resizedrange.setFormula(new Variant("=RAND()*100"));
          resizedrange.setNumberFormat(new Variant("$0.00"));
          // Apply Borders to the Sales data and headers
          range = sheet.getRange(new Variant("E1"), new Variant("E6"));
          resizedrange = range.getResize(vEmpty, new Variant(NumQtrs));
          borders = resizedrange.getBorders();
          borders.setWeight(new Variant(2)); // xlThin = 2
          // Add Totals formula for Quarterly sales data, apply a border.
          range = sheet.getRange(new Variant("E8"),new Variant("E8"));
          resizedrange = range.getResize(vEmpty, new Variant(NumQtrs));
          resizedrange.setFormula(new Variant("=SUM(E2:E6)"));
          borders = resizedrange.getBorders();
          Border bottomborder;
          bottomborder = borders.getItem(9); // Bottom border
          bottomborder.setLineStyle(new Variant(-4119)); // xlDouble = -4119
          bottomborder.setWeight(new Variant(4));  // xlThick = 4
          // Some more features: Add comment to cell C3 - Full 
          //    name of Tom Brown
          range = sheet.getRange(new Variant("C3"),new Variant("C3"));
          range.AddComment(new Variant("Tom was last month's top performer"));
          // Chart the Salaries.
          double Left = 72.; // location in points
          double Top = 144.;
          double Width = 350.;
          double Height = 250.;
          ChartObjects chartobjects = 
            (ChartObjects)sheet.ChartObjects(vEmpty,0); // explicit typecast
          ChartObject chartobject = chartobjects.Add(Left, Top, Width, Height);
          // Set the location and size.
          Chart chart = chartobject.getChart();
          range = sheet.getRange(new Variant("C2"), new Variant("D6"));
          // Full name and salary.
          range.Select();
          chart.ChartWizard(new Variant(range), // Source
                            new Variant(11),    // Gallery
                            vEmpty,             // Format
                            new Variant(1),     // PlotBy
                            new Variant(0),     // CategoryLabels
                            new Variant(1),     // SeriesLabels
                            new Variant(true),  // HasLegend
                            new Variant("Salary by Employee"), //Title
                            new Variant("Employee"), //CategoryTitle
                            new Variant("Salary"), //ValueTitle
                            vEmpty,             // ExtraTitle
                            0                   // LCID(localeID)
                            );
       		
          // Make the application visible and give the user control of 
          // Microsoft Excel.
          // xlApp.setVisible(0,true); // 1st param is LCID, Locale ID. 
          // The preceding was done at beginning of the program.
          xlApp.setUserControl(true);
       		
          MessageBox(0, "When Excel hides, Minimize VJ++ IDE to see Excel",
                     "Focus on Excel", 327744);
          //book.setSaved(0,true); // Avoid "Save changes" dialog
          //xlApp.Quit();  // Not if using UserControl		
    	} // End of Main()
    } // End of Class
    
    
    					
  6. จากนั้นตรวจแก้จุดบกพร่องเมนู คลิกเริ่มการทำงาน. โปรแกรม สร้าง แพคเกจ และทำงาน เมื่อคุณรัน คอนโซลที่ปรากฏของหน้าต่างและบางครั้งในภายหลัง Excel ปรากฏขึ้น กล่องโต้ตอบที่พร้อมท์ให้คุณเกี่ยวกับวิธีอาจไตรมาสไปยังแผนภูมิจะปรากฏอยู่บนสุดถ้าคุณคลิกที่ใดก็ได้บนหน้าจอของคุณหลังจากที่โปรแกรมเริ่มขึ้น ถ้าคุณได้คลิกหน้าจอกล่องโต้ตอบจะถูกย่อให้เล็กสุดบนแถบงานของ Windows ถ้าโปรแกรมดูเหมือนว่าจะ วาง คืนค่าไปยัง 'ปกติ' บนกล่องโต้ตอบที่อยู่บนแถบงานของคุณ

ข้อมูลอ้างอิง

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ Visual J ++ และทำงานอัตโนมัติ ให้คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
169173ข้อมูล: พบคำถามสำหรับ Visual J ++ บ่อย
215484วิธีดำเนินการโดยใช้ Visual J ++ ของ PowerPoint อัตโนมัติ
179706วิธีการใช้ MFC เพื่อทำให้ Excel และสร้าง/รูปแบบสมุดงานใหม่แบบ
219151วิธีการทำให้ Microsoft Excel ทำงานอัตโนมัติจาก Visual Basic

คุณสมบัติ

หมายเลขบทความ (Article ID): 219430 - รีวิวครั้งสุดท้าย: 12 ตุลาคม 2553 - Revision: 2.0
ใช้กับ
  • Microsoft Visual J++ 6.0 Standard Edition
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Excel 97 Standard Edition
  • Microsoft Office XP Developer Edition
  • Microsoft Office 2000 Developer Edition
Keywords: 
kbautomation kbhowto kbmt KB219430 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:219430

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com