Csharp: Create Excel Workbook or word from a Template File using aspose.Word 14.5 and aspose.Cell 8.1

时间:2023-03-09 18:39:30
Csharp: Create Excel Workbook or word from a Template File using aspose.Word 14.5 and aspose.Cell 8.1

winform:

/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnGenWord_Click(object sender, EventArgs e)
{ Dictionary<string, string> dictSource = new Dictionary<string, string>();
dictSource.Add("NO", "T0001");
dictSource.Add("INDUSTRY", "捷为工作室");
dictSource.Add("NAME", "塗聚文"); string templateFile =("Templates/Templates.doc");
Aspose.Words.Document doc = new Aspose.Words.Document(templateFile); //使用文本方式替换
foreach (string name in dictSource.Keys)
{
doc.Range.Replace(name, dictSource[name], true, true);
} #region 使用书签替换模式 Aspose.Words.Bookmark bookmark = doc.Range.Bookmarks["SEX"];
if (bookmark != null)
{
bookmark.Text = "男";
}
bookmark = doc.Range.Bookmarks["TEL"];
if (bookmark != null)
{
bookmark.Text = "13824350518*";
} #endregion doc.Save("testAdvice"+DateTime.Now.ToString("yyyyMMddHHmmssfff")+".docx",Aspose.Words.SaveFormat.Docx);
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnGenExcel_Click(object sender, EventArgs e)
{
Dictionary<string, string> dictSource = new Dictionary<string, string>();
dictSource.Add("NO", "T0001");
dictSource.Add("INDUSTRY", "捷为工作室");
dictSource.Add("NAME", "塗聚文"); string templateFile = ("Templates/Templates.xls");
WorkbookDesigner designer = new WorkbookDesigner();
//designer.Workbook.FileName=templateFile;
Aspose.Cells.Workbook work = new Workbook(templateFile);
designer.Workbook.Copy(work);
Aspose.Cells.Worksheet worksheet = designer.Workbook.Worksheets[0];
worksheet.Name = "geovindu";
//使用文本替换
foreach (string name in dictSource.Keys)
{
worksheet.Replace(name, dictSource[name]);
} //使用绑定数据方式替换
designer.SetDataSource("SEX", "男");
designer.SetDataSource("TEL", "13824350518*");
designer.Process();
designer.Workbook.Save("testAdvice.xlsx",Aspose.Cells.SaveFormat.Xlsx);
}

  

webform:

/// <summary>
/// https://github.com/aspose-words/Aspose.Words-for-.NET
/// https://asposewords.codeplex.com/
/// https://asposednn.codeplex.com/
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnGenWord_Click(object sender, EventArgs e)
{
Dictionary<string, string> dictSource = new Dictionary<string, string>();
dictSource.Add("NO", "T0001");
dictSource.Add("INDUSTRY", "捷為工作室");
dictSource.Add("NAME", "涂聚文"); string templateFile = Server.MapPath("./Templates/Templates.doc");
Aspose.Words.Document doc = new Aspose.Words.Document(templateFile); //veb: 14.5 //使用文本方式替换
foreach (string name in dictSource.Keys)
{
doc.Range.Replace(name, dictSource[name], true, true);
} #region 使用书签替换模式 Aspose.Words.Bookmark bookmark = doc.Range.Bookmarks["SEX"];
if (bookmark != null)
{
bookmark.Text = "男";
}
//书签方式
bookmark = doc.Range.Bookmarks["TEL"];
if (bookmark != null)
{
bookmark.Text = "13824350518*";
} #endregion
string savefile = Server.MapPath("./DuFile/geovindu.docx");
doc.Save(savefile, Aspose.Words.SaveFormat.Docx);
Response.Clear();
Response.Buffer = true; //以字符流的形式下载文件
string fileName = "geovindu.docx"; //下載文件名稱
FileStream fs = new FileStream(savefile, FileMode.Open);
byte[] bytes = new byte[(int)fs.Length];
fs.Read(bytes, 0, bytes.Length);
fs.Close();
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.HeaderEncoding = System.Text.Encoding.UTF8;
Response.ContentType = "application/octet-stream";
//通知浏览器下载文件而不是打开
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
//Response.AddHeader("Content-Length", fs.Length.ToString());
Response.BinaryWrite(bytes);
Response.Flush();
Response.End(); }
/// <summary>
/// http://aspose.github.io/
/// https://github.com/asposemarketplace/Aspose_for_OpenXML
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Button1_Click(object sender, EventArgs e)
{
Dictionary<string, string> dictSource = new Dictionary<string, string>();
dictSource.Add("NO", "T0002");
dictSource.Add("INDUSTRY", "捷為工作室");
dictSource.Add("NAME", "涂聚文"); string templateFile = Server.MapPath("./Templates/Templates.xls");
WorkbookDesigner designer = new WorkbookDesigner(); //Veb:8.1
Aspose.Cells.Workbook work = new Workbook(templateFile);
designer.Workbook.Copy(work);
//designer.Open(templateFile); Aspose.Cells.Worksheet worksheet = designer.Workbook.Worksheets[0];
worksheet.Name = "geovindu";
//使用文本替换
foreach (string name in dictSource.Keys)
{
worksheet.Replace(name, dictSource[name]);
} //使用绑定数据方式替换
designer.SetDataSource("SEX", "男");
designer.SetDataSource("TEL", "13824350518*");
designer.Process();
string savefile = Server.MapPath("./DuFile/geovindu.xlsx");
designer.Workbook.Save(savefile, Aspose.Cells.SaveFormat.Xlsx);
string fileName = "geovindu.xlsx"; //下載文件名稱
FileStream fs = new FileStream(savefile, FileMode.Open);
byte[] bytes = new byte[(int)fs.Length];
fs.Read(bytes, 0, bytes.Length);
fs.Close();
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.HeaderEncoding = System.Text.Encoding.UTF8;
Response.ContentType = "application/octet-stream";
//通知浏览器下载文件而不是打开
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
//Response.AddHeader("Content-Length", fs.Length.ToString());
Response.BinaryWrite(bytes);
Response.Flush();
Response.End(); }

  

 /// <summary>
/// 提取文檔中的圖片
/// http://doc.evget.com/HelpDocument/AsposeWordsforNETDocumentationCHM/Aspose.Words.Drawing.Shape.html
/// </summary>
public void ExtractImagesToFiles()
{
Document doc = new Document("Image.SampleImages.doc"); NodeCollection shapes = doc.GetChildNodes(NodeType.Shape, true);
int imageIndex = 0;
foreach (Shape shape in shapes)
{
if (shape.HasImage)
{
string imageFileName = string.Format(
"Image.ExportImages.{0} Out{1}", imageIndex, FileFormatUtil.ImageTypeToExtension(shape.ImageData.ImageType));
shape.ImageData.Save(imageFileName);
imageIndex++;
}
} // Newer Microsoft Word documents (such as DOCX) may contain a different type of image container called DrawingML.
// Repeat the process to extract these if they are present in the loaded document.
NodeCollection dmlShapes = doc.GetChildNodes(NodeType.DrawingML, true);
foreach (DrawingML dml in dmlShapes)
{
if (dml.HasImage)
{
string imageFileName = string.Format(
"Image.ExportImages.{0} Out{1}", imageIndex, FileFormatUtil.ImageTypeToExtension(dml.ImageData.ImageType));
dml.ImageData.Save(imageFileName);
imageIndex++;
}
}
}

 

            //同页连续显示
Document dstDoc = new Document("TestFile.Destination.doc");
Document srcDoc = new Document("TestFile.Source.doc"); // Make the document appear straight after the destination documents content.
srcDoc.FirstSection.PageSetup.SectionStart = SectionStart.Continuous; // Append the source document using the original styles found in the source document.
dstDoc.AppendDocument(srcDoc, ImportFormatMode.KeepSourceFormatting);
dstDoc.Save("TestFile.JoinContinuous Out.doc"); //另起一页显示
// Set the appended document to start on a new page.
srcDoc.FirstSection.PageSetup.SectionStart = SectionStart.NewPage;
// Append the source document using the original styles found in the source document.
dstDoc.AppendDocument(srcDoc, ImportFormatMode.KeepSourceFormatting);
dstDoc.Save("TestFile.JoinNewPage Out.doc");

  

//实例化一个新的Word Document
//也可以在Aspose.Words.Document doc = new Aspose.Words.Document(path)中加path参数, //此path指向你设计好的Word模板路径
Aspose.Words.Document doc = new Aspose.Words.Document();
DocumentBuilder builder = new DocumentBuilder(doc);
//设置单元格内容对齐方式
builder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
//清除设置
builder.PageSetup.ClearFormatting(); DataTable tbl = new DataTable(); List<string> list = new List<string>(); if (tbl != null && tbl.Rows.Count > 0)
{
//加载小组
for (int i = 0; i < tbl.Rows.Count; i++)
{
if (!list.Contains(tbl.Rows[i]["XZ"].ToString()))
{
list.Add(tbl.Rows[i]["XZ"].ToString());
}
}
double imgcellwidth = 85;
double imgcellheight = 120;
double cellwidth = 165;
double cellheight = 18.5;
//匹配小组中的学员
builder.StartTable();//开始画Table
builder.RowFormat.Alignment = Aspose.Words.Tables.RowAlignment.Center;
string xz = string.Empty;
int count = 0;
int rowcount = 0;
for (int n = 0; n < list.Count; n++)
{
xz = list[n];
builder.RowFormat.Height = 20;
//插入Table单元格
builder.InsertCell();
//Table单元格边框线样式
builder.CellFormat.Borders.LineStyle = LineStyle.Single;
//Table此单元格宽度
builder.CellFormat.Width = 500;
//此单元格中内容垂直对齐方式
builder.CellFormat.VerticalAlignment = Aspose.Words.Tables.CellVerticalAlignment.Center;
builder.CellFormat.HorizontalMerge = Aspose.Words.Tables.CellMerge.None;
builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.None;
//字体大小
builder.Font.Size = 11;
//是否加粗
builder.Bold = true;
//向此单元格中添加内容
builder.Write(xz);
//Table行结束
builder.EndRow();
builder.Bold = false;
DataRow[] rows = tbl.Select("xz='" + xz + "'");
for (int i = 0; i < rows.Length; i = i + 2)
{
count++;
rowcount = (count - 1) * 6 + 1 + n;
//第一行
builder.InsertCell();
builder.RowFormat.Height = imgcellheight;
builder.CellFormat.Borders.LineStyle = LineStyle.Single;
//合并行单元格
builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.First;
builder.CellFormat.VerticalAlignment = Aspose.Words.Tables.CellVerticalAlignment.Center;
builder.CellFormat.TopPadding = 2;
builder.CellFormat.WrapText = false;
builder.CellFormat.Width = imgcellwidth;
if (!string.IsNullOrEmpty(rows[i]["ZPPATH"].ToString()))
{
//向此单元格中插入图片
Shape shape = new Shape(doc, ShapeType.Image);
string url = System.Configuration.ConfigurationManager.AppSettings["UserPhotosSitePath"] + "\\" + rows[i]["ZPPATH"].ToString();
shape.ImageData.SetImage(url);
shape.Width = imgcellwidth - 2;
shape.Height = imgcellheight;
shape.HorizontalAlignment = HorizontalAlignment.Center;
CompositeNode node = shape.ParentNode;
//把此图片移动到那个单元格中
builder.MoveToCell(0, rowcount, 0, 0);
builder.InsertNode(shape);
}
builder.InsertCell();
builder.RowFormat.Height = cellheight;
builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.None;
builder.CellFormat.Borders.LineStyle = LineStyle.Single;
builder.CellFormat.Width = cellwidth;
builder.Write(rows[i]["XM"].ToString());
builder.InsertCell();
builder.RowFormat.Height = imgcellheight;
builder.CellFormat.Borders.LineStyle = LineStyle.Single;
//合并行单元格
builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.First;
builder.CellFormat.VerticalAlignment = Aspose.Words.Tables.CellVerticalAlignment.Center;
builder.CellFormat.Width = imgcellwidth;
if (rows.Length > i + 1)
{
if (!string.IsNullOrEmpty(rows[i + 1]["ZPPATH"].ToString()))
{
Shape shape = new Shape(doc, ShapeType.Image);
string url = System.Configuration.ConfigurationManager.AppSettings["UserPhotosSitePath"] + "\\" + rows[i + 1]["ZPPATH"].ToString();
shape.ImageData.SetImage(url);
shape.Width = imgcellwidth - 2;
shape.Height = imgcellheight;
shape.HorizontalAlignment = HorizontalAlignment.Center;
CompositeNode node = shape.ParentNode;
builder.MoveToCell(0, rowcount, 2, 0);
builder.InsertNode(shape);
}
}
builder.InsertCell();
builder.RowFormat.Height = cellheight;
builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.None;
builder.CellFormat.Borders.LineStyle = LineStyle.Single;
builder.CellFormat.Width = cellwidth;
if (rows.Length > i + 1)
{
builder.Write(rows[i + 1]["XM"].ToString());
}
builder.EndRow();
//第二行
builder.InsertCell();
//此单元格与上一行单元格合并
builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.Previous;
builder.CellFormat.HorizontalMerge = Aspose.Words.Tables.CellMerge.None;
builder.CellFormat.Width = imgcellwidth;
builder.InsertCell();
builder.RowFormat.Height = cellheight;
builder.CellFormat.Borders.LineStyle = LineStyle.Single;
builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.None;
builder.CellFormat.Width = cellwidth;
builder.Write("单位及职务:" + rows[i]["SZDW"].ToString());
builder.InsertCell();
//此单元格与上一行单元格合并
builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.Previous;
builder.CellFormat.HorizontalMerge = Aspose.Words.Tables.CellMerge.None;
builder.CellFormat.Width = imgcellwidth;
builder.InsertCell();
builder.RowFormat.Height = cellheight;
builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.None;
builder.CellFormat.Borders.LineStyle = LineStyle.Single;
builder.CellFormat.Width = cellwidth;
if (rows.Length > i + 1)
{
builder.Write("单位及职务:" + rows[i + 1]["SZDW"].ToString());
}
builder.EndRow();
//第三行
builder.InsertCell();
//此单元格与上一行单元格合并
builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.Previous;
builder.CellFormat.HorizontalMerge = Aspose.Words.Tables.CellMerge.None;
builder.CellFormat.Width = imgcellwidth;
builder.InsertCell();
builder.RowFormat.Height = cellheight;
builder.CellFormat.Borders.LineStyle = LineStyle.Single;
builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.None;
builder.CellFormat.Width = cellwidth;
builder.Write("单位电话:" + rows[i]["DWDH"].ToString());
builder.InsertCell();
//此单元格与上一行单元格合并
builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.Previous;
builder.CellFormat.HorizontalMerge = Aspose.Words.Tables.CellMerge.None;
builder.CellFormat.Width = imgcellwidth;
builder.InsertCell();
builder.RowFormat.Height = cellheight;
builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.None;
builder.CellFormat.Borders.LineStyle = LineStyle.Single;
builder.CellFormat.Width = cellwidth;
if (rows.Length > i + 1)
{
builder.Write("单位电话:" + rows[i + 1]["DWDH"].ToString());
}
builder.EndRow();
//第四行
builder.InsertCell();
//此单元格与上一行单元格合并
builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.Previous;
builder.CellFormat.HorizontalMerge = Aspose.Words.Tables.CellMerge.None;
builder.CellFormat.Width = imgcellwidth;
builder.InsertCell();
builder.RowFormat.Height = cellheight;
builder.CellFormat.Borders.LineStyle = LineStyle.Single;
builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.None;
builder.CellFormat.Width = cellwidth;
builder.Write("手机:" + rows[i]["SJHM"].ToString());
builder.InsertCell();
//此单元格与上一行单元格合并
builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.Previous;
builder.CellFormat.HorizontalMerge = Aspose.Words.Tables.CellMerge.None;
builder.CellFormat.Width = imgcellwidth;
builder.InsertCell();
builder.RowFormat.Height = cellheight;
builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.None;
builder.CellFormat.Borders.LineStyle = LineStyle.Single;
builder.CellFormat.Width = cellwidth;
if (rows.Length > i + 1)
{
builder.Write("手机:" + rows[i + 1]["SJHM"].ToString());
}
builder.EndRow();
//第五行
builder.InsertCell();
//此单元格与上一行单元格合并
builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.Previous;
builder.CellFormat.HorizontalMerge = Aspose.Words.Tables.CellMerge.None;
builder.CellFormat.Width = imgcellwidth;
builder.InsertCell();
builder.RowFormat.Height = cellheight;
builder.CellFormat.Borders.LineStyle = LineStyle.Single;
builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.None;
builder.CellFormat.Width = cellwidth;
builder.Write("邮编:" + rows[i]["DWYB"].ToString());
builder.InsertCell();
//此单元格与上一行单元格合并
builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.Previous;
builder.CellFormat.HorizontalMerge = Aspose.Words.Tables.CellMerge.None;
builder.CellFormat.Width = imgcellwidth;
builder.InsertCell();
builder.RowFormat.Height = cellheight;
builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.None;
builder.CellFormat.Borders.LineStyle = LineStyle.Single;
builder.CellFormat.Width = cellwidth;
if (rows.Length > i + 1)
{
builder.Write("邮编:" + rows[i + 1]["DWYB"].ToString());
}
builder.EndRow();
//第六行
builder.InsertCell();
//此单元格与上一行单元格合并
builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.Previous;
builder.CellFormat.HorizontalMerge = Aspose.Words.Tables.CellMerge.None;
builder.CellFormat.Width = imgcellwidth;
builder.InsertCell();
builder.RowFormat.Height = cellheight;
builder.CellFormat.Borders.LineStyle = LineStyle.Single;
builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.None;
builder.CellFormat.Width = cellwidth;
builder.Write("Email:" + rows[i]["DZYJ"].ToString());
builder.InsertCell();
//此单元格与上一行单元格合并
builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.Previous;
builder.CellFormat.HorizontalMerge = Aspose.Words.Tables.CellMerge.None;
builder.CellFormat.Width = imgcellwidth;
builder.InsertCell();
builder.RowFormat.Height = cellheight;
builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.None;
builder.CellFormat.Borders.LineStyle = LineStyle.Single;
builder.CellFormat.Width = cellwidth;
if (rows.Length > i + 1)
{
builder.Write("Email:" + rows[i + 1]["DZYJ"].ToString());
}
builder.EndRow();
}
}
builder.EndTable();
}
string name = "学员通讯录.doc";
//以下载Word的形式打开Wrod
//如图所示:
doc.Save(name, Aspose.Words.SaveFormat.Docx);

  

https://github.com/asposemarketplace/Aspose_for_OpenXML