# Patent

## Title
Communications between a customer relationship management (CRM) application and an electronic worksheet to automatically generate a pivot table object

## Abstract

An integrated system is described that allows a user to easily mine and report data maintained by a customer relationship management (CRM) application. In general, the system automates the process of creating electronic reports, such as an electronic worksheet, in a format that can be directly manipulated and viewed from spreadsheet application. In one embodiment, the report is automatically generated to include a pivot table for displaying the data. The system includes a database adapted to store the CRM data. First and second reporting modules execute within the CRM software application and the worksheet software application, respectively. The reporting modules cooperate in order to integrate CRM application and spreadsheet application, thereby automating the process of generating a worksheet based on the CRM database.

## Background
This application is a continuation of U.S. patent application Ser. No. 13/107,257 (now U.S. Pat. No. 8,429,518), filed May 13, 2011 which is a continuation of U.S. patent application Ser. No. 11/679,647 (now U.S. Pat. No. 7,945,850), filed on Feb. 27, 2007 which is a continuation of U.S. patent application Ser. No. 09/738,639 (now U.S. Pat. No. 7,185,279), filed on Dec. 15, 2000, which claims the benefit of U.S. Provisional Patent Application Ser. No. 60/175,025, filed Jan. 7, 2000, the entire contents of each of which are hereby incorporated by reference.


BACKGROUND
Conventional Customer Relationship Management (CRM) software applications are used to manage all aspects of customer relations by integrating a company's sales force, processes, sales channels and customers into one environment. For example, FrontRange SolutionsTM of Colorado Springs, Colo., offers Goldmine, which is a suite of software applications for managing sales, marketing, service and support. Most CRM applications typically include a report generation module for viewing the customer information (CRM data) using a variety of predefined or custom reports. In addition, the applications may allow the user to export the CRM data to a spreadsheet software application for more detailed analysis. For example, a user may use Microsoft Excel provided by Microsoft Corporation of Redmond, Wash. to manipulate and view the CRM data. Typically the CRM data is exported in a tab-delimited format that can be imported by the spreadsheet software application.



DESCRIPTION OF DRAWINGS
FIG. 1 is a block diagram illustrating an example system that integrates a CRM software application with a spreadsheet software application.
FIG. 2 is a flow chart illustrating example user interaction with the integrated system.
FIG. 3 is a flowchart illustrating an example process in which the integrated system automatically generates a worksheet containing CRM data.
FIG. 4 is a flowchart illustrating example user interaction with the generated worksheet to invoke the CRM software application.
FIGS. 5 through 9 illustrate an example user interface presented by the integrated system while generating the worksheet.
FIG. 10 illustrates an example worksheet automatically generated by the integrated system.
FIGS. 11 through 16 illustrate an example user interface presented by the integrated system while the user interacts with the worksheet to invoke the CRM application.



DETAILED DESCRIPTION
FIG. 1 illustrates an example system 2 for easily mining and reporting data maintained by a CRM application, such as Goldmine from FrontRange Solutions. Generally, system 2 provides an integrated environment that automates the process of creating electronic reports, such as electronic worksheet 12, in a format that can be directly manipulated and viewed from spreadsheet application 6.
CRM application 4 represents any conventional CRM environment that integrates customer-related business functions such as sales, marketing, service and support. CRM application 4 stores CRM data, such as sales and marketing information, within CRM database 10. In one configuration CRM database 10 is a relational database in which the data is organized according to a number of tables and relationships. Example of such databases include SQL ServerTM and Microsoft AccessTM provided by Microsoft Corporation, OracleTM provided by OracleTM Corporation of Redwood Shores, Calif., and dBase IV.
Spreadsheet application 6 represents any conventional spreadsheet data analysis software application such as Microsoft Excel provided by Microsoft Corporation, QuattroTM Pro of Corel and Lotus 1-2-3TM of Lotus Development Corporation. Using spreadsheet application 6, a user can view electronic worksheet 12, which may be one of a number of worksheets organized as a workbook.
Reporting modules 8 cooperate in order to integrate CRM application 4 and spreadsheet application 6, thereby automating the process of generating worksheet 12 based on CRM database 10. In particular, reporting modules 8 automatically generate multi-dimensional analysis table 14 within electronic worksheet 12 according to the CRM data within CRM database 10. Multi-dimensional analysis table 14 represents an analytical function, commonly referred to as a pivot table or as a “cross-tab”, supported by a variety of spreadsheet environments for displaying large amounts of data. Table 14 allows the user to quickly and easily summarizes or view large amounts of CRM data. For example, the user can rotate the rows and columns of table 14 to see different summaries of the CRM data, filter the data by displaying different pages, or display the details for area of interest.
As discussed in detail below, CRM reporting module 8A is “installed” within CRM application 4 and, when invoked by the user, examines the schema and data structures of CRM database 10, as well as customized settings like local field names within CRM application 4. Reporting module 8A then interacts with reporting module 8B installed within spreadsheet application 6 and reporting module 8C of worksheet 12 to create table 14 within worksheet 12. In this manner, the user can create a comprehensive multi-dimensional analysis table 14 by only entering a few parameters, thereby significantly reducing the skill normally required to generate multi-dimensional analysis tables. The process takes CRM data structures, both native and customized, into account to give the user simple yet powerful access to their CRM data in a context they can understand (i.e., using field names that they have set for their particular business). Reporting modules 8A and 8B may be executable files invoked by CRM application 4 or spreadsheet application 6 or, for example, may be “plug-in” modules executed by the respective applications.
System 2 includes one or more report toolkits 16 that include pre-defined report parameters 18 and one or more worksheet templates 19. Worksheet template 19 includes reporting component 8C for formatting table 14 once created, as described below.
CRM reporting module 8A may use an interprocess communication mechanism, or other suitable method, to communicate the parameters to worksheet application 6 and to invoke report modules 8B and 8C for formatting worksheet 12. For example, in one configuration reporting modules 8B and 8C are Visual Basic Application scripts that are directly callable by reporting component 8A. In this configuration reporting component 8A can comprise an executable program written in the Visual Basic language. Alternatively, other suitable means include Dynamic Data Exchange (DDE), Object Linking and Embedding (OLE), or Component Object Model (COM), which are interprocess communication mechanisms supported by various operating systems and allow applications to share data.
The availability of table 14, and its supported functions, vastly improves the user's ability to analyze the CRM data stored within CRM database 10. After table 14 is generated, the user can interact with spreadsheet application 6 to manipulate table 14 in order to analyze the captured CRM data and “mine” the data for important insights. Furthermore, after viewing the CRM data within the format of table 14, the user can select any amount of the CRM data and automatically invoke CRM application 4 to view the corresponding transactional records, such as a record of a sales call.
CRM application 4 and spreadsheet application 6 execute simultaneously on a computer having an operating system (e.g., the Windows® operating system from Microsoft Corporation), processor and random access memory (RAM).
FIG. 2 is a flowchart illustrating example user interaction with integrated system 2. More specifically, process 20 illustrates user interaction with CRM application 4 to automatically generate an electronic report, such as worksheet 12 and table 14, and further user interaction with the spreadsheet application 6 and electronic report to manipulate CRM data and display CRM records within CRM application 4.
First, the user interacts with CRM application 4 and requests the generation of electronic worksheet 12 and table 14 (22). In response to the request, CRM application 4 invokes CRM reporting module 8A for interacting with the user to capture a number of report generation parameters and reporting module 8B loaded within spreadsheet application 6 (23).
Next, as described in detail below, reporting module 8A constructs table 14 within worksheet 12, conforming to the format of spreadsheet application 6 and according to user-entered parameters combined with pre-defined report parameters 18 in toolkit 16 (24). In particular, reporting module 8A uses captured user parameters to specify toolkit 16, and within toolkit 16, to specify predefined report parameters 18 and worksheet template 19. Reporting module 8A then invokes spreadsheet application 6 and directs it to create worksheet 12 as a copy of worksheet template 19, containing worksheet reporting module 8C. Reporting module 8A then generates table 14 within worksheet 12 according to report parameters 18 and the captured user parameters.
After generating table 14, reporting module 8A invokes and cooperates with reporting modules 8B and 8C to format and organize table 14 (25). For example, reporting module 8A invokes and communicates the parameters to 8B and 8C for further formatting and organization of table 14. In one configuration, additional formatting procedures in reporting module 8C are invoked by spreadsheet application 6 the first time worksheet 12 is accessed.
After reporting module 8B generates electronic worksheet 12, spreadsheet application 6 displays the CRM data as table 14 that can easily be manipulated by the user (26). In addition, worksheet 12 may contain a number of scripts that, in conjunction with reporting module 8B, enhance the functionality associated with table 14.
During the report generating process, reporting module 8A may display a screen that alerts the user to the steps in creating the report including, among others:
1. “Loading templates . . . ”,
2. “Constructing query . . . ”,
3. “Building pivot tables . . . ,”
4. “Adding field labels and colors . . . ,”
5. “Setting CRM Item Aliases . . . ,”
6. “Setting User-defined Field Names . . . ,” and
7. “Loading Spreadsheet Report . . . .”
After analyzing the data within table 14, the user can select one or more entries within table 14 and request to view the underlying CRM data. The user may specify certain records within the underlying data thus displayed for further analysis. In response reporting module 8B interacts with CRM application 4 to display the corresponding CRM records within CRM application 4 (27). In this manner, system 2 provides an integrated environment that automates the process of creating electronic reports and viewing the corresponding CRM records.
FIG. 3 is a flowchart illustrating in further detail the process of automatically generating an electronic worksheet having a multi-dimensional analysis table from within CRM application 4. In particular process 30 illustrates the steps involved in automatically invoking spreadsheet application 6 and generating electronic worksheet 12 having table 14.
Upon receiving a request to generate an electronic worksheet in pivot table format, CRM application 4 invokes reporting module 8A for capturing a number of parameters from the user. Initially, the user selects one of a number of report sets that includes a number of predefined reports. For example, report sets may include a database manager's toolkit, a salesperson's toolkit, a sales manager toolkit and a CFO toolkit (32). Upon selecting a toolkit, the user selects one of a number of predefined reports within the toolkit (33). Based on the selected report, recording module BA analyzes the CRM database 10 and, based on the schema for database 10, identifies a number of tables and corresponding fields for inclusion in table 14.
Reporting module 8A presents the identified fields to the user (34) and allows the user to include or exclude individual fields from the report (35). In addition, reporting module 8A allows the user to specify a level of detail such as, for example, level 1 to level 3, indicating the amount and type of data fields that he or she wishes to include in the report, taking hardware and speed limitations into account.
Upon receiving the field selections from a user (35), reporting module 8A generates a suitable database query string for capturing the appropriate CRM data from CRM database 10 (36). Reporting module 8A then presents the database query string to the user and allows the user to modify the query string as appropriate (37).
In one configuration reporting module 8A allows the user to set a number of preferences and parameters to control the process of report and field selection. For example, the user may enable or disable a number of toolkits, elect to default to an expert mode for access to advance report definition functions, specify a default start date for the inclusion of historical data and specify a default path to store the resulting electronic reports.
After capturing the parameters from the user, as described above, reporting module 8A directs spreadsheet application 6 (38) to access and copy stored worksheet template 19 in toolkit 16 according to the particular report specified by the user, thus creating worksheet 12 in the newly created workbook (39).
Reporting module 8A then creates table 14 within worksheet 12 by calling a function supported by spreadsheet application 6, which accesses CRM database 10 according to the received database query string (40). The following illustrates example syntax for a Visual Basic command to create a pivot table within an Excel worksheet in a SQL environment:

    
    
        gExcel.ActiveSheet.PivotTableWizard —
        SourceType:=xlExternal, —
        SourceData:=Array(selArray(0), selArray(1), —
        
            selArray(2), selArray(3), —
            selArray(4), selArray(5), —
            selArray(6), selArray(7), —
            selArray(8), selArray(9)_), —
        
        
        TableDestination:=“R1C1:R10C1”, —
        TableName:=“PT”+LTrim(Str(sheetRow)),—
        BackgroundQuery:=False, —
        Connection:=“ODBC;DRIVER=SQL Server;SERVER=” & gmSQLServer & “; UID=” & gmSQLUsername & “;PWD=” & gmSQLPassword & “;WSID=” & Trim(Str(Int(Timer( )))) & “;DATABASE=” & gmSQLDatabase
    
    


The following illustrates example syntax for a Visual Basic command to create a pivot table within an Excel worksheet in a dBase IV environment:

    
    
        gExcel.ActiveSheet.PivotTableWizard —
        SourceType:=xlExternal, —
        SourceData:=Array(selArray(0), selArray(1), selArray(2), —
        
            selArray(3), selArray(4), selArray(5), —
            selArray(6), selArray(7), —
            selArray(8), selArray(9) —
        
        
        ), —
        TableDestination:=“R1C1:R10C1”, —
        TableName:=“PT”+LTrim(Str(sheetRow)), —
        BackgroundQuery:=False, _ Connection:=Array(—
        Array(“ODBC;CollatingSequence=ASCII;DBQ=” & defaultPath & “;DefaultDir=” & defaultPath), —
        Array(“Deleted=1;Driver={Microsoft dBase Driver *.dbf)};DriverId=277;FIL=dBase III;ImplicitCo”), —
        Array(“mmitSync=Yes;MaxBufferSize=2048; MaxScanRows=8;PageTimeout=600;SafeTransactions=0; Statistics=0;Threads=3;UserCommitSync=Yes;”) —
        )
    
    


After reporting module 8A creates table 14 within worksheet 12, reporting module 8B applies the formatting parameters specified by the toolkit selected by the user in order to format the electronic worksheet 12 (41).
FIG. 4 is a flowchart illustrating in further detail the process in which the user interacts with electronic worksheet 12 and table 14. In particular, after viewing and analyzing the CRM data contained within table 14, the user is able to select a data area within table 14 and direct spreadsheet application 6 to display the selected data in further detail (46). In response, spreadsheet application 6 creates a new worksheet (47) and displays the underlying CRM data contained within CRM database 10 as a columnar list of fields, where each row represents a single CRM record (48).
Reporting modules 8 support two mechanisms for linking data within table 14 directly to CRM functions: (1) the ability drill-down to individual records within CRM application 4, and (2) the ability to create CRM groups. For example, within the newly displayed worksheet, the user can double click on a single record (49) causing reporting module 8B to invoke CRM application 4 (50) to display the corresponding record within CRM application 4. In one configuration reporting utility 8B includes an embedded macro that issues commands to CRM application 4, via an interprocess control mechanism such as DDE, COM or OLE. In response, CRM application 4 determines the corresponding CRM account number associated with the selected row within the spreadsheet application 6 and displays the corresponding CRM record (51).
Alternatively, from within worksheet application 6, the user can elect to create a group within the CRM database 10 (52). In order to specify a group within CRM database 10, reporting module 8B captures a number of group parameters from within spreadsheet application 6 (53). For example, the user can specify a name for the new group. Reporting module 8B communicates the group parameters to CRM application 4 (54) that, in response, creates a group containing every record, or a user-specified selection of such records, in the underlying CRM data displayed by the worksheet application 6 (55). In one configuration reporting utility 8B issues commands to CRM application 4 via an interprocess control mechanism such as DDE, COM or OLE to create the group.
FIG. 5 illustrates an example user interface provided by CRM application 4 for invoking CRM reporting module 8A in order to open an existing report or to create a new report, such as worksheet 12 containing a table 14. If the user elects to open an existing report CRM reporting module 8A displays a typical file window in which the user can select a report. Upon selecting the report, CRM reporting component 8A invokes spreadsheet application 6 and directs spreadsheet application 6 to display the report.
FIG. 6 illustrates an example user interface 62 presented by CRM reporting module 8A for capturing parameters from the user when the user elects to create a new report. User interface 62 includes a report set input area 64 in which the user specifies a report toolkit, a report input area 66, where the user selects one of the reports of the selected toolkit, a detail level input area 68 where the user selects a level of detail for the report, and a destination input area 70 in which the user defines a location to store the generated report.
FIG. 7 further illustrates the example user interface 62. Based on the level of detail selected by the user within detail level input area 68, the user can enable or disable individual fields of the CRM database 10 by selecting or deselecting the field within field input area 74. FIG. 8 illustrates the example user interface 62 having a database query input area 76 in which the user can modify the database query string generated by CRM reporting module 8A according to the fields specified within the field selection input area 74. As seen in FIG. 8, the database query string generated by CRM reporting module 8A and communicated to CRM reporting module 8B of spreadsheet application 6 may specify database fields and corresponding user-defined field names.
FIG. 9 illustrates the example user interface 62 having a number of input areas by which user can set one or more preferences for controlling the generation of the electronic report. For example, interface 62 presents navigate toolkit selection area 78, in which the user can enable or disable specific toolkits, and a number of other input areas for configuring CRM reporting module 8A.
FIG. 10 illustrates an example worksheet 12, including table 14, that has been automatically generated by reporting modules 8. Also illustrated are a number of improvements and enhancements provided by reporting module 8B. These features specifically enhance the interoperability of CRM generated reports 12 based on the data structures of CRM database 10. For example, display box 84 displays the particular data sources and query criteria for the underlying data of table 14. In addition, CRM toolbar 80 provides many functions that are associated with CRM application 4.
FIG. 11 illustrates an example display window 84 in which a first display area 86 lists the various source files used in generating electronic worksheet 12 and a second display area 88 that displays the selection criteria for filtering the CRM data. FIG. 12 illustrates an example of CRM toolbar 80. The illustrated toolbar includes a number of input icons 90 for selecting and performing various operations on table 14. For example, a first icon 90A freezes the panes of table 14 such that the top row and column of the table 14 are the boundaries. If there are multiple pivot tables within the current worksheet of worksheet 12 and none is selected, reporting module 8B prompts the user to select one of the available pivot tables. A second icon 90B automatically resets the column width of the selected pivot table to optimize columnar display of all data on the table. A third icon 90C invokes the inherent charting functions supported by spreadsheet application 6 for all data and innermost row and column labels for the selected pivot table. This function automatically excludes grand totals. The user can further customize the chart by using the standard technique supported by spreadsheet application 6. The fourth icon 90D automatically creates a duplicate of the current worksheet at the end of the tab row on the current workbook. The fifth icon 90E displays or hides display box 84. The sixth icon 90F automatically creates a CRM group from all of the rows listed in the current worksheet, as described in detail above. The seventh icon 90G provides enhanced grouping abilities within Excel, as illustrated in FIG. 13.
FIG. 13 illustrates an example user interface presented by reporting module 8B that enhances the searching and grouping abilities of worksheet application 6. Grouping window 82 allows the user to specify one or more elements to search for among the currently visible items displayed by table 14 and whether the group should be generated to consist of those items that contain all of the specified elements or any of the specified elements. In addition, the user can enter a name for the new group to be created. This interface replaces the often laborious hand-selection of to-be-grouped items supported by conventional worksheet applications.
FIGS. 14 and 15 illustrate two mechanisms for linking to the table 14 directly to functions supported by CRM application 4: (1) the ability to drill into individual records and (2) the ability to create specific groups within CRM database 10. Specifically, FIG. 14 illustrates a new worksheet 92 that is generated and displayed when the user double clicks on any cell in the data area of table 14. Newly created worksheet 92 displays the underlying data for the records in the selected cell. As illustrated in FIG. 14, the data is displayed in the columnar format, with each row representing one CRM record. Reporting module 8B adds the capability of drilling down into the records in order to view the CRM records via CRM application 4. When the user double clicks anywhere on a given row within the worksheet 92, CRM application 4 is automatically invoked and the record represented by the selected row is retrieved and displayed, as illustrated in FIG. 15. The records 94 may then be updated or otherwise manipulated by the user as normal within CRM application 4.
FIG. 16 illustrates an example user interface displayed by reporting module 8B when the user selects icon 90F from pivot table toolbar 80 in order to create CRM groups within CRM database 10. Grouping window 96 includes a group name input area 98 in which the user specifies the name for the group to be created. In addition, group window 96 includes a sort criteria input area 100 in which the user specifies the members of the group on which to sort. Reference field input area 102 allows the user to specify a field for which to use as a reference for the group.
Various embodiments of the invention have been described. These and other embodiments are within the scope of the following claims.

## Claims

1. A non-transitory computer-readable storage article having computer-executable instructions stored thereon to configure one or more programmable processors of a computing device comprising a database adapted to store customer relationship management (CRM) records containing CRM data, wherein the instructions configure the one or more programmable processors to:
execute a CRM software application and a spreadsheet software application;
access, with a reporting module associated with the CRM software application, one or more report templates;
access, with the reporting module associated with the CRM software application in response to a report generation request, a schema and data structures of the CRM database and access customized settings associated with the CRM software application;
display, with the reporting module associated with the CRM software application, a list of the report templates;
receive, with the reporting module associated with the CRM software application, a selection of one of the one or more report templates and, in response, present a set of database fields in accordance with the selected report template, receive a selection of one or more of the database fields, and generate a database query in accordance with the selected database fields;
invoke, with the reporting module associated with the CRM software application, the spreadsheet software application using an application programming interface (API) of the spreadsheet software application to automatically generate an electronic worksheet viewable within the spreadsheet software application and to automatically generate a pivot table within the electronic worksheet to access the CRM data of the CRM database in accordance with the query;
communicate report parameters from the CRM software application to the spreadsheet software application based on the schema and data structures of the CRM database and the customized settings associated with the CRM software application; and
generate, with the spreadsheet software application, the pivot table within the electronic worksheet to present the CRM data in accordance with the report parameters.

2. The non-transitory computer-readable storage article of claim 1 further comprising executable instruction to configure the one or more processors to:
receive, with the reporting module of the spreadsheet application, a selection of CRM data contained within the pivot table; and
in response to the selection, automatically create a second worksheet that arranges the CRM data as a number of rows in columnar format according to fields within the CRM database, wherein each row represents a single CRM record stored within the CRM database.

3. The non-transitory computer-readable storage article of claim 2, further comprising executable instructions to configure the reporting module of the spreadsheet application to, responsive to a selection of one or more of the rows of the second worksheet, automatically invoke the CRM software application from the spreadsheet application to display the corresponding CRM records of the selected one or more rows.

4. The non-transitory computer-readable storage article of claim 1, wherein the one or more programmable processors are configured to generate the pivot table as a software object generated within the computer-readable memory to store CRM data retrieved by execution of the database query.

5. The non-transitory computer-readable storage article of claim 1, wherein the one or more programmable processors are configured to generate the pivot table as a software object created within a worksheet software object.

6. The non-transitory computer-readable storage article of claim 1, wherein the programmable processor is configured to, by execution of the spreadsheet software application and in response to receiving the database query, manipulate a worksheet software object to create the pivot table as a pivot table software object within the memory of the computing system.

7. A method performed by a computing device configured to access a database storing customer relationship management (CRM) records containing CRM data, the method comprising:
executing a CRM software application and a spreadsheet software application;
accessing, with a reporting module associated with the CRM software application, one or more report templates;
accessing, with the reporting module associated with the CRM software application in response to a report generation request, a schema and data structures of the CRM database and access customized settings associated with the CRM software application;
displaying, with the reporting module associated with the CRM software application, a list of the report templates;
receiving, with the reporting module associated with the CRM software application, a selection of one of the one or more report templates and, in response, present a set of database fields in accordance with the selected report template, receive a selection of one or more of the database fields, and generate a database query in accordance with the selected database fields;
invoking, with the reporting module associated with the CRM software application, the spreadsheet software application using an application programming interface (API) of the spreadsheet software application to automatically generate an electronic worksheet viewable within the spreadsheet software application and to automatically generate a pivot table within the electronic worksheet to access the CRM data of the CRM database in accordance with the query;
communicating report parameters from the CRM software application to the spreadsheet software application based on the schema and data structures of the CRM database and the customized settings associated with the CRM software application; and
generating, with the spreadsheet software application, the pivot table within the electronic worksheet to present the CRM data in accordance with the report parameters.

8. The method of claim 7, further comprising:
outputting, with the spreadsheet application and in accordance with report parameters received from the reporting module associated with the CRM software application, CRM data contained within the pivot table;
receiving, with the spreadsheet application, a selection of the CRM data contained within the pivot table; and
in response to the selection, automatically creating a second worksheet that arranges the CRM data as a number of rows in columnar format according to fields within the CRM database, wherein each row represents a single CRM record stored within the CRM database.

9. The method of claim 8, further comprising:
receiving within the spreadsheet application a selection of one or more of the rows of the second worksheet; and
in response to the selection, automatically invoking the CRM software application from the spreadsheet application to display CRM records of the CRM database that correspond to the selected one or more rows.

10. The method of claim 7, further comprising executing one or more macros to format CRM data contained within the pivot table.

11. The method of claim 10, wherein executing the one or more macros includes formatting the electronic worksheet according to a report template.

12. The method of claim 7 further comprising:
receiving, with a reporting module associated with the spreadsheet application, input specifying one or more records to search for among the CRM data contained within the pivot table; and
creating, with the reporting module associated with the spreadsheet application, a group within the CRM database of the one or more records within the pivot table that are specified by the input.

13. The method of claim 7 further comprising:
receiving, with the spreadsheet application, a request to create a group within the CRM software application; and
in response to the request, automatically invoking functions within the CRM software application from the spreadsheet application to create the group consisting of CRM records within the CRM database.

14. The method of claim 7, wherein the pivot table is generated as a software object generated within a computer-readable memory to store CRM data retrieved by execution of the database query.

15. The method of claim 7, wherein the pivot table is generated as a software object created within a worksheet software object.

16. The method of claim 7, wherein the pivot table is generated by manipulating a worksheet software object to create the pivot table as a pivot table software object within a memory of a computing system.

17. A computing system comprising:
a database adapted to store customer relationship management (CRM) records containing CRM data;
a programmable processor coupled to a computer-readable memory,
wherein the programmable processor is configured to:
execute a CRM software application and a spreadsheet software application;
access, with a reporting module associated with the CRM software application, one or more report templates;
access, with the reporting module associated with the CRM software application in response to a report generation request, a schema and data structures of the CRM database and access customized settings associated with the CRM software application;
display, with the reporting module associated with the CRM software application, a list of the report templates;
receive, with the reporting module associated with the CRM software application, a selection of one of the one or more report templates and, in response, present a set of database fields in accordance with the selected report template, receive a selection of one or more of the database fields, and generate a database query in accordance with the selected database fields;
invoke, with the reporting module associated with the CRM software application, the spreadsheet software application using an application programming interface (API) of the spreadsheet software application to automatically generate an electronic worksheet viewable within the spreadsheet software application and to automatically generate a pivot table software object to access the CRM data of the CRM database in accordance with the query;
communicate report parameters from the CRM software application to the spreadsheet software application based on the schema and data structures of the CRM database and the customized settings associated with the CRM software application; and
generate, with the spreadsheet software application, the pivot table software object within the computer-readable memory in accordance with the report parameters.

18. The computing system of claim 17, wherein the pivot table software object comprises a software object created within a worksheet software object within the computer-readable memory.

19. The computing system of claim 17, wherein the programmable processor is configured to, by execution of the spreadsheet software application and in response to receiving the database query and the local field names, generate the pivot table software object by manipulating a worksheet software object to create the pivot table software object within the memory of the computing system.