原創(chuàng)|其它|編輯:郝浩|2012-10-15 15:19:13.000|閱讀 6182 次
概述:Aspose系列的控件,功能都挺好,之前一直在我的Winform開發(fā)框架中用Aspose.Cell來(lái)做報(bào)表輸出,可以實(shí)現(xiàn)多樣化的報(bào)表設(shè)計(jì)及輸出
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
日常中,常見的內(nèi)容輸出就是二維表格的方式,表頭比較固定,內(nèi)容每行一條,那么在實(shí)際的使用控件我們?cè)撊绾尾僮髂?,其?shí)這個(gè)控件這方面介紹的文章很多,參考一下就能做出來(lái)了。其實(shí)介紹這個(gè)就是要說(shuō)明書簽的重要性,這個(gè)在Aspose.Cells控件也是如此,書簽除了可以用來(lái)替換內(nèi)容,還可以用來(lái)標(biāo)記內(nèi)容輸入的開始位置等等功能。
首先我們?cè)谝粋€(gè)空白的Word文檔中繪制一個(gè)表格頭,然后再換行的開始插入一個(gè)標(biāo)簽引用,插入書簽有兩種方式,一種是在Word(2007、2010)的【插入】-【書簽】中插入制定位置的書簽引用,如下所示。
一種是在Word的自定義快速訪問工具欄上添加其他命令,如下步驟所示
前者插入的書簽是沒有文字或者特別的標(biāo)記,但是確實(shí)存在,后者會(huì)插入一個(gè)灰色塊作為占位符,如下所示,我這這個(gè)二維表格的例子里面使用后者進(jìn)行測(cè)試(兩者同等效果的)
這樣設(shè)計(jì)好Word模板后,下一步就是如何利用代碼生成二維表格了。首先這里提示一下,就是我故意設(shè)置了每個(gè)表格單元格的寬度不同,所以也就要求生成的行要和頭部對(duì)應(yīng),所以表格生成每行之前,肯定要獲得對(duì)應(yīng)列的樣式屬性的,否則就會(huì)對(duì)應(yīng)不上了。下面看代碼。
try
{
Aspose.Words.Document doc = new Aspose.Words.Document(templateFile);
Aspose.Words.DocumentBuilder builder = new Aspose.Words.DocumentBuilder(doc);
DataTable nameList = DataTableHelper.CreateTable("編號(hào),姓名,時(shí)間");
DataRow row = null;
for (int i = 0; i < 50; i++)
{
row = nameList.NewRow();
row["編號(hào)"] = i.ToString().PadLeft(4, '0');
row["姓名"] = "伍華聰 " + i.ToString();
row["時(shí)間"] = DateTime.Now.ToString();
nameList.Rows.Add(row);
}
List<double> widthList = new List<double>();
for (int i = 0; i < nameList.Columns.Count; i++)
{
builder.MoveToCell(0, 0, i, 0); //移動(dòng)單元格
double width = builder.CellFormat.Width;//獲取單元格寬度
widthList.Add(width);
}
builder.MoveToBookmark("table"); //開始添加值
for (var i = 0; i < nameList.Rows.Count; i++)
{
for (var j = 0; j < nameList.Columns.Count; j++)
{
builder.InsertCell();// 添加一個(gè)單元格
builder.CellFormat.Borders.LineStyle = LineStyle.Single;
builder.CellFormat.Borders.Color = System.Drawing.Color.Black;
builder.CellFormat.Width = widthList[j];
builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.None;
builder.CellFormat.VerticalAlignment = CellVerticalAlignment.Center;//垂直居中對(duì)齊
builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;//水平居中對(duì)齊
builder.Write(nameList.Rows[i][j].ToString());
}
builder.EndRow();
}
doc.Range.Bookmarks["table"].Text = ""; // 清掉標(biāo)示
doc.Save(saveDocFile);
if (MessageUtil.ShowYesNoAndTips("保存成功,是否打開文件?") == System.Windows.Forms.DialogResult.Yes)
{
System.Diagnostics.Process.Start(saveDocFile);
}
}
catch (Exception ex)
{
LogHelper.Error(ex);
MessageUtil.ShowError(ex.Message);
return;
}
以上代碼的步驟就是
1)創(chuàng)建Aspose.Words.Document 和 Aspose.Words.DocumentBuilder對(duì)象,然后生成數(shù)據(jù)的二維表格內(nèi)容。
2)遍歷模板表格,或者每一列的寬度,以備后用。
3)移動(dòng)到表格的書簽位置,然后開始錄入數(shù)據(jù),Word表格的每個(gè)Cell都要求制定樣式和寬度,這樣才能和表格頭部吻合。
4)保存文件內(nèi)容到新的文件里面即可。
輸出的效果如下所示。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@ke049m.cn
文章轉(zhuǎn)載自:伍華聰?shù)膶凇┛蛨@