功能:
- 从数据库中查询出数据
- 利用Aspose.cell + Excel模板绑定数据源生成Excel文件
- 通过Aspose.pdf + 生成好的Excel生成PDF文件
实现:
查询数据,根据Excel模板生成Excel文件
var comments = SQLHelper.ExecuteScalar("SELECT TOP 1 BookingOrderComments FROM dbo.BookingOrderHead WHERE BookingOrderHeadID = 181390"); //var dt = SQLHelper.ExecuteDataTable("SELECT TOP 1 BookingOrderComments FROM dbo.BookingOrderHead WHERE BookingOrderCode = 'B1709001412'"); var dt = new DataTable("tbTest"); dt.Columns.Add("BookingOrderComments"); var dr = dt.NewRow();
// 替换Tab键(含有Tab键会导致PDF出现方块乱码) var str = cbRepleace.Checked ? comments.ToString().Replace(" ", " ") : comments.ToString(); dr.SetField<string>("BookingOrderComments", str); dt.Rows.Add(dr); var designer = new WorkbookDesigner(); //给模板对象设置数据源 designer.SetDataSource(dt); //excel模板的地址 var excelModel = Application.StartupPath + "\Template.xltx"; designer.Workbook = new Workbook(excelModel); designer.Process();//全自动赋值 var dialog = new FolderBrowserDialog(); dialog.Description = "请选择PDF文件保存路径"; if (dialog.ShowDialog() == DialogResult.OK) { //新生成的excel的保存地址 string fileToSave = dialog.SelectedPath + @"" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx"; if (System.IO.File.Exists(fileToSave) == true) { System.IO.File.Delete(fileToSave); } designer.Workbook.Save(fileToSave); txtSourcePath.Text = fileToSave; }
生成PDF文件:
if (!Directory.Exists(txtPdfFolder.Text)) { Directory.CreateDirectory(txtPdfFolder.Text); } var book = new Workbook(txtSourcePath.Text.Trim()); var options = new Aspose.Cells.PdfSaveOptions() { OnePagePerSheet = true }; var pdfStream = new MemoryStream(); book.Save(pdfStream, options); var pdfDocument = new Document(pdfStream); var pdfFile = this.txtPdfFolder.Text.Trim() + @"" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".pdf"; pdfDocument.Save(pdfFile);
源代码:https://pan.baidu.com/s/1i58BDlj