Bagikan melalui


Mengakses data dalam dokumen di server

Anda bisa memprogram data dalam kustomisasi tingkat dokumen tanpa harus menggunakan model objek Microsoft Office Word atau Microsoft Office Excel. Ini berarti Anda bisa mengakses data yang terkandung dalam dokumen di server yang tidak memiliki Word atau Excel yang terinstal. Misalnya, kode di server (misalnya, di halaman ASP.NET) dapat menyesuaikan data dalam dokumen dan mengirim dokumen yang dikustomisasi ke pengguna akhir. Saat pengguna akhir membuka dokumen, kode pengikatan data dalam rakitan solusi mengikat data yang dikustomisasi ke dalam dokumen. Ini dimungkinkan karena data dalam dokumen dipisahkan dari antarmuka pengguna. Untuk informasi selengkapnya, lihat Data singgahan dalam kustomisasi tingkat dokumen.

Berlaku untuk: Informasi dalam topik ini berlaku untuk proyek tingkat dokumen untuk Excel dan Word. Untuk informasi selengkapnya, lihat Fitur yang tersedia berdasarkan aplikasi Office likasi dan jenis proyek.

Data cache untuk digunakan di server

Untuk menyimpan objek data dalam dokumen, tandai dengan CachedAttribute atribut pada waktu desain, atau gunakan StartCaching metode item host pada waktu proses. Saat Anda menyimpan objek data dalam dokumen, runtime Visual Studio Tools for Office membuat serialisasi objek ke dalam string XML yang disimpan dalam dokumen. Objek harus memenuhi persyaratan tertentu agar memenuhi syarat untuk penembolokan. Untuk informasi selengkapnya, lihat Data cache.

Kode sisi server dapat memanipulasi objek data apa pun dalam cache data. Kontrol yang terikat ke instans data yang di-cache disinkronkan dengan antarmuka pengguna, sehingga setiap perubahan sisi server yang dibuat pada data muncul secara otomatis ketika dokumen dibuka pada klien.

Mengakses data di cache

Anda dapat mengakses data dalam cache dari aplikasi di luar Office, misalnya dari aplikasi konsol, aplikasi Formulir Windows, atau halaman Web. Aplikasi yang mengakses data cache harus memiliki kepercayaan penuh; Aplikasi Web yang memiliki kepercayaan parsial tidak dapat menyisipkan, mengambil, atau mengubah data yang di-cache dalam dokumen Office.

Cache data dapat diakses melalui hierarki koleksi yang diekspos oleh CachedData properti ServerDocument kelas:

  • Properti CachedData mengembalikan CachedData, yang berisi semua data yang di-cache dalam kustomisasi tingkat dokumen.

  • Masing-masing CachedData berisi satu atau beberapa CachedDataHostItem objek. berisi CachedDataHostItem semua objek data yang di-cache yang ditentukan dalam satu kelas.

  • Masing-masing CachedDataHostItem berisi satu atau beberapa CachedDataItem objek. mewakili CachedDataItem satu objek data yang di-cache.

    Contoh kode berikut menunjukkan cara mengakses string yang di-cache di Sheet1 kelas proyek buku kerja Excel. Contoh ini adalah bagian dari contoh yang lebih besar yang disediakan untuk metode ini Save .

    serverDocument1 = new ServerDocument(documentPath);
    CachedDataHostItem hostItem1 = 
        serverDocument1.CachedData.HostItems["ExcelWorkbook1.Sheet1"];
    CachedDataItem dataItem1 = hostItem1.CachedData["CachedString"];
    

Mengubah data dalam cache

Untuk mengubah objek data yang di-cache, Anda biasanya melakukan langkah-langkah berikut:

  1. Deserialisasi representasi XML objek yang di-cache ke dalam instans baru objek. Anda dapat mengakses XML dengan menggunakan Xml properti CachedDataItem yang mewakili objek data yang di-cache.

  2. Buat perubahan pada salinan ini.

  3. Serialisasi objek yang diubah kembali ke cache data dengan menggunakan salah satu opsi berikut:

    • Jika Anda ingin menserialisasikan perubahan secara otomatis, gunakan SerializeDataInstance metode . Metode ini menggunakan format DiffGram untuk membuat serialisasi DataSet, , DataTabledan mengetik objek himpunan data dalam cache data. Format DiffGram memastikan bahwa perubahan pada cache data dalam dokumen offline dikirim ke server dengan benar.

    • Jika Anda ingin melakukan serialisasi Anda sendiri untuk perubahan pada data yang di-cache, Anda dapat menulis langsung ke Xml properti . Tentukan format DiffGram jika Anda menggunakan DataAdapter untuk memperbarui database dengan perubahan yang dibuat pada data dalam himpunan data , DataTable, atau yang ditikDataSet. Jika tidak, DataAdapter database akan diperbarui dengan menambahkan baris baru alih-alih memodifikasi baris yang sudah ada.

Mengubah data tanpa mendeserialisasi nilai saat ini

Dalam beberapa kasus, Anda mungkin ingin mengubah nilai objek yang di-cache tanpa terlebih dahulu mendeserialisasi nilai saat ini. Misalnya, Anda dapat melakukan ini jika Anda mengubah nilai objek yang memiliki jenis sederhana, seperti string atau bilangan bulat, atau jika Anda menginisialisasi cache DataSet dalam dokumen di server. Dalam kasus ini, Anda dapat menggunakan SerializeDataInstance metode tanpa terlebih dahulu mendeserialisasi nilai objek yang di-cache saat ini.

Contoh kode berikut menunjukkan cara mengubah nilai string yang di-cache di Sheet1 kelas proyek buku kerja Excel. Contoh ini adalah bagian dari contoh yang lebih besar yang disediakan untuk metode ini Save .

serverDocument1 = new ServerDocument(documentPath);
CachedDataHostItem hostItem1 = 
    serverDocument1.CachedData.HostItems["ExcelWorkbook1.Sheet1"];
CachedDataItem dataItem1 = hostItem1.CachedData["CachedString"];

if (dataItem1 != null &&
    Type.GetType(dataItem1.DataType) == typeof(string))
{
    dataItem1.SerializeDataInstance("This is the new cached string value.");
    serverDocument1.Save();
}

Mengubah nilai null dalam cache data

Cache data tidak menyimpan objek yang memiliki nilai null saat dokumen disimpan dan ditutup. Batasan ini memiliki beberapa konsekuensi saat Anda memodifikasi data cache:

  • Jika Anda mengatur objek apa pun dalam cache data ke nilai null, semua objek dalam cache data akan secara otomatis diatur ke null saat dokumen dibuka, dan seluruh cache data akan dihapus saat dokumen disimpan dan ditutup. Artinya, semua objek cache akan dihapus dari cache data, dan CachedData koleksi akan kosong.

  • Jika Anda membangun solusi dengan objek null di cache data dan Anda ingin menginisialisasi objek ini dengan menggunakan ServerDocument kelas sebelum dokumen dibuka untuk pertama kalinya, Anda harus memastikan bahwa Anda menginisialisasi semua objek dalam cache data. Jika Anda hanya menginisialisasi beberapa objek, semua objek akan diatur ke null saat dokumen dibuka, dan seluruh cache data akan dihapus saat dokumen disimpan dan ditutup.

Mengakses himpunan data yang diketik dalam cache

Jika Anda ingin mengakses data dalam himpunan data yang ditik baik dari solusi Office maupun dari aplikasi di luar Office, seperti aplikasi Formulir Windows atau proyek ASP.NET, Anda harus menentukan himpunan data yang di ketik dalam rakitan terpisah yang dirujuk di kedua proyek. Jika Anda menambahkan himpunan data yang ditik ke setiap proyek dengan menggunakan wizard Konfigurasi Sumber Data atau Perancang Himpunan Data, .NET Framework akan memperlakukan himpunan data yang ditik di dua proyek sebagai jenis yang berbeda. Untuk informasi selengkapnya tentang membuat himpunan data yang ditik, lihat Membuat dan mengonfigurasi himpunan data di Visual Studio.