Dokumen Penting
Pustaka .NET yang mampu membaca dan menulis file Microsoft Word. Komponen ini adalah model objek, mirip dengan perpustakaan kelas Microsoft Office COM. Komponen ini tidak menggunakan interop COM dan ditulis dalam C#. Jika Microsoft Word tidak diinstal pada sistem, Anda dapat mempertimbangkan komponen ini.
Buat dokumen MS Word baru: Mendukung pembuatan dokumen MS Word yang berisi teks, gambar, bagan, halaman, dan footer.
Pemformatan Dokumen: Mendukung pemformatan ke dalam laporan MS Word universal.
Pembuatan dokumen didasarkan pada templat: Untuk menghasilkan dokumen berdasarkan templat, Anda dapat menggunakan MS Word GUI untuk mendesain laporan dokumen, lalu menggunakan DocIO untuk mengisi data secara dinamis ke dalam file templat.
Properti Dokumen: Membaca dan menulis pengaturan properti dokumen Word.
Konversi: Mendukung konversi dokumen MS Word ke PDF menggunakan Essential PDF.
Fitur lanjutan: Mendukung penyalinan dan penggabungan beberapa dokumen MS Word menjadi satu dokumen.
Konversi HTML ke kata
byte statis publik[] ConvertHtmlToDoc(string html)
{
var dokumen = WordDocument baru();
Bagian IWSection = dokumen.AddSection();
IWParagraph para = bagian.AddParagraph();
string pesan kesalahan = "";
bool valid = section.Body.IsValidXHTML(html, XHTMLValidationType.Strict, keluar errorMessage);
jika (!sah)
melempar InvalidCastException baru(errorMessage + "<hr>" + html);
dokumen.XHTMLValidateOption = XHTMLValidationType.Strict;
bagian.Badan.SisipkanXHTML(html);
var outMem = MemoryStream baru();
dokumen.Simpan(outMem, FormatType.Doc);
outMem.Seek(0, SeekOrigin.Begin);
var konten = byte baru[outMem.Length];
outMem.Read(konten, 0, konten.Panjang);
outMem.Buang();
dokumen.Tutup();
mengembalikan konten;
}
Ganti teks tertentu saat membuat Word
/// <ringkasan>
/// Ganti teks yang ditentukan saat membuat Word
/// </ringkasan>
/// <param nama="templatePath"></param>
/// <param nama="NamaFile"></param>
/// <param nama="replaysDictionary"></param>
public static void GantiDocContent(string templateFileName, string newFileName,
Kamus<string, string> replaysDictionary)
{
Dokumen IWordDocument = WordDocument baru();
dokumen.Buka(templateFileName, FormatType.Doc);
foreach (var rd di replaysDictionary)
{
if (string.IsNullOrEmpty(document.GetText())) lanjutkan;
document.Replace(rd.Key, rd.Value, false, false);
sementara (dokumen.GetText().IndexOf(rd.Key) != -1)
document.Replace(rd.Key, rd.Value, false, false);
}
document.Save(newFileName, FormatType.Doc);
}
Dokumen yang dilindungi kata sandi
Aliran statis publik SetDocProtect(byte[] docContent, kunci string)
{
var mem = MemoryStream baru(docContent);
mem.Seek(0, SeekOrigin.Begin);
Dokumen IWordDocument = WordDocument baru (mem, FormatType.Automatic);
document.Protect(ProtectionType.AllowOnlyFormFields, kunci);
var outMem = MemoryStream baru();
dokumen.Simpan(outMem, FormatType.Doc);
outMem.Seek(0, SeekOrigin.Begin);
kembali keluarMem;
}
Buat tabel di lokasi bookmark
IWTable Ganti Tabel statis publik (dokumen WordDocument, string bookmarkName, data DataTable, string mergeColName, Daftar<Daftar<string>> mutilTableCaption)
{
if (dokumen == null) throw new ArgumentNullException("document");
if (bookmarkName == null) throw new ArgumentNullException("bookmarkName");
if (data == null) lempar ArgumentNullException baru("data");
if (data.Columns.Count < 1) throw new ArgumentNullException("data");
int captionCount = mutilTableCaption != null && mutilTableCaption.Count > 0 ? mutilTableCaption.Count : 1;
Tabel WTable = WTable baru(dokumen, benar);
tabel.ResetCells(data.Rows.Count + captionCount, data.Columns.Count);
untuk (var colCount = 0; colCount < captionCount; colCount++)
{
untuk (var col = 0; col < data.Columns.Count; col++)
{
var paragraf = tabel.Baris[colCount].Sel[col].AddParagraph();
var caption = data.Kolom[col].NamaKolom;
jika (mutilTableCaption != null && mutilTableCaption.Hitungan > 0)
keterangan = mutilTableCaption[colCount][col];
var teks = paragraf.AppendText(caption);
paragraf.ParagraphFormat.HorizontalAlignment = Syncfusion.DocIO.DLS.HorizontalAlignment.Center;
teks.CharacterFormat.FontName = "宋体";
teks.CharacterFormat.Bold = false;
teks.CharacterFormat.FontSize = 10.5f;
}
}
untuk (var baris = captionCount; baris <= data.Rows.Count; baris++)
untuk (var col = 0; col < data.Columns.Count; col++)
{
var paragraf = tabel.Baris[baris].Sel[col].AddParagraph();
var text = paragraf.AppendText(data.Rows[row - captionCount][col] + "");
teks.CharacterFormat.FontName = "宋体";
teks.CharacterFormat.FontSize = 9f;
val ganda = 0;
if (double.TryParse(teks.Teks, nilai keluar))
{
teks.Teks = Matematika.Bulat(val, 2) + "";
//sejajarkan ke kanan
paragraf.ParagraphFormat.HorizontalAlignment = Syncfusion.DocIO.DLS.HorizontalAlignment.Right;
tabel.Baris[baris].Sel[col].CellFormat.VerticalAlignment = VerticalAlignment.Middle;
tabel.Baris[baris].Sel[col].CellFormat.TextWrap = false;
}
}
//Gabungkan sel, gabungkan ke bawah
jika (!string.IsNullOrEmpty(mergeColName))
untuk (var baris = captionCount; baris < tabel.Rows.Count; baris++)
{
var sel = tabel.Baris[baris].Sel[data.Kolom[mergeColName].Ordinal];
sel.CellFormat.VerticalMerge = CellMerge.Mulai;
var teks = data.Baris[baris - captionCount][mergeColName] + "";
if (baris > jumlah keterangan)
{
var priorCell = tabel.Baris[baris - captionCount].Sel[data.Kolom[mergeColName].Ordinal];
var findText = data.Baris[baris - captionCount - 1][mergeColName] + "";
if (teks.Sama dengan(findText))
sel.CellFormat.VerticalMerge = CellMerge.Lanjutkan;
}
}
BookmarksNavigator bk = BookmarksNavigator baru(dokumen);
bk.MoveToBookmark(namabookmark);
TextBodyPart badan= bk.GetBookmarkContent();
bk.DeleteBookmarkContent(benar);
bk.InsertTable(tabel);
meja pengembalian;
}
-