Abstract: A method, apparatus, and computer-readable medium are provided for merging data from multiple data sources for use m an electromc document The method mcludes receiving field names and field data from an initial data source, mapping field names from a subsequently added data source to the initial data source, building a recipient hst schema based on the field names from the initial data source and the mapped field names from the subsequently added data source, creating a recipient list according to the recipient list schema, and saving the recipient list to a file The recipient list schema defines the relationships between the field names m the recipient list and the field names in the initial and subsequently added data sources
METHOD, SYSTEM, AND COMPUTER-READABLE MEDIUM FOR MERGING DATA FROM MULTIPLE DATA SOURCES FOR USE IN AN
ELECTRONIC DOCUMENT
BACKGROUND OF THE INVENTION
Modem desktop publishing applications enable a user to readily create electronic documents One feature available in many desktop publishing applications for creatmg electronic documents is known as "mail merge " Mail merge automates the process of creatmg vanable data documents by allowmg users to connect to and merge data from a single data source In utilizing the mail merge feature, data is pulled from a single data source (such as a mailing list) and inserted at marked locations in a document
One drawback associated with the mail merge feature offered by modem desktop publishing applications is that users often store data (such as mailing lists) in disparate formats and m multiple locations in a computer system For instance, a user may store one list of contacts as a contacts file which is readable by a contact manager program while another list of contacts may be stored as a spreadsheet file which is readable by a spreadsheet program Thus, users are often required to assemble data in disparate formats from multiple sources into a single data source to utilize the mail merge feature offered by desktop publishing applications
It is with respect to these considerations and others that the various embodiments of the present invention have been made
BRIEF SUMMARY OF THE INVENTION In accordance with the present invention, the above and other problems are solved by a method, system, and computer-readable medium for merging data from multiple data sources for use in an electronic document According to one aspect of the invention, the method includes receiving field names and field data from an initial data source, mapping field names from a subsequently added data source to the initial data
source, and building a recipient list schema based on the field names from the initial data source and the mapped field names from the subsequently added data source The recipient list schema defines the relationships between the field names in the recipient list and the field names in the initial and subsequently added data sources The building of the recipient list includes companng the mapped field names from the subsequently added data source to the field names from the initial data source and, if any of the mapped field names from the subsequently added data source do not correspond to the field names from the initial data source, then the method includes adding the mapped field names
The method further mcludes creating a recipient list according to the recipient list schema, and saving a file that allows for the recipient list to be re-created The creation of the recipient list according to the recipient list schema may include adding rows of field data from the subsequently added data source to a temporary recipient list to create a master data source and calculating a hash value for each row of field data in the master data source The saved updated recipient list file may mclude a reference to the initial data source, a reference to the subsequently added data source, and the hash value calculated for each of the rows of field data in the master data source The method may further mclude modifying the recipient list to modify the field data in the initial data source and the field data in the subsequently added data source and resolving duplicates between the initial data source and the subsequently added data source in the recipient list
The invention may be implemented as a computer process, a computing system, or as an article of manufacture such as a computer program product or computer readable media The computer program product may be a computer storage media readable by a computer system and encoding a computer program of instructions for executing a computer process The computer program product may also be a propagated signal on a carrier readable by a computing system and encoding a computer program of instructions for executing a computer process
These and vanous other features, as well as advantages, which characterize the present invention, will be apparent from a readmg of the following detailed description and a review of the associated drawings
BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS FIGURE 1 is a computer system architecture diagram illustrating a computer system utilized in and provided by the vanous embodiments of the invention,
FIGURE 2 is an illustrative routine performed by a desktop publishing application in the computer system of FIGURE 1 for merging data from multiple data sources, according to an illustrative embodiment of the invention, and
FIGURES 3-6 are screen diagrams illustrating an aspect of the invention for providing a facility through which a user may merge data and manage merged data from multiple data sources, according to the vanous embodiments of the invention
DETAILED DESCRIPTION OF THE INVENTION Referring now to the drawings, in which like numerals represent like elements, vanous aspects of the present invention will be descnbed In particular, FIGURE 1 and the corresponding discussion are intended to provide a bnef, general descnption of a suitable computing environment m which embodiments of the invention may be implemented While the invention will be descnbed in the general context of program modules that execute in conjunction with program modules that run on an operating system on a personal computer, those skilled in the art will recognize that the invention may also be implemented in combination with other types of computer systems and program modules
Generally, program modules include routines, programs, components, data structures, and other types of structures that perform particular tasks or implement particular abstract data types Moreover, those skilled in the art will appreciate that the invention may be practiced with other computer system configurations, including handheld devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, and the like The
invention may also be practiced in distnbuted computing environments where tasks are performed by remote processmg devices that are linked through a communications network In a distnbuted computing environment, program modules may be located in both local and remote memory storage devices
Referring now to FIGURE 1, an illustrative computer architecture for a computer 2 utilized in the various embodiments of the invention will be described The computer architecture shown in FIGURE 1 illustrates a conventional desktop or laptop computer, mcludmg a central processmg umt 5 ("CPU"), a system memory 7, mcludmg a random access memory 9 ("RAM") and a read-only memory ("ROM") 11, and a system bus 12 that couples the memory to the CPU 5 A basic input/output system containing the basic routines that help to transfer information between elements within the computer, such as during startup, is stored in the ROM 11 The computer 2 further includes a mass storage device 14 for storing an operating system 16, application programs, and other program modules, which will be descnbed in greater detail below
The mass storage device 14 is connected to the CPU 5 through a mass storage controller (not shown) connected to the bus 12 The mass storage device 14 and its associated computer-readable media provide non-volatile storage for the computer 2 Although the description of computer-readable media contained herein refers to a mass storage device, such as a hard disk or CD-ROM drive, it should be appreciated by those skilled in the art that computer-readable media can be any available media that can be accessed by the computer 2
By way of example, and not limitation, computer-readable media may comprise computer storage media and communication media Computer storage media includes volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules or other data Computer storage media includes, but is not limited to, RAM, ROM, EPROM, EEPROM, flash memory or other solid state memory technology, CD-ROM, digital versatile disks ("DVD"), or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other
magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by the computer 2
According to various embodiments of the invention, the computer 2 may operate in a networked environment using logical connections to remote computers through a network 18, such as the Internet The computer 2 may connect to the network 18 through a network interface unit 20 connected to the bus 12 It should be appreciated that the network interface unit 20 may also be utilized to connect to other types of networks and remote computer systems The computer 2 may also include an input/output controller 22 for receiving and processmg input from a number of other devices, including a keyboard, mouse, or electronic stylus (not shown in FIGURE 1) Similarly, an mput/output controller 22 may provide output to a display screen, a pnnter, or other type of output device
As mentioned briefly above, a number of program modules and data files may be stored in the mass storage device 14 and RAM 9 of me computer 2, including an operating system 16 suitable for controlling the operation of a networked personal computer, such as the WINDOWS XP operating system from MICROSOFT CORPORATION of Redmond, Washington The mass storage device 14 and RAM 9 may also store one or more program modules In particular, the mass storage device 14 and the RAM 9 may store a desktop publishing application 10 As known to those skilled in the art, the desktop publishing application 10 is operative to provide functionality for creating and editing electronic documents According to one embodiment of the invention, the desktop publishing application 10 comprises the PUBLISHER word processmg application program from MICROSOFT CORPORATION It should be appreciated, however, that desktop publishing applications from other manufacturers may be utilized to embody the various aspects of the present invention It should further be appreciated that the various aspects of the present invention are not limited to desktop publishing apphcations but may also utilize other programs which are capable of processing text, such as the WORD program from MICROSOFT CORPORATION as well as spreadsheet programs and database programs
In conjunction with the creation of a, the desktop publishing application 10 provides functionality for allowing a user to merge data sources 26 (Data Source 1), 28 (Data Source 2), and 30 (Data Source N) mto various locations of an electronic document It will be appreciated that the each of the data sources 26,28, and 30 may be a hst or table of data divided mto one or more fields For instance, a data source may store contact information including names, companies, and addresses in data fields "Last Name," "First Name," 'Title," "Company Name," and "Address " It should be understood that in merging multiple data sources, the desktop publishing application 10 creates a recipient list file 24 for storing the merged data An illustrative method utilized by the desktop publishing application 10 for merging the data sources 26 (Data Source 1), 28 (Data Source 2), and 30 (Data Source N) to create the recipient list file 24 will be described m greater detail with respect to FIGURE 2, below
Referring now to FIGURE 2, an illustrative routine 200 will be described illustrating a process performed by the desktop publishing application 10 for merging data from multiple data sources It should be appreciated that although the embodiments of the invention described herein are presented in the context of the desktop publishing application 10, the invention may be utilized in other types of application programs that support text processing, such as word processing, spreadsheet, and database programs
When reading the discussion of the routines presented herem, it should be appreciated that the logical operations of various embodiments of the present invention are implemented (1) as a sequence of computer implemented acts or program modules running on a computing system and/or (2) as interconnected machine logic circuits or circuit modules within the computing system The implementation is a matter of choice dependent on the performance requirements of the computing system implementing the invention Accordingly, the logical operations illustrated in FIGURE 2, and making up the embodiments of the present invention described herem are referred to variously as operations, structural devices, acts or modules It will be recognized by one skilled in the art that these operations, structural devices, acts and modules may be implemented in software, in firmware, in special purpose digital logic, and any combination thereof
without deviating from the spirit and scope of the present invention as recited within the claims set forth herein
Referring now to FIGURE 2, the routine 200 begins at operation 210, wherein the desktop publishing apphcation 10 receives data sources 26 (Data Source 1), 28 (Data Source 2), and 28 (Data Source N) and "maps" the fields in each of the data sources In particular, in mapping the fields in each of the data sources, the desktop publishing apphcation 10 may retrieve a first data source as an initial data source, associate fields from each subsequent retrieved data source with the fields of the initial data source, and add fields in the subsequent data source which do not appear m the initial data source For instance, the data source 26 (Data Source 1) may include data fields "First Name," and "Last Name," while data source 28 (Data Source 2) may include data fields "First Name," "Last Name," and 'Title " In mapping the data fields, the word processing application program may designate the data source 26 as the initial data source and map the common fields (l e, "First Name" and "Last Name") shared by the data sources as well as add the unique field "Title" from the data source 28 It will be appreciated that in the various embodiments of the invention, a user of the desktop publishing application 10 may designate the fields from subsequent data sources (e g, the data source 28) to be mapped or added to the initial data source It will further be appreciated that that mapped fields may also be un-mapped
The routine 200 continues from operation 210 to operation 220, where the desktop publishing apphcation 10 builds a recipient list (l e, a master data source) schema from the mapped fields from data sources 26,28, and 30 As defined herein, a "schema" defines the field names mapped from each of the input data sources For instance, a recipient list schema for the data source 26 and the data source 28 may include the fields "First Name," and "Last Name" (from the data sources 26 and 28) as well as the field 'Title" (from the data source 28 only)
The routine 200 continues from operation 220 to operation 230 where the desktop publishing application 10 creates a temporary recipient list from the recipient list schema In particular, the desktop pubhshing application 10 may create a table of fields from the recipient list schema to receive data associated with the fields from each
of the input data sources The routine 200 continues from operation 230 to operation 240 where the desktop publishing application 10 retneves one or more rows of data from each of the input data sources to create a recipient list In particular, the desktop publishing application 10 retneves data from each data source and fills the temporary recipient list according to the recipient list schema
The routine 200 continues from operation 240 to operation 250 where the desktop publishing application 10 creates a hash for each row in the recipient list As is known to those skilled in the art, a hash is a number generated from a stnng of text which may be used to access data methods The hash (or hash value) is generated by a formula in such a way that it is extremely unlikely that some other text will produce the same hash value Vanous methods for generating hash values are well-known to those stalled in the art, and therefore not discussed in further detail herein It will be appreciated that the hash serves as a link to data in the input data sources may be used to distinguish the merged data in the recipient list
The routine 200 continues from operation 250 to operation 260 where the desktop publishing application 10 saves the recipient list to a file (such as the recipient list file 24) It will be appreciated that in saving the recipient list, a file is created which allows for the recipient list to be re-created It will be further be appreciated that the recipient list file 24 may include a reference to the initial data source, a reference to each subsequent or added data source, and the hash value calculated for each of the rows of field data in the recipient list The routine 200 continues from operation 260 to operation 270 where the desktop publishing application 10 modifies the recipient list in response to input from a user In particular, a user may update data in the recipient list by changing or removing data It will be appreciated that the modification in the recipient list also modifies the data in the supplying data source For instance, a user modifying last name data in the recipient list retneved from the data source 26 will result in the modification of the same last name data in the data source 26 It will be appreciated that in modifying data in the recipient list, the desktop publishing application 10 may reference the hash value calculated for each modified row of data in
the recipient list to locate and update the corresponding data in the affected data sources
The routine 200 continues from operation 270 to operation 280 where the desktop pubhshing application 10 resolves duphcate data in the recipient list In particular, it will be appreciated that the data sources 26, 28, and 30 may include identical data which may show up as duplicate entries in the recipient list For instance, a user may have name and address information for the same person listed in two different data sources
It will be appreciated that in one embodiment, the desktop pubhshing application 10 may be configured to locate duplicate data entries by creating a hash table of the hash values from the recipient list and comparing the data entries which two hash values point to In the various illustrative embodiments of the invention, duplicates may be found by comparing every row with every other row The hash value calculated for each row is stored in memory It should be understood that one hash value is stored for every column in every row The hash values are then compared When two data entries match their hash values will also match When two rows satisfy predetermined duplicate rules (e g, 75% of the data in two rows must match), they are loaded from the master data source and the actual data entries are compared by a user to determine if they are in fact duplicates of one another The routine 200 then ends
Referring now to FIGURE 3, an illustrative user interface will be descnbed for allowing a user to map a data source to a recipient hst schema FIGURE 3 shows a user interface window 300 including a number of user interface components for mapping fields from a data source In particular, a window 40 displays fields from a data source which may be mapped to a recipient list schema by dragging them from the window 40 and dropping them into the field 42 or into the field 44 Fields added to the window 44 will be added as a new column in the recipient list schema A mapping may be undone by dragging fields from the window 42 or 44 to the window 40 A default map button 46 is provided for selecting a default mapping of the fields from the data source which is automatically determined by the desktop publishing application 10
Referring now to FIGURE 4, an illustrative user interface will be described which displays a recipient list created from two data sources FIGURE 4 shows a user interface window 400 displaymg a recipient list along with rows of mapped fields and associated data The window 52 identifies the data sources used to create the recipient list Links 54 and 56 are provided for adding a data source to the recipient list from a file, database, or from a contacts list Link 58 is provided for creating a data source by typing a new list
Referring now to FIGURE 5, an illustrative user interface will be described for allowing a user to edit a data source FIGURE 5 shows a user interface window 500 displaymg a data source table 60 along with rows of filed data An add new entry button 62 is provided for adding a new entry to the data source table 60 and a delete entry button 64 is provided for deleting a displayed entry m the data source table 60 It will be appreciated that the user interface window 500 may include mapped data or copied data from a recipient list which is linked to an original data source stored in another location such that changes will be propagated back to the original data source
Referring now to FIGURE 6, an illustrative user interface will be described for allowing a user to remove duplicates found m a recipient list by the desktop publishing application 10 as discussed above with respect to FIGURE 2 FIGURE 6 shows a user interface 600 displaymg a data source table 70 listing duplicate data entries A column of check boxes 72 is provided for allowing a user to select entries to be removed from the recipient list
Based on the foregoing, it should be appreciated that the various embodiments of the invention include a method, system, and computer-readable medium for merging data from multiple data sources for use in an electronic document The above specification, examples and data provide a complete description of the manufacture and use of the composition of the invention Since many embodiments of the invention can be made without departing from the spirit and scope of the invention, the invention resides in the claims hereinafter appended
WE CLAIM
1 A method for merging data from a plurality of data sources for use in an
electronic document, comprising
receiving field names and field data from an initial data source, mapping field names from at least one subsequently added data source to
the initial data source,
building a recipient list schema based on the field names from the initial
data source and the mapped field names from the at least one subsequently added data
source,
creating a recipient list according to the recipient list schema, and saving the recipient list to a file, wherein saving the recipient hst to a file
comprises saving a file which allows for the recipient list to be re-created
2 The method of claim 1, further comprising generating a temporary recipient list for receiving field data from the at least one subsequently added data source and the field data from the initial data source
3 The method of claim 1, wherein building a recipient hst schema based on the field names from the initial data source and the mapped field names from the at least one subsequently added data source comprises
comparing the mapped field names from the at least one subsequently added data source to the field names from the initial data source, and
if any of the mapped field names from the at least one subsequently added data source do not correspond to the field names from the initial data source, then adding the mapped field names
4 The method of claim 2, wherein creating the recipient list according to
the recipient list schema comprises
adding at least one row of field data from the at least one new data
source to the temporary recipient list to create a master data source, the master data source comprising a plurality of rows of master field data, and
calculating a hash value for each of the plurality of rows of master field data in the master data source
5 The method of claim 1 further comprising modifying the recipient list to modify the field data in the initial data source and the field data in the at least one subsequently added data source
6 The method of claim 1 further comprising resolving duplicates between the initial data source and the at least one subsequently added data source in the recipient list
7 A system for merging data from a plurality of data sources for use in an electronic document, comprising a client computer operative to execute an application program for consuming data from the plurality of data sources, the application further operative to receive field names and field data from an initial data source, map field names from at least one subsequently added data source to the initial data source, building a recipient list schema based on the field names from the initial data source and the mapped field names from the at least one subsequently added data source, create a recipient list according to the recipient list schema, and to save the recipient list to a file
8 The system of claim 7, wherein the application program is further operative to generate a temporary recipient list for receiving field data from the at least one subsequently added data source and the field data from the initial data source
9 The system of claim 7, wherein building a recipient list schema based on the field names from the initial data source and the mapped field names from the at least one subsequently added data source compnses
comparing the mapped field names from the at least one subsequently added data source to the field names from the initial data source, and
if any of the mapped field names from the at least one subsequently added data source do not correspond to the field names from the initial data source, then adding the mapped field names
10 The system of claim 8, wherein creating the recipient list according to
the recipient list schema comprises
adding at least one row of field data from the at least one new data source to the temporary recipient list to create a master data source, the master data source comprising a plurality of rows of master field data, and
calculating a hash value for each of the plurality of rows of master field data in the master data source
11 The system of claim 7, wherein the application program is further operative to modify the recipient list to modify the field data in the initial data source and the field data in the at least one subsequently added data source
12 The system of claim 7, wherein the application program is further operative to resolve duphcates between the initial data source and the at least one subsequently added data source m the recipient list
13 The system of claim 10, wherein the saved updated recipient list file comprises
a reference to the initial data source,
a reference to the at least one subsequently added data source, and the hash value calculated for each of the plurality of rows of master field data in the master data source
14 A computer-readable medium having computer-executable instructions
stored thereon which, when executed by a computer, will cause the computer to perform
a method for mergmg data from a plurality of data sources for use in an electromc
document, the method comprising
receiving field names and field data from an initial data source, mapping field names from at least one subsequently added data source to
the initial data source,
building a recipient list schema based on the field names from the initial
data source and the mapped field names from the at least one subsequently added data
source,
creating a recipient list according to the recipient list schema, and saving the recipient list to a file, wherein saving the recipient list to a file
comprises saving a file which allows for the recipient list to be re-created
15 The computer readable medium of claim 14, further comprising generating a temporary recipient list for receiving field data from the at least one subsequently added data source and the field data from the initial data source
16 The computer readable medium of claim 14, wherein building a recipient list schema based on the field names from the lmbal data source and the mapped field names from the at least one subsequently added data source comprises
comparing the mapped field names from the at least one subsequently added data source to the field names from the initial data source, and
if any of the mapped field names from the at least one subsequently added data source do not correspond to the field names from the initial data source, then adding the mapped field names
17 The computer readable medium of claim 15, wherein updating the
recipient list according to the recipient list schema comprises
adding at least one row of field data from the at least one new data
source to the temporary recipient list to create a master data source, the master data source comprising a plurality of rows of master field data, and
calculating a hash value for each of the plurality of rows of master field data in the master data source
18 The computer readable medium of claim 14 further comprising modifying the recipient list to modify the field data in the imtial data source and the field data in the at least one subsequently added data source
19 The computer readable medium of claim 14 further comprising resolving duplicates between the imtial data source and the at least one subsequently added data source m the recipient list
| # | Name | Date |
|---|---|---|
| 1 | 2127-DEL-2005-GPA-(14-06-2010).pdf | 2010-06-14 |
| 1 | 2127-DEL-2005.pdf | 2016-06-30 |
| 2 | 2127-DEL-2005-Correspondence-Others-(14-06-2010).pdf | 2010-06-14 |
| 2 | 2127-del-2005-abstract.pdf | 2011-08-21 |
| 3 | 2127-DEL-2005-Form-1-(02-12-2010).pdf | 2010-12-02 |
| 3 | 2127-del-2005-assignment.pdf | 2011-08-21 |
| 4 | 2127-DEL-2005-Correspondence-Others-(02-12-2010).pdf | 2010-12-02 |
| 4 | 2127-del-2005-claims.pdf | 2011-08-21 |
| 5 | 2127-del-2005-gpa.pdf | 2011-08-21 |
| 5 | 2127-del-2005-correspondence-others.pdf | 2011-08-21 |
| 6 | 2127-del-2005-form-5.pdf | 2011-08-21 |
| 6 | 2127-del-2005-description (complete).pdf | 2011-08-21 |
| 7 | 2127-del-2005-form-2.pdf | 2011-08-21 |
| 7 | 2127-del-2005-drawings.pdf | 2011-08-21 |
| 8 | 2127-del-2005-form-18.pdf | 2011-08-21 |
| 8 | 2127-del-2005-form-1.pdf | 2011-08-21 |
| 9 | 2127-del-2005-form-18.pdf | 2011-08-21 |
| 9 | 2127-del-2005-form-1.pdf | 2011-08-21 |
| 10 | 2127-del-2005-drawings.pdf | 2011-08-21 |
| 10 | 2127-del-2005-form-2.pdf | 2011-08-21 |
| 11 | 2127-del-2005-form-5.pdf | 2011-08-21 |
| 11 | 2127-del-2005-description (complete).pdf | 2011-08-21 |
| 12 | 2127-del-2005-gpa.pdf | 2011-08-21 |
| 12 | 2127-del-2005-correspondence-others.pdf | 2011-08-21 |
| 13 | 2127-DEL-2005-Correspondence-Others-(02-12-2010).pdf | 2010-12-02 |
| 13 | 2127-del-2005-claims.pdf | 2011-08-21 |
| 14 | 2127-DEL-2005-Form-1-(02-12-2010).pdf | 2010-12-02 |
| 14 | 2127-del-2005-assignment.pdf | 2011-08-21 |
| 15 | 2127-DEL-2005-Correspondence-Others-(14-06-2010).pdf | 2010-06-14 |
| 15 | 2127-del-2005-abstract.pdf | 2011-08-21 |
| 16 | 2127-DEL-2005.pdf | 2016-06-30 |
| 16 | 2127-DEL-2005-GPA-(14-06-2010).pdf | 2010-06-14 |