using Aspose.Cells;
using Aspose.Words;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebApplication16
{
public partial class WebForm1 : System.Web.UI.Page
{
public void ExportWord()
{
string filePath = Server.MapPath("~/Template.doc");
string filePath1 = Server.MapPath("~/Template1.doc");
//预先生成数据
List<Student> studentData = new List<Student>();
for (int i = 0; i < 50; i++)
{
studentData.Add(new Student()
{
name = "学生" + i.ToString("D3"),
schoolName = "某某中学",
num = i,
score = i
});
}
//加载word模板。
Aspose.Words.Document doc = null;
try
{
doc = new Aspose.Words.Document();
}
catch (Exception ex)
{
}
Aspose.Words.DocumentBuilder docWriter = new Aspose.Words.DocumentBuilder(doc);
docWriter.StartTable();
double[] colWidth = new double[] { 45, 60, 33, 55 };
string[] colName = new string[] { "编号", "姓名", "分数", "学校" };
int pageSize = 0;
for (int i = 0, j = studentData.Count; i < j; i++)
{
if (i == 47)
{
}
if (pageSize== 0)
{
//word页刚开始,一个表格的开始,要插入一个表头
docWriter.InsertBreak(Aspose.Words.BreakType.ParagraphBreak);
//docWriter.StartTable();
AsposeCreateCell(docWriter, colWidth[0], colName[0]);
AsposeCreateCell(docWriter, colWidth[1], colName[1]);
AsposeCreateCell(docWriter, colWidth[2], colName[2]);
AsposeCreateCell(docWriter, colWidth[3], colName[3]);
docWriter.EndRow();
//docWriter.EndTable();
}
//else if (pageSize == 30)//经过测算,每页word中可以放置30行
//{
// //结束第一个表格,插入分栏符号,并开始另一个表格
// docWriter.EndTable();
// docWriter.InsertBreak(Aspose.Words.BreakType.ColumnBreak);
// docWriter.InsertBreak(Aspose.Words.BreakType.ParagraphBreak);
// docWriter.StartTable();
// AsposeCreateCell(docWriter, colWidth[0], colName[0]);
// AsposeCreateCell(docWriter, colWidth[1], colName[1]);
// AsposeCreateCell(docWriter, colWidth[2], colName[2]);
// AsposeCreateCell(docWriter, colWidth[3], colName[3]);
// docWriter.EndRow();
//}
//else if (pageSize == 60)//word分栏为2栏,那么一页word可以放60行数据
//{
// //一页word完毕,关闭表格,并绘制下一页的表头。
// docWriter.EndTable();
// docWriter.InsertBreak(Aspose.Words.BreakType.PageBreak);
// docWriter.InsertBreak(Aspose.Words.BreakType.ParagraphBreak);
// docWriter.StartTable();
// AsposeCreateCell(docWriter, colWidth[0], colName[0]);
// AsposeCreateCell(docWriter, colWidth[1], colName[1]);
// AsposeCreateCell(docWriter, colWidth[2], colName[2]);
// AsposeCreateCell(docWriter, colWidth[3], colName[3]);
// docWriter.EndRow();
// pageSize = 0;
//}
pageSize++;
//创建内容
AsposeCreateCell(docWriter, colWidth[0], studentData[i].num.ToString());
AsposeCreateCell(docWriter, colWidth[1], studentData[i].name);
AsposeCreateCell(docWriter, colWidth[2], studentData[i].score.ToString());
AsposeCreateCell(docWriter, colWidth[3], studentData[i].schoolName+"_"+i);
docWriter.EndRow();
}//end for
docWriter.EndTable();
//保存文件
doc.Save(filePath1, Aspose.Words.SaveFormat.Doc);
}
public void AsposeCreateCell(Aspose.Words.DocumentBuilder builder, double width, string text)
{
builder.InsertCell();
builder.CellFormat.Borders.LineStyle = Aspose.Words.LineStyle.Single;
builder.CellFormat.Borders.Color = System.Drawing.Color.Black;
builder.CellFormat.Width = width;//单元格的宽度
builder.CellFormat.LeftPadding = 3;//单元格的左内边距
builder.CellFormat.RightPadding = 3;//单元格的右内边距
builder.RowFormat.Height = 20;//行高
builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.None;
builder.CellFormat.VerticalAlignment = Aspose.Words.Tables.CellVerticalAlignment.Center;//垂直居中对齐
builder.ParagraphFormat.Alignment = Aspose.Words.ParagraphAlignment.Center;//水平居中对齐
builder.Write(text);
}
protected virtual void ExportGrid(string[] Columns, string title, System.Data.DataTable table, ArrayList ignorColList, bool showHeader)
{
Workbook workbook = new Workbook(); //工作簿
Worksheet sheet = workbook.Worksheets[0]; //工作表
sheet.AutoFitColumns();
Cells cells = sheet.Cells;//单元格
Aspose.Cells.Style styleTitle = workbook.Styles[workbook.Styles.Add()];//新增样式
styleTitle.HorizontalAlignment = TextAlignmentType.Center;//文字居中
styleTitle.Font.Name = "宋体";//文字字体
styleTitle.Font.Size = 14;//文字大小
styleTitle.Font.IsBold = false;//粗体
//样式2
Aspose.Cells.Style style2 = workbook.Styles[workbook.Styles.Add()];//新增样式
style2.HorizontalAlignment = TextAlignmentType.Center;//文字居中
style2.Font.Name = "宋体";//文字字体
style2.Font.Size = 10;//文字大小
style2.Font.IsBold = false;//粗体
style2.IsTextWrapped = true;//单元格内容自动换行
style2.Borders[Aspose.Cells.BorderType.LeftBorder].LineStyle = CellBorderType.Thin;
style2.Borders[Aspose.Cells.BorderType.RightBorder].LineStyle = CellBorderType.Thin;
style2.Borders[Aspose.Cells.BorderType.TopBorder].LineStyle = CellBorderType.Thin;
style2.Borders[Aspose.Cells.BorderType.BottomBorder].LineStyle = CellBorderType.Thin;
Aspose.Cells.Style style3 = workbook.Styles[workbook.Styles.Add()];//新增样式
style3.HorizontalAlignment = TextAlignmentType.Center;//文字居中
style3.Font.Name = "宋体";//文字字体
style3.Font.Size = 10;//文字大小
style3.Borders[Aspose.Cells.BorderType.LeftBorder].LineStyle = CellBorderType.Thin;
style3.Borders[Aspose.Cells.BorderType.RightBorder].LineStyle = CellBorderType.Thin;
style3.Borders[Aspose.Cells.BorderType.TopBorder].LineStyle = CellBorderType.Thin;
style3.Borders[Aspose.Cells.BorderType.BottomBorder].LineStyle = CellBorderType.Thin;
if (!string.IsNullOrEmpty(title))
{
int i = Columns.Length;
if (ignorColList != null)
{
i = i - ignorColList.Count;
}
cells.Merge(0, 0, 1, i);//合并单元格
cells[0, 0].PutValue(title);//填写内容
cells[0, 0].SetStyle(styleTitle);
}
int start = string.IsNullOrEmpty(title) ? 0 : 1;
int j = 0;
if (showHeader)
{
for (var i = 0; i < Columns.Length; i++)
{
var c = Columns[i];
if (ignorColList != null && ignorColList.Contains(c))
{
continue;
}
cells[start, j].PutValue(c);
cells[start, j].SetStyle(style2);
j++;
}
}
for (var q = 0; q < table.Rows.Count; q++)
{
j = 0;
var row = table.Rows[q];
for (var i = 0; i < Columns.Length; i++)
{
var c = Columns[i];
if (ignorColList != null && ignorColList.Contains(c))
{
continue;
}
cells[start + 1 + q, j].PutValue(row[c]);
cells[start + 1 + q, j].SetStyle(style3);
cells.SetRowHeight(start + 1 + q, 25);
j++;
}
}
workbook.Save(string.Format("report.xls"), Aspose.Cells.SaveType.OpenInExcel, Aspose.Cells.FileFormatType.Excel2003, Response);
Response.Flush();
Response.End();
}
protected void Page_Load(object sender, EventArgs e)
{
System.Data.DataTable table = new System.Data.DataTable();
table.Columns.Add("id2", typeof(string));
table.Columns.Add("name2", typeof(string));
for (int i = 0; i < 3; i++)
{
System.Data.DataRow dr = table.NewRow();
dr["id2"] = "id2_" + i;
dr["name2"] = "name2_" + i;
table.Rows.Add(dr);
}
string[] columns = { "id2", "name2" };
ExportWord();
//ExportGrid(columns, "柯相彬表格",table,null, true);
Response.Write("ni mei de");
}
}
}