日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > C# >内容正文

C#

c html转换成word,C#实现HTML转WORD及WORD转PDF的方法

發(fā)布時間:2025/3/15 C# 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c html转换成word,C#实现HTML转WORD及WORD转PDF的方法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文實例講述了C#實現(xiàn)HTML轉(zhuǎn)WORD及WORD轉(zhuǎn)PDF的方法。分享給大家供大家參考。具體如下:

功能:實現(xiàn)HTML轉(zhuǎn)WORD,WORD轉(zhuǎn)PDF

具體代碼如下:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using Word = Microsoft.Office.Interop.Word;

using oWord = Microsoft.Office.Interop.Word;

using System.Reflection;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using Microsoft.Office.Core;

using System.Text.RegularExpressions;

namespace WindowsApplication2

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

object oMissing = System.Reflection.Missing.Value;

object oEndOfDoc = "\\endofdoc"; /* \endofdoc is a predefined bookmark */

//Start Word and create a new document.

Word._Application oWord;

Word._Document oDoc;

oWord = new Word.Application();

oWord.Visible = true;

oDoc = oWord.Documents.Add(ref oMissing, ref oMissing,

ref oMissing, ref oMissing);

//Insert a paragraph at the beginning of the document.

Word.Paragraph oPara1;

oPara1 = oDoc.Content.Paragraphs.Add(ref oMissing);

oPara1.Range.Text = "Heading 1";

oPara1.Range.Font.Bold = 1;

oPara1.Format.SpaceAfter = 24; //24 pt spacing after paragraph.

oPara1.Range.InsertParagraphAfter();

//Insert a paragraph at the end of the document.

Word.Paragraph oPara2;

object oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;

oPara2 = oDoc.Content.Paragraphs.Add(ref oRng);

oPara2.Range.Text = "Heading 2";

oPara2.Format.SpaceAfter = 6;

oPara2.Range.InsertParagraphAfter();

//Insert another paragraph.

Word.Paragraph oPara3;

oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;

oPara3 = oDoc.Content.Paragraphs.Add(ref oRng);

oPara3.Range.Text = "This is a sentence of normal text. Now here is a table:";

oPara3.Range.Font.Bold = 0;

oPara3.Format.SpaceAfter = 24;

oPara3.Range.InsertParagraphAfter();

//Insert a 3 x 5 table, fill it with data, and make the first row

//bold and italic.

Word.Table oTable;

Word.Range wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;

oTable = oDoc.Tables.Add(wrdRng, 3, 5, ref oMissing, ref oMissing);

oTable.Range.ParagraphFormat.SpaceAfter = 6;

int r, c;

string strText;

for (r = 1; r <= 3; r++)

for (c = 1; c <= 5; c++)

{

strText = "r" + r + "c" + c;

oTable.Cell(r, c).Range.Text = strText;

}

oTable.Rows[1].Range.Font.Bold = 1;

oTable.Rows[1].Range.Font.Italic = 1;

//Add some text after the table.

Word.Paragraph oPara4;

oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;

oPara4 = oDoc.Content.Paragraphs.Add(ref oRng);

oPara4.Range.InsertParagraphBefore();

oPara4.Range.Text = "And here's another table:";

oPara4.Format.SpaceAfter = 24;

oPara4.Range.InsertParagraphAfter();

//Insert a 5 x 2 table, fill it with data, and change the column widths.

wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;

oTable = oDoc.Tables.Add(wrdRng, 5, 2, ref oMissing, ref oMissing);

oTable.Range.ParagraphFormat.SpaceAfter = 6;

for (r = 1; r <= 5; r++)

for (c = 1; c <= 2; c++)

{

strText = "r" + r + "c" + c;

oTable.Cell(r, c).Range.Text = strText;

}

oTable.Columns[1].Width = oWord.InchesToPoints(2); //Change width of columns 1 & 2

oTable.Columns[2].Width = oWord.InchesToPoints(3);

//Keep inserting text. When you get to 7 inches from top of the

//document, insert a hard page break.

object oPos;

double dPos = oWord.InchesToPoints(7);

oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range.InsertParagraphAfter();

do

{

wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;

wrdRng.ParagraphFormat.SpaceAfter = 6;

wrdRng.InsertAfter("A line of text");

wrdRng.InsertParagraphAfter();

oPos = wrdRng.get_Information

(Word.WdInformation.wdVerticalPositionRelativeToPage);

}

while (dPos >= Convert.ToDouble(oPos));

object oCollapseEnd = Word.WdCollapseDirection.wdCollapseEnd;

object oPageBreak = Word.WdBreakType.wdPageBreak;

wrdRng.Collapse(ref oCollapseEnd);

wrdRng.InsertBreak(ref oPageBreak);

wrdRng.Collapse(ref oCollapseEnd);

wrdRng.InsertAfter("We're now on page 2. Here's my chart:");

wrdRng.InsertParagraphAfter();

//Insert a chart.

Word.InlineShape oShape;

object oClassType = "MSGraph.Chart.8";

wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;

oShape = wrdRng.InlineShapes.AddOLEObject(ref oClassType, ref oMissing,

ref oMissing, ref oMissing, ref oMissing,

ref oMissing, ref oMissing, ref oMissing);

//Demonstrate use of late bound oChart and oChartApp objects to

//manipulate the chart object with MSGraph.

object oChart;

object oChartApp;

oChart = oShape.OLEFormat.Object;

oChartApp = oChart.GetType().InvokeMember("Application",

BindingFlags.GetProperty, null, oChart, null);

//Change the chart type to Line.

object[] Parameters = new Object[1];

Parameters[0] = 4; //xlLine = 4

oChart.GetType().InvokeMember("ChartType", BindingFlags.SetProperty,

null, oChart, Parameters);

//Update the chart image and quit MSGraph.

oChartApp.GetType().InvokeMember("Update",

BindingFlags.InvokeMethod, null, oChartApp, null);

oChartApp.GetType().InvokeMember("Quit",

BindingFlags.InvokeMethod, null, oChartApp, null);

//... If desired, you can proceed from here using the Microsoft Graph

//Object model on the oChart and oChartApp objects to make additional

//changes to the chart.

//Set the width of the chart.

oShape.Width = oWord.InchesToPoints(6.25f);

oShape.Height = oWord.InchesToPoints(3.57f);

//Add text after the chart.

wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;

wrdRng.InsertParagraphAfter();

wrdRng.InsertAfter("THE END.");

//Close this form.

this.Close();

}

private void button2_Click(object sender, EventArgs e)

{

string s = "";

if (openFileDialog1.ShowDialog() == DialogResult.OK)

{

s = openFileDialog1.FileName;

}

else

{

return;

}

// 在此處放置用戶代碼以初始化頁面

Word.ApplicationClass word = new Word.ApplicationClass();

Type wordType = word.GetType();

Word.Documents docs = word.Documents;

// 打開文件

Type docsType = docs.GetType();

object fileName = s;

Word.Document doc = (Word.Document)docsType.InvokeMember("Open",

System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] { fileName, false, false });

// 轉(zhuǎn)換格式,另存為

Type docType = doc.GetType();

object saveFileName = "d:\\Reports\\aaa.doc";

//下面是Microsoft Word 9 Object Library的寫法,如果是10,可能寫成:

/*

docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod,

null, doc, new object[]{saveFileName, Word.WdSaveFormat.wdFormatFilteredHTML});

*/

///其它格式:

///wdFormatHTML

///wdFormatDocument

///wdFormatDOSText

///wdFormatDOSTextLineBreaks

///wdFormatEncodedText

///wdFormatRTF

///wdFormatTemplate

///wdFormatText

///wdFormatTextLineBreaks

///wdFormatUnicodeText

docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod,

null, doc, new object[] { saveFileName, Word.WdSaveFormat.wdFormatDocument });

// 退出 Word

wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod,

null, word, null);

}

private void WordConvert(string s)

{

oWord.ApplicationClass word = new Microsoft.Office.Interop.Word.ApplicationClass();

Type wordType = word.GetType();

//打開WORD文檔

/*對應(yīng)腳本中的

var word = new ActiveXObject("Word.Application");

var doc = word.Documents.Open(docfile);

*/

oWord.Documents docs = word.Documents;

Type docsType = docs.GetType();

object objDocName =s;

oWord.Document doc = (oWord.Document)docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] { objDocName, true, true });

//打印輸出到指定文件

//你可以使用 doc.PrintOut();方法,次方法調(diào)用中的參數(shù)設(shè)置較繁瑣,建議使用 Type.InvokeMember 來調(diào)用時可以不用將PrintOut的參數(shù)設(shè)置全,只設(shè)置4個主要參數(shù)

Type docType = doc.GetType();

object printFileName = @"c:\aaa.ps";

docType.InvokeMember("PrintOut", System.Reflection.BindingFlags.InvokeMethod, null, doc, new object[] { false, false, oWord.WdPrintOutRange.wdPrintAllDocument, printFileName });

//new object[]{false,false,oWord.WdPrintOutRange.wdPrintAllDocument,printFileName}

//對應(yīng)腳本中的word.PrintOut(false, false, 0, psfile);的參數(shù)

//退出WORD

//對應(yīng)腳本中的word.Quit();

wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null);

object o1 = "c:\\aaa.ps";

object o2 = "c:\\aaa.pdf";

object o3 = "";

//引用將PS轉(zhuǎn)換成PDF的對象

//try catch之間對應(yīng)的是腳本中的 PDF.FileToPDF(psfile,pdffile,""); //你可以使用 pdfConvert.FileToPDF("c:\\test.ps","c:\\test.pdf","");這樣的轉(zhuǎn)換方法,本人只是為了保持與WORD相同的調(diào)用方式

try

{

ACRODISTXLib.PdfDistillerClass pdf = new ACRODISTXLib.PdfDistillerClass();

Type pdfType = pdf.GetType();

pdfType.InvokeMember("FileToPDF", System.Reflection.BindingFlags.InvokeMethod, null, pdf, new object[] { o1, o2, o3 });

pdf = null;

}

catch { } //讀者自己補寫錯誤處理

//為防止本方法調(diào)用多次時發(fā)生錯誤,必須停止acrodist.exe進程

foreach (System.Diagnostics .Process proc in System.Diagnostics.Process.GetProcesses())

{

int begpos;

int endpos;

string sProcName = proc.ToString();

begpos = sProcName.IndexOf("(") + 1;

endpos = sProcName.IndexOf(")");

sProcName = sProcName.Substring(begpos, endpos - begpos);

if (sProcName.ToLower().CompareTo("acrodist") == 0)

{

try

{

proc.Kill(); //停止進程

}

catch { } //讀者自己補寫錯誤處理

break;

}

}

}

private void button3_Click(object sender, EventArgs e)

{

if (openFileDialog1.ShowDialog() == DialogResult.OK)

{

string s = openFileDialog1.FileName;

WordConvert(s);

}

}

//getnextcode

private void button4_Click(object sender, EventArgs e)

{

WorkCell myWorkCell = new WorkCell(textBox2.Text,textBox1.Text);

textBox3.Text = myWorkCell.GetNextCode();

}

}

public class WorkCell

{

private string workCellCode;

private string parentCellCode;

private string commonCode;

private char[] code;

private char[] pCode;

private char[] standCode;

private string s;

public WorkCell( string mycode,string parentcode)

{

workCellCode = mycode;

parentCellCode = parentcode;

standCode = new char[] { '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'W', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' };

commonCode = Regex.Replace(parentCellCode,@"0+","");

code = workCellCode.Substring(commonCode.Length).ToCharArray();

}

public string WorkCellCode

{

set

{

workCellCode = value;

}

get

{

return workCellCode;

}

}

public string ParentCellCode

{

set

{

workCellCode = value;

}

get

{

return workCellCode;

}

}

public string GetNextCode()

{

string s="";

if (code.Length > 0)

{

int i = 0;

for (i = code.Length - 1; i >= 0; i--)

{

if (code[i] != '0')

{

GetNextChar(i);

break;

}

}

for(i=0;i

{

s+=code[i].ToString();

}

return commonCode + s;

}

else

{

return "null";

}

}

//設(shè)置code中的下一個代碼,從右邊起,找到第一個非0字符,將其按標準代碼自加1,溢出則進位

private char GetNextChar(int j)

{

int i = -1;

int flag = 0;

for (i = 0; i < standCode.Length; i++)

{

if (code[j] == standCode[i])

{

flag = 1;

break;

}

}

//MessageBox.Show(code[j].ToString()+" "+standCode[i].ToString()+" "+i.ToString());

if (i >= standCode.Length-1 || flag==0)

{

code[j] = standCode[0];

if (j > 0)

code[j - 1] = GetNextChar(j - 1);

}

else

{

code[j] = standCode[i + 1];

}

return code[j];

}

}

}

希望本文所述對大家的C#程序設(shè)計有所幫助。

總結(jié)

以上是生活随笔為你收集整理的c html转换成word,C#实现HTML转WORD及WORD转PDF的方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。