2024年2月9日发(作者:)

NPOI 导出 Word (没有Office操作Word)

分类: C# | 作者: yuyang00000 相关 | 发布日期 : 2013-03-04 | 热度 : 392°

NPOI已出现一段时间了,目前版本2.0 Beta 2 [v2.0.5],网上关于NPOI操作xlsx文章较多,而关于docx的几乎没有,尽管NPOI对于Word还不稳定,经过一阵捣鼓后终于实现了表的简单操作:创建表、创建行、创建单元,单元行和列的合并。

环境:vs2010,netframework4

view source

print?

private void button1_Click(object sender, EventArgs e)

{

MemoryStream ms = new MemoryStream();

XWPFDocument m_Docx = new XWPFDocument();

m_Docx = CreatDocxTable();

m_(ms);

();

SaveToFile(ms,"d:");

}

protected XWPFDocument CreatDocxTable()

{

XWPFDocument m_Docx = new XWPFDocument();

XWPFParagraph p0 = m_Paragraph();

XWPFRun r0 = Run();

t("DOCX表");

XWPFTable table = m_Table(1, 3);//创建一行3列表

(0).GetCell(0).SetText("111");

(0).GetCell(1).SetText("222");

(0).GetCell(2).SetText("333");

XWPFTableRow m_Row = Row();//创建一行

m_Row = Row();//创建一行

m_l(0).SetText("211");

//合并单元格

m_Row = NewTableRow(0);//表头插入一行

XWPFTableCell cell = m_Cell();//创建一个单元格,创建单元格时就创建了一个CT_P

CT_Tc cttc = c();

CT_TcPr ctPr = TcPr();

= "3";//合并3列

st()[0].AddNewPPr().AddNewJc().val= ST_;

st()[0].AddNewR().AddNewT().Value

= "abc";

XWPFTableRow td3 = NewTableRow( -

1);//插入行

cell = Cell();

cttc = c();

ctPr = TcPr();

= "3";

st()[0].AddNewPPr().AddNewJc().val = ST_;

st()[0].AddNewR().AddNewT().Value = "qqq";

//表增加行,合并列

CT_Row m_NewRow = new CT_Row();

m_Row = new XWPFTableRow(m_NewRow, table);

(m_Row); //必须要

cell = m_Cell();

cttc = c();

ctPr = TcPr();

= "3";

st()[0].AddNewPPr().AddNewJc().val = ST_;

st()[0].AddNewR().AddNewT().Value = "sss";

//表未增加行,合并2列,合并2行

//1行

m_NewRow = new CT_Row();

m_Row = new XWPFTableRow(m_NewRow, table);

(m_Row);

cell = m_Cell();

cttc = c();

ctPr = TcPr();

= "2";

VMerge().val = ST_t;//合并行

VAlign().val = ST_;//垂直居中

st()[0].AddNewPPr().AddNewJc().val = ST_;

st()[0].AddNewR().AddNewT().Value = "xxx";

cell = m_Cell();

t("ddd");

//2行,多行合并类似

m_NewRow = new CT_Row();

m_Row = new XWPFTableRow(m_NewRow, table);

(m_Row);

cell = m_Cell();

cttc = c();

ctPr = TcPr();

= "2";

VMerge().val = ST_Merge.@continue;//合并行

cell = m_Cell();

t("kkk");

////3行

//m_NewRow = new CT_Row();

//m_Row = new XWPFTableRow(m_NewRow, table);

//(m_Row);

//cell = m_Cell();

//cttc = c();

//ctPr = TcPr();

// = "2";

//VMerge().val = ST_Merge.@continue;

//cell = m_Cell();

//t("hhh");

return m_Docx;

}

static void SaveToFile(MemoryStream ms, string fileName)

{

using (FileStream fs = new FileStream(fileName,

, ))

{

byte[] data = y();

}

}

(data, 0, );

();

data = null;