您的位置:首页 > 编程语言 > C#

请教C# 创建WORD文档问题

2010-11-05 18:14 288 查看
  最近做选型软件,需创建个报表,考虑到不会每个用户都装有水晶报表,因此就做了个WORD的报表。具体过程如下:

创建报表:

代码

public string CreateWordFile(string CheckedInfo)
{
saveFileDialog1.InitialDirectory = "C:\\";
saveFileDialog1.Filter = "WORD 文档(*.docx)|*.docx";

saveFileDialog1.ShowDialog();

string s31 = saveFileDialog1.FileName;
string message = "";

Object Nothing = System.Reflection.Missing.Value;
object fileName = System.Windows.Forms.Application.StartupPath + "\\报表\\" + CheckedInfo;

//创建Word文档
Word.Application WordApp = new Word.ApplicationClass();
Word.Document WordDoc = WordApp.Documents.Add(ref Nothing, ref Nothing, ref Nothing, ref Nothing);

WordApp.Selection.ParagraphFormat.LineSpacing = 10f;//设置文档的行间距

//WordApp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft;//水平居中

Word.Paragraph oParal, oParal2, oParal3, oParal4;
oParal = WordDoc.Paragraphs.Add(ref Nothing);
oParal.Range.Text = "Airclimasia XXXXX机组技术参数";//中间的X预留给机组型号

oParal.Range.InsertParagraphAfter();
WordApp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;//水平居中

oParal2 = WordDoc.Paragraphs.Add(ref Nothing);
oParal2.Range.Text = "XXXXX机组";
oParal2.Range.InsertParagraphAfter();
WordApp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;//水平居左

oParal3 = WordDoc.Paragraphs.Add(ref Nothing);
oParal3.Range.Text = "生产工厂:XXXXXXX冷暖设备(杭州)有限公司(Airclimasia)";
oParal3.Range.InsertParagraphAfter();
WordApp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;//水平居左

oParal4 = WordDoc.Paragraphs.Add(ref Nothing);
oParal4.Range.Text = "项目名称:XXX";
oParal4.Range.InsertParagraphAfter();
WordApp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;//水平居左

//移动焦点并换行
object count = 14;
object WdLine = Word.WdUnits.wdLine;//换一行;
WordApp.Selection.MoveDown(ref WdLine, ref count, ref Nothing);//移动焦点

//创建表格,46行,两列
Word.Table newTable = WordDoc.Tables.Add(WordApp.Selection.Range, 46, 2, ref Nothing, ref Nothing);

//设置表格样式
newTable.Borders.OutsideLineStyle = Word.WdLineStyle.wdLineStyleSingle;
newTable.Borders.InsideLineStyle = Word.WdLineStyle.wdLineStyleSingle;

//填充表头内容
newTable.Cell(1, 1).Range.Text = "           性能参数";
newTable.Cell(1, 1).Range.Font.Size = 10;
newTable.Cell(1, 1).Range.Font.Bold = 2;
newTable.Cell(1, 2).Range.Text = "           性能指标";
newTable.Cell(1, 2).Range.Font.Size = 10;
newTable.Cell(1, 2).Range.Font.Bold = 2;
newTable.Cell(1, 2).VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;//垂直居中
//newTable.Cell(1,2).Parent=Word.w
newTable.Cell(2, 1).Range.Text = "压缩机型式";
newTable.Cell(2, 1).Range.Font.Size = 9;
newTable.Cell(2, 1).Range.Font.Bold = 2;

newTable.Cell(3, 1).Range.Text = "压缩机数量";
newTable.Cell(3, 1).Range.Font.Size = 9;
newTable.Cell(3, 1).Range.Font.Bold = 2;

newTable.Cell(4, 1).Range.Text = "制冷回路";
newTable.Cell(4, 1).Range.Font.Size = 9;
newTable.Cell(4, 1).Range.Font.Bold = 2;

newTable.Cell(5, 1).Range.Text = "压缩机电机转速(rpm)";
newTable.Cell(5, 1).Range.Font.Size = 9;
newTable.Cell(5, 1).Range.Font.Bold = 2;

newTable.Cell(6, 1).Range.Text = "能量调节范围";
newTable.Cell(6, 1).Range.Font.Size = 9;
newTable.Cell(6, 1).Range.Font.Bold = 2;

newTable.Cell(7, 1).Range.Text = "启动方式";
newTable.Cell(7, 1).Range.Font.Size = 9;
newTable.Cell(7, 1).Range.Font.Bold = 2;

newTable.Cell(8, 1).Range.Text = "制冷剂";
newTable.Cell(8, 1).Range.Font.Size = 9;
newTable.Cell(8, 1).Range.Font.Bold = 2;

newTable.Cell(9, 1).Range.Text = "电源";
newTable.Cell(9, 1).Range.Font.Size = 9;
newTable.Cell(9, 1).Range.Font.Bold = 2;

newTable.Cell(10, 1).Range.Text = "启动电流(A)";
newTable.Cell(10, 1).Range.Font.Size = 9;
newTable.Cell(10, 1).Range.Font.Bold = 2;

//合并单元格
newTable.Cell(11, 1).Merge(newTable.Cell(11, 2));
newTable.Cell(11, 1).Range.Text = "                                       蒸发器";
newTable.Cell(11, 1).Range.Font.Size = 10;
newTable.Cell(11, 1).Range.Font.Bold = 2;

newTable.Cell(12, 1).Range.Text = "型式";
newTable.Cell(12, 1).Range.Font.Size = 9;

newTable.Cell(13, 1).Range.Text = "氟侧试验/工作压力(kPa)";
newTable.Cell(13, 1).Range.Font.Size = 9;

newTable.Cell(14, 1).Range.Text = "水侧工作压力(bar)";
newTable.Cell(14, 1).Range.Font.Size = 9;

newTable.Cell(15, 1).Range.Text = "污垢系数(㎡℃/kW)";
newTable.Cell(15, 1).Range.Font.Size = 9;

newTable.Cell(16, 1).Range.Text = "接管尺寸(DN)";
newTable.Cell(16, 1).Range.Font.Size = 9;

newTable.Cell(17, 1).Merge(newTable.Cell(17, 2));
newTable.Cell(17, 1).Range.Text = "                                       冷凝器";
newTable.Cell(17, 1).Range.Font.Size = 10;
newTable.Cell(17, 1).Range.Font.Bold = 2;

newTable.Cell(18, 1).Range.Text = "型式";
newTable.Cell(18, 1).Range.Font.Size = 9;

newTable.Cell(19, 1).Range.Text = "氟侧试验/工作压力(kPa)";
newTable.Cell(19, 1).Range.Font.Size = 9;

newTable.Cell(20, 1).Range.Text = "水侧工作压力(bar)";
newTable.Cell(20, 1).Range.Font.Size = 9;

newTable.Cell(21, 1).Range.Text = "污垢系数(㎡℃/kW)";
newTable.Cell(21, 1).Range.Font.Size = 9;

newTable.Cell(22, 1).Range.Text = "接管尺寸(DN)";
newTable.Cell(22, 1).Range.Font.Size = 9;

newTable.Cell(23, 1).Merge(newTable.Cell(23, 2));
newTable.Cell(23, 1).Range.Text = "                                      制冷性能";
newTable.Cell(23, 1).Range.Font.Size = 10;
newTable.Cell(23, 1).Range.Font.Bold = 2;

newTable.Cell(24, 1).Range.Text = "制冷量(kW)";
newTable.Cell(24, 1).Range.Font.Size = 9;

newTable.Cell(25, 1).Range.Text = "机组输入功率(kW)";
newTable.Cell(25, 1).Range.Font.Size = 9;

newTable.Cell(26, 1).Range.Text = "冷冻水流量(m3/h)";
newTable.Cell(26, 1).Range.Font.Size = 9;

newTable.Cell(27, 1).Range.Text = "冷冻水进出口温度(℃)";
newTable.Cell(27, 1).Range.Font.Size = 9;

newTable.Cell(28, 1).Range.Text = "蒸发器压降(kPa)";
newTable.Cell(28, 1).Range.Font.Size = 9;

newTable.Cell(29, 1).Range.Text = "源侧水流量(m3/h)";
newTable.Cell(29, 1).Range.Font.Size = 9;

newTable.Cell(30, 1).Range.Text = "源侧水进出口温度(℃)";
newTable.Cell(30, 1).Range.Font.Size = 9;

newTable.Cell(31, 1).Range.Text = "冷凝器压降(kPa)";
newTable.Cell(31, 1).Range.Font.Size = 9;

newTable.Cell(32, 1).Merge(newTable.Cell(32, 2));
newTable.Cell(32, 1).Range.Text = "                                    热回收性能";
newTable.Cell(32, 1).Range.Font.Size = 10;
newTable.Cell(32, 1).Range.Font.Bold = 2;

newTable.Cell(33, 1).Range.Text = "制热量(kW)";
newTable.Cell(33, 1).Range.Font.Size = 9;

newTable.Cell(34, 1).Range.Text = "热水流量(m3/h)";
newTable.Cell(34, 1).Range.Font.Size = 9;

newTable.Cell(35, 1).Range.Text = "热水进出水温度(℃)";
newTable.Cell(35, 1).Range.Font.Size = 9;

newTable.Cell(36, 1).Merge(newTable.Cell(36, 2));
newTable.Cell(36, 1).Range.Text = "                                     制热性能";
newTable.Cell(36, 1).Range.Font.Size = 10;
newTable.Cell(36, 1).Range.Font.Bold = 2;

newTable.Cell(37, 1).Range.Text = "制热量(kW)";
newTable.Cell(37, 1).Range.Font.Size = 9;

newTable.Cell(38, 1).Range.Text = "机组输入功率(kW)";
newTable.Cell(38, 1).Range.Font.Size = 9;

newTable.Cell(39, 1).Range.Text = "源侧水流量(m3/h)";
newTable.Cell(39, 1).Range.Font.Size = 9;

newTable.Cell(40, 1).Range.Text = "源侧水进出口温度(℃)";
newTable.Cell(40, 1).Range.Font.Size = 9;

newTable.Cell(41, 1).Range.Text = "蒸发器压降(kW)";
newTable.Cell(41, 1).Range.Font.Size = 9;

newTable.Cell(42, 1).Range.Text = "热水流量(m3/h)";
newTable.Cell(42, 1).Range.Font.Size = 9;

newTable.Cell(43, 1).Range.Text = "热水进出水温度(℃)";
newTable.Cell(43, 1).Range.Font.Size = 9;

newTable.Cell(44, 1).Range.Text = "冷凝器压降(kPa)";
newTable.Cell(44, 1).Range.Font.Size = 9;

newTable.Cell(45, 1).Range.Text = "长×宽×高(mm)";
newTable.Cell(45, 1).Range.Font.Size = 9;

newTable.Cell(46, 1).Range.Text = "重量(㎏)";
newTable.Cell(46, 1).Range.Font.Size = 9;
newTable.Cell(46, 2).Range.Text = "123";

//文件保存
WordDoc.SaveAs(ref fileName, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing);
WordDoc.Close(ref Nothing, ref Nothing, ref Nothing);
WordApp.Quit(ref Nothing, ref Nothing, ref Nothing);
message = fileName.ToString();
string s11 = Application.StartupPath + @"\报表\body.docx";
string s21 = Application.StartupPath + @"\2";
WordDocumentMerger wm1 = new WordDocumentMerger();
wm1.InsertMerge(s11, s21, s31);
//WordDocumentMerger wm = new WordDocumentMerger();
//wm1.SaveAs(
return message;
}


出来的表格如下:

AirclimasiaXXXXX机组技术参数

冷水机组

生产工厂:XXXXXXX冷暖设备(杭州)有限公司(Airclimasia)

项目名称:XXXXXXXXX 日期:2010-12-25

性能参数

性能指标

压缩机型式

压缩机数量

制冷回路

压缩机电机转速(rpm

能量调节范围

启动方式

制冷剂

电源

启动电流(A

蒸发器

型式

氟侧试验/工作压力(kPa)

水侧工作压力(bar)

污垢系数(㎡℃/kW)

接管尺寸(DN)

冷凝器

型式

氟侧试验/工作压力(kPa)

水侧工作压力(bar)

污垢系数(㎡℃/kW)

接管尺寸(DN)

制冷性能

制冷量(kW)

机组输入功率(kW)

冷冻水流量(m3/h)

冷冻水进出口温度(℃)

蒸发器压降(kPa)

源侧水流量(m3/h)

源侧水进出口温度(℃)

冷凝器压降(kPa)

热回收性能

制热量(kW)

热水流量(m3/h)

热水进出水温度(℃)

制热性能

制热量(kW)

机组输入功率(kW)

源侧水流量(m3/h)

源侧水进出口温度(℃)

蒸发器压降(kW)

热水流量(m3/h)

热水进出水温度(℃)

冷凝器压降(kPa)

长×宽×高(mm

重量(㎏)

出来的报表,表头字体改变不了,如果 oParal.Range.Font.size= 10;这样设置,就把整个字体都放大了。求教各位大侠,oParal我定义的是表头标题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: