1 namespace WordDemo
2 {
3 public partial class Form1 : Form
4 {
5 public Form1()
6 {
7 InitializeComponent();
8 }
9
10 private void Form1_Load(object sender, EventArgs e)
11 {
12 //创建文档
13 XWPFDocument doc = new XWPFDocument();
14
15 //标题
16 XWPFParagraph p1 = doc.CreateParagraph();
17
18 XWPFRun r1 = p1.CreateRun();
19 r1.FontSize = 23;
20 r1.SetText("先进个人基本信息");
21 r1.SetTextPosition(30);
22
23 CT_P doc_p1 = doc.Document.body.GetPArray(0);//标题居中
24 doc_p1.AddNewPPr().AddNewJc().val = ST_Jc.center;
25
26 //创建表格
27 XWPFTable table = doc.CreateTable();//行,列
28
29 table.RemoveRow(0);
30
31
32 #region
33
34 //for (int i = 0; i < table.Rows.Count; i++)//水平和垂直居中
35 //{
36 // for (int j = 0; j < table.Rows.Count; j++)
37 // {
38 // CT_Tc cttc = table.GetRow(i).GetCell(j).GetCTTc();
39
40 // CT_TcPr ctpr = cttc.AddNewTcPr();
41
42 // cttc.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center;//水平居中
43
44 // ctpr.AddNewVAlign().val = ST_VerticalJc.center;//垂直居中
45 // }
46 //}
47
48 //SetColSpan(table.GetRow(2).GetCell(1), 2);
49 //SetColSpan(table.GetRow(2).GetCell(4), 2);
50
51 //SetColSpan(table.GetRow(3).GetCell(1), 2);
52 //SetColSpan(table.GetRow(3).GetCell(4), 2);
53
54 //SetColSpan(table.GetRow(5).GetCell(1), 2);
55 //SetColSpan(table.GetRow(5).GetCell(4), 2);
56
57 //SetColSpan(table.GetRow(6).GetCell(1), 7);
58
59 //SetColSpan(table.GetRow(7).GetCell(1), 7);
60
61 #endregion
62
63
64 //2.表格内容
65 XWPFTableRow row_0 = CreateRow(table);//第一行
66
67 XWPFTableCell cell_0_0 = CreateCell(row_0);
68 cell_0_0.SetText("姓名");
69 XWPFTableCell cell_0_1 = CreateCell(row_0);
70 cell_0_1.SetText("");
71 XWPFTableCell cell_0_2 = CreateCell(row_0);
72 cell_0_2.SetText("性别");
73 XWPFTableCell cell_0_3 = CreateCell(row_0);
74 cell_0_3.SetText("");
75 XWPFTableCell cell_0_4 = CreateCell(row_0);
76 cell_0_4.SetText("民族");
77 XWPFTableCell cell_0_5 = CreateCell(row_0);
78 cell_0_5.SetText("");
79 XWPFTableCell cell_0_6 = CreateCell(row_0);
80 cell_0_6.SetText("出生年月");
81 XWPFTableCell cell_0_7 = CreateCell(row_0);
82 cell_0_7.SetText("");
83
84 XWPFTableRow row_1 = CreateRow(table);//第二行
85 XWPFTableCell cell_1_0 = CreateCell(row_1);
86 cell_1_0.SetText("政治面貌");
87 XWPFTableCell cell_1_1 = CreateCell(row_1);
88 cell_1_1.SetText("");
89 XWPFTableCell cell_1_2 = CreateCell(row_1);
90 cell_1_2.SetText("籍贯");
91 XWPFTableCell cell_1_3 = CreateCell(row_1);
92 cell_1_3.SetText("");
93 XWPFTableCell cell_1_4 = CreateCell(row_1);
94 cell_1_4.SetText("学历");
95 XWPFTableCell cell_1_5 = CreateCell(row_1);
96 cell_1_5.SetText("");
97 XWPFTableCell cell_1_6 = CreateCell(row_1);
98 cell_1_6.SetText("参加工作时间");
99 XWPFTableCell cell_1_7 = CreateCell(row_1);
100 cell_1_7.SetText("");
101
102 XWPFTableRow row_2 = CreateRow(table);//第三行
103 XWPFTableCell cell_2_0 = CreateCell(row_2);
104 cell_2_0.SetText("所在单位");
105 XWPFTableCell cell_2_1 = CreateCell(row_2);
106 SetColSpan(cell_2_1, 2);//合并单元格
107 cell_2_1.SetText("");
108 XWPFTableCell cell_2_2 = CreateCell(row_2);
109 cell_2_2.SetText("所属部门");
110 XWPFTableCell cell_2_3 = CreateCell(row_2);
111 SetColSpan(cell_2_3, 2);
112 cell_2_3.SetText("");
113 XWPFTableCell cell_2_4 = CreateCell(row_2);
114 cell_2_4.SetText("隶属系统");
115 XWPFTableCell cell_2_5 = CreateCell(row_2);
116 cell_2_5.SetText("");
117
118 XWPFTableRow row_3 = CreateRow(table);//第四行
119 XWPFTableCell cell_3_0 = CreateCell(row_3);
120 cell_3_0.SetText("现任职务");
121 XWPFTableCell cell_3_1 = CreateCell(row_3);
122 SetColSpan(cell_3_1, 2);
123 cell_3_1.SetText("");
124 XWPFTableCell cell_3_2 = CreateCell(row_3);
125 cell_3_2.SetText("任现职时间");
126 XWPFTableCell cell_3_3 = CreateCell(row_3);
127 SetColSpan(cell_3_3, 2);
128 cell_3_3.SetText("");
129 XWPFTableCell cell_3_4 = CreateCell(row_3);
130 cell_3_4.SetText("典型类别");
131 XWPFTableCell cell_3_5 = CreateCell(row_3);
132 cell_3_5.SetText("");
133
134
135 XWPFTableRow row_4 = CreateRow(table);//第五行
136 XWPFTableCell cell_4_0 = CreateCell(row_4);
137 cell_4_0.SetText("职称");
138 XWPFTableCell cell_4_1 = CreateCell(row_4);
139 cell_4_1.SetText("");
140 XWPFTableCell cell_4_2 = CreateCell(row_4);
141 cell_4_2.SetText("任现职称时间");
142 XWPFTableCell cell_4_3 = CreateCell(row_4);
143 cell_4_3.SetText("");
144 XWPFTableCell cell_4_4 = CreateCell(row_4);
145 cell_4_4.SetText("职工状况");
146 XWPFTableCell cell_4_5 = CreateCell(row_4);
147 cell_4_5.SetText("");
148 XWPFTableCell cell_4_6 = CreateCell(row_4);
149 cell_4_6.SetText("是否干部");
150 XWPFTableCell cell_4_7 = CreateCell(row_4);
151 cell_4_7.SetText("");
152
153 XWPFTableRow row_5 = CreateRow(table);//第六行
154 XWPFTableCell cell_5_0 = CreateCell(row_5);
155 cell_5_0.SetText("毕业院校及专业");
156 XWPFTableCell cell_5_1 = CreateCell(row_5);
157 SetColSpan(cell_5_1, 2);
158 cell_5_1.SetText("");
159 XWPFTableCell cell_5_2 = CreateCell(row_5);
160 cell_5_2.SetText("毕业时间");
161 XWPFTableCell cell_5_3 = CreateCell(row_5);
162 SetColSpan(cell_5_3, 2);
163 cell_5_3.SetText("");
164 XWPFTableCell cell_5_4 = CreateCell(row_5);
165 cell_5_4.SetText("学位");
166 XWPFTableCell cell_5_5 = CreateCell(row_5);
167 cell_5_5.SetText("");
168
169 XWPFTableRow row_6 = CreateRow(table);//第七行
170 XWPFTableCell cell_6_0 = CreateCell(row_6);
171 cell_6_0.SetText("所获荣誉");
172 XWPFTableCell cell_6_1 = CreateCell(row_6);
173 SetColSpan(cell_6_1, 7);
174 cell_6_1.SetText("");
175
176 XWPFTableRow row_7 = CreateRow(table);//第八行
177 XWPFTableCell cell_7_0 = CreateCell(row_7);
178 SetColSpan(cell_7_0, 8);
179
180 XWPFParagraph aa = cell_7_0.AddParagraph();
181 aa.Alignment = ParagraphAlignment.CENTER;
182 XWPFRun aa_r = aa.CreateRun();
183 aa_r.FontSize = 18;
184 aa_r.SetTextPosition(20);
185 aa_r.SetText("个人简介");
186
187
188 XWPFParagraph bb = cell_7_0.AddParagraph();
189 bb.Alignment = ParagraphAlignment.CENTER;
190 XWPFRun bb_r = bb.CreateRun();
191 bb_r.SetText("123123123123123123123123123123123123123123,123123123123123123123123123123123123123123,123123123123123123123123123123123123123123,123123123123123123123123123123123123123123,123123123123123123123123123123123123123123,123123123123123123123123123123123123123123,123123123123123123123123123123123123123123,123123123123123123123123123123123123123123,123123123123123123123123123123123123123123,123123123123123123123123123123123123123123,123123123123123123123123123123123123123123,123123123123123123123123123123123123123123,123123123123123123123123123123123123123123,123123123123123123123123123123123123123123,123123123123123123123123123123123123123123,123123123123123123123123123123123123123123,123123123123123123123123123123123123123123,123123123123123123123123123123123123123123,123123123123123123123123123123123123123123,123123123123123123123123123123123123123123,");
192
193
194
195
196
197
198 #region
199 //table.GetRow(0).GetCell(0).SetText("姓名");//第一行
200 //table.GetRow(0).GetCell(1).SetText("");
201 //table.GetRow(0).GetCell(2).SetText("性别");
202 //table.GetRow(0).GetCell(3).SetText("");
203 //table.GetRow(0).GetCell(4).SetText("民族");
204 //table.GetRow(0).GetCell(5).SetText("");
205 //table.GetRow(0).GetCell(6).SetText("出生年月");
206 //table.GetRow(0).GetCell(7).SetText("");
207
208 //table.GetRow(1).GetCell(0).SetText("政治面貌");//第二行
209 //table.GetRow(1).GetCell(1).SetText("");
210 //table.GetRow(1).GetCell(2).SetText("籍贯");
211 //table.GetRow(1).GetCell(3).SetText("");
212 //table.GetRow(1).GetCell(4).SetText("学历");
213 //table.GetRow(1).GetCell(5).SetText("");
214 //table.GetRow(1).GetCell(6).SetText("参加工作时间");
215 //table.GetRow(1).GetCell(7).SetText("");
216
217 //table.GetRow(2).GetCell(0).SetText("所在单位");//第三行
218 //table.GetRow(2).GetCell(1).SetText("");
219 //table.GetRow(2).GetCell(2).SetText("所属部门");
220 //table.GetRow(2).GetCell(3).SetText("");
221 //table.GetRow(2).GetCell(4).SetText("隶属系统");
222 //table.GetRow(2).GetCell(5).SetText("");
223
224 //table.GetRow(3).GetCell(0).SetText("现任职务");//第四行
225 //table.GetRow(3).GetCell(1).SetText("");
226 //table.GetRow(3).GetCell(2).SetText("任现职时间");
227 //table.GetRow(3).GetCell(3).SetText("");
228 //table.GetRow(3).GetCell(4).SetText("典型类别");
229 //table.GetRow(3).GetCell(5).SetText("");
230
231 //table.GetRow(4).GetCell(0).SetText("职称");//第五行
232 //table.GetRow(4).GetCell(1).SetText("");
233 //table.GetRow(4).GetCell(2).SetText("任现职称时间");
234 //table.GetRow(4).GetCell(3).SetText("");
235 //table.GetRow(4).GetCell(4).SetText("职工状况");
236 //table.GetRow(4).GetCell(5).SetText("");
237 //table.GetRow(4).GetCell(6).SetText("是否干部");
238 //table.GetRow(4).GetCell(7).SetText("");
239
240 //table.GetRow(5).GetCell(0).SetText("毕业院校及专业");//第六行
241 //table.GetRow(5).GetCell(1).SetText("");
242 //table.GetRow(5).GetCell(2).SetText("毕业时间");
243 //table.GetRow(5).GetCell(3).SetText("");
244 //table.GetRow(5).GetCell(4).SetText("学位");
245 //table.GetRow(5).GetCell(5).SetText("");
246
247 //table.GetRow(6).GetCell(0).SetText("所获荣誉");//第七行
248 //table.GetRow(6).GetCell(1).SetText("");
249
250 //table.GetRow(7).GetCell(0).SetText("个人简介");//第八行
251 //table.GetRow(7).GetCell(1).SetText("");
252 #endregion
253
254
255 using (var fs = File.OpenWrite(@"c:/yc.net.doc"))
256 {
257 doc.Write(fs); //向打开的这个xls文件中写入mySheet表并保存。
258 Console.WriteLine("生成成功");
259 }
260
261
262 //导出
263 // DownloadByOutputStreamBlock(new MemoryStream(ToByte(doc)), "先进个人基本信息--" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".docx");
264 }
265
266 /// <summary>
267 /// 创建行
268 /// </summary>
269 /// <param name="table"></param>
270 /// <returns></returns>
271 private XWPFTableRow CreateRow(XWPFTable table)
272 {
273 CT_Row m_NewRow = new CT_Row();
274 XWPFTableRow m_row = new XWPFTableRow(m_NewRow, table);
275 m_row.GetCTRow().AddNewTrPr().AddNewTrHeight().val = (ulong)426;
276 table.AddRow(m_row);
277
278 return m_row;
279 }
280
281 /// <summary>
282 /// 创建列
283 /// </summary>
284 /// <param name="row"></param>
285 /// <returns></returns>
286 private XWPFTableCell CreateCell(XWPFTableRow row)
287 {
288 XWPFTableCell cell = row.CreateCell();
289 CT_Tc cttc = cell.GetCTTc();
290 CT_TcPr ctpr = cttc.AddNewTcPr();
291
292 cttc.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center;//水平居中
293
294 ctpr.AddNewVAlign().val = ST_VerticalJc.center;//垂直居中
295
296 ctpr.tcW = new CT_TblWidth();
297 ctpr.tcW.w = "1200";//默认列宽
298 ctpr.tcW.type = ST_TblWidth.dxa;
299
300 return cell;
301 }
302
303 /// <summary>
304 /// 合并单元格
305 /// </summary>
306 /// <param name="cell"></param>
307 /// <param name="Span"></param>
308 private void SetColSpan(XWPFTableCell cell, int Span)
309 {
310 CT_Tc cttc = cell.GetCTTc();
311 CT_TcPr ctpr = cttc.AddNewTcPr();
312 ctpr.gridSpan = new CT_DecimalNumber();
313 ctpr.gridSpan.val = Span.ToString();//合并单元格
314
315 cttc.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center;//水平居中
316
317 ctpr.AddNewVAlign().val = ST_VerticalJc.center;//垂直居中
318 }
319
320 /// <summary>
321 /// 设置列宽
322 /// </summary>
323 /// <param name="table">表格</param>
324 /// <param name="ColIndex">列号。从0开始编号</param>
325 /// <param name="Width">列宽</param>
326 private void SetColWith(XWPFTable table, int ColIndex, int Width)
327 {
328 CT_TcPr m_pr = table.GetRow(0).GetCell(ColIndex).GetCTTc().AddNewTcPr();
329 m_pr.tcW = new CT_TblWidth();
330 m_pr.tcW.w = Width.ToString();
331 m_pr.tcW.type = ST_TblWidth.dxa;
332 }
333
334 /// <summary>
335 /// 导出文件
336 /// </summary>
337 /// <param name="stream">流</param>
338 /// <param name="fileName">导出文件名</param>
339 public void DownloadByOutputStreamBlock(System.IO.Stream stream, string fileName)
340 {
341 using (stream)
342 {
343 //将流的位置设置到开始位置。
344 stream.Position = 0;
345 //块大小
346 long ChunkSize = 102400;
347 //建立100k的缓冲区
348 byte[] buffer = new byte[ChunkSize];
349 //已读字节数
350 long dataLengthToRead = stream.Length;
351
352 //Response.ContentType = "application/octet-stream";
353 //Response.AddHeader("Content-Disposition",
354 // string.Format("attachment; filename={0}", HttpUtility.UrlPathEncode(fileName)));
355
356 //while (dataLengthToRead > 0 && Response.IsClientConnected)
357 //{
358 // int lengthRead = stream.Read(buffer, 0, Convert.ToInt32(ChunkSize));//读取的大小
359 // Response.OutputStream.Write(buffer, 0, lengthRead);
360 // Response.Flush();
361 // Response.Clear();
362 // dataLengthToRead -= lengthRead;
363 //}
364 //Response.Close();
365 }
366 }
367
368 private byte[] ToByte(XWPFDocument wb)
369 {
370 using (MemoryStream ms = new MemoryStream())
371 {
372 //XSSFWorkbook即读取.xlsx文件返回的MemoryStream是关闭
373 //但是可以ToArray(),这是NPOI的bug
374 wb.Write(ms);
375 return ms.ToArray();
376 }
377 }
378 }
379 }