private void FormEmail_Load(object sender, EventArgs e) { txtHost.Text = settings.Host; txtForm.Text = settings.From; txtName.Text = settings.Name; txtPassword.Text = settings.Password; txtSubjec.Text = settings.EmailSubject; txtPort.Text = settings.Port; if (settings.Encryption == "SSL") { comboBox1.SelectedIndex = 1; } else if (settings.Encryption == "") { comboBox1.SelectedIndex = 0; } DirectoryInfo d = new DirectoryInfo(textBox2.Text + "\\"); //Assuming Test is your Folder FileInfo[] Files = d.GetFiles(".\\" + "email*.dotx"); //Getting Text files if (Files.Length == 0) { //Create word document Document document = new Document(); Paragraph p = document.AddSection().AddParagraph(); TextRange txtRang = p.AppendText("H63TWX11072"); txtRang.CharacterFormat.FontName = "C39HrP60DlTt"; txtRang.CharacterFormat.FontSize = 80; txtRang.CharacterFormat.TextColor = Color.SeaGreen; Section section = document.AddSection(); //Initialize a Header Instance HeaderFooter header = document.Sections[0].HeadersFooters.Header; //Add Header Paragraph and Format Paragraph paragraph = header.AddParagraph(); paragraph.Format.HorizontalAlignment = Spire.Doc.Documents.HorizontalAlignment.Left; //Append Picture for Header Paragraph and Format Spire.Doc.Fields.DocPicture headerimage = paragraph.AppendPicture(Image.FromFile(@"dackeasy_logo.png")); headerimage.VerticalAlignment = ShapeVerticalAlignment.Bottom; paragraph = section.AddParagraph(); string str = "Dear <CONTACT PERSON>," + "\r\n"; paragraph.AppendText(str); str = "As an independent Word .NET component, Spire.Doc for .NET doesn't need Microsoft Word to be installed on the machine. However, it can incorporate Microsoft Word document creation capabilities into any developers.NET applications.As an independent Word .NET component, Spire.Doc for .NET doesn't need Microsoft Word to be installed on the machine. However, it can incorporate Microsoft Word document creation capabilities into any developers’.NET applications." + "\r\n"; paragraph.AppendText(str); document.SaveToFile("email.dotx", FileFormat.Dotx); d = new DirectoryInfo(Directory.GetCurrentDirectory());//Assuming Test is your Folder Files = d.GetFiles("email*.dotx"); } comboBox2.DataSource = Files; comboBox2.DisplayMember = "demo"; //Center(this); }
public IActionResult Batchs(string command, string ids) { var response = ResponseModelFactory.CreateInstance; string sWebRootFolder = _hostingEnvironment.WebRootPath + "\\UploadFiles\\ImportUserInfoWord\\"; var timeInfo = DateTime.Now.ToString("yyyyMMddHHmmss"); var wordName = timeInfo + "address.docx"; string wordUrl = sWebRootFolder + wordName; MemoryStream ms = new MemoryStream(); XWPFDocument m_Docx = new XWPFDocument(); m_Docx.Write(ms); ms.Flush(); SaveToFile(ms, wordUrl); List <string> list = new List <string>(); using (_dbContext) { //document111.LoadFromFile(sWebRootFolder + "test.docx"); Document document111 = new Document(); document111.LoadFromFile(wordUrl); Section section = document111.Sections[0]; document111.Watermark = null; section.Paragraphs[0].AppendBookmarkStart("picture"); section.Paragraphs[0].AppendBookmarkEnd("picture"); var parameters = ids.Split(",").Select((id, index) => new SqlParameter(string.Format("@p{0}", index), id)).ToList(); var parameterNames = string.Join(", ", parameters.Select(p => p.ParameterName)); var entities = _dbContext.GrabageRoom.Where(x => ids.IndexOf(x.GarbageRoomUuid.ToString()) >= 0).ToList(); for (int i = 0; i < entities.Count; i++) { var pata = _hostingEnvironment.WebRootPath + EWM.GetEWM2("d_" + entities[i].GarbageRoomUuid.ToString(), _hostingEnvironment, entities[i].Ljname); //实例化BookmarksNavigator类,指定需要添加图片的书签“” BookmarksNavigator bn = new BookmarksNavigator(document111); bn.MoveToBookmark("picture", true, true); //添加段落,加载图片并插入到段落 Section section0 = document111.AddSection(); Spire.Doc.Documents.Paragraph paragraph = section0.AddParagraph(); Image image = Image.FromFile(pata); //DocPicture picture = paragraph.AppendPicture(image); DocPicture picture = document111.Sections[0].Paragraphs[0].AppendPicture(image); picture.Width = 160; picture.Height = 180; //picture.HorizontalPosition = 100.0f; //picture.VerticalPosition = 100.0f; bn.InsertParagraph(paragraph); document111.Sections.Remove(section0); //string output = sWebRootFolder + "test.docx"; document111.SaveToFile(wordUrl, FileFormat.Docx); } list.Add(wordUrl); //关闭进程 document111.Dispose(); var time = DateTime.Now.ToString("yyyyMMddHHmmssfff"); var check = ZIP.CompressMulti(list, _hostingEnvironment.WebRootPath + "\\UploadFiles\\EWM\\" + time, false); if (check) { response.SetSuccess("导出成功"); response.SetData("\\UploadFiles\\EWM\\" + time + ".zip"); } else { response.SetFailed("导出失败"); } return(Ok(response)); } }
static void Main(string[] args) { int opcaoDeslogado = 0; int opcaoLogado = 0; int opcaoTransacao = 0; int opcaoExtrato = 0; TransacaoRepositorio transacaoRepositorio = new TransacaoRepositorio(); UsuarioRepositorio usuarioRepositorio = new UsuarioRepositorio(); do { MenuUtils.MenuDeslogado(); opcaoDeslogado = int.Parse(Console.ReadLine()); switch (opcaoDeslogado) { case 1: UsuarioViewController.CadastrarUsuario(); break; case 2: UsuarioViewModel usuarioRecuperado = UsuarioViewController.EfetuarLogin(); if (usuarioRecuperado != null) { Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine($"Seja bem vindo - {usuarioRecuperado.Nome}"); Console.ResetColor(); do { MenuUtils.MenuLogado(); opcaoLogado = int.Parse(Console.ReadLine()); switch (opcaoLogado) { case 1: do { MenuUtils.MenuTransacao(); opcaoTransacao = int.Parse(Console.ReadLine()); switch (opcaoTransacao) { case 1: TransacaoViewController.CadastrarDespesa(); break; case 2: TransacaoViewController.DepositarNaConta(); break; } } while (opcaoTransacao != 0); break; case 2: do { MenuUtils.MenuExtrato(); opcaoExtrato = int.Parse(Console.ReadLine()); switch (opcaoExtrato) { case 1: TransacaoViewController.ListarCredito(); break; case 2: TransacaoViewController.ListarDeposito(); break; case 3: TransacaoViewController.SaldoAtual(); break; case 4: TransacaoViewController.Zipar(); break; case 5: List <TransacaoViewModel> extratoDeTransacoes = transacaoRepositorio.Listar(); List <TransacaoViewModel> extratoDeDepositos = transacaoRepositorio.ListarDeposito(); Spire.Doc.Document document = new Spire.Doc.Document(); Paragraph paragraph = document.AddSection().AddParagraph(); foreach (var item in extratoDeTransacoes) { Console.ForegroundColor = ConsoleColor.DarkBlue; paragraph.AppendText($"Descrição: {item.Descricao} \n Valor do Crédito: {item.ValorCredito} \n Data da Transação: {item.DataDaTransacao}\n"); Console.ResetColor(); } foreach (var item in extratoDeDepositos) { Console.ForegroundColor = ConsoleColor.DarkBlue; paragraph.AppendText($"Descrição: {item.Descricao} \n Valor do Deposito: {item.ValorDeposito} \n Data da Transação: {item.DataDaTransacao}\n"); Console.ResetColor(); } document.SaveToFile("Sample.doc", FileFormat.Doc); try { System.Diagnostics.Process.Start("Sample.doc"); } catch { } break; } } while (opcaoExtrato != 0); break; } } while (opcaoLogado != 0); } break; case 3: UsuarioViewController.ListarUsuario(); List <UsuarioViewModel> listaDeUsuarios = usuarioRepositorio.Listar(); Spire.Doc.Document documento = new Spire.Doc.Document(); Paragraph paragrafo = documento.AddSection().AddParagraph(); foreach (var item in listaDeUsuarios) { paragrafo.AppendText($"Nome: {item.Nome}\nData de Nascimento: {item.DataNascimento}\nEmail: {item.Email}\nSenha: {item.Senha}\n\n"); documento.SaveToFile("Sample.doc", FileFormat.Doc); try { System.Diagnostics.Process.Start("Sample.doc"); } catch { } } break; default: break; } } while (opcaoDeslogado != 0); Console.ForegroundColor = ConsoleColor.DarkRed; Console.WriteLine("Obrigado pela atenção!"); Console.ResetColor(); }
static void Main(string[] args) { // Changes \ to / in the path string string oldstr = @"\"; string newstr = @"/"; string pdf_path_original = string.Empty; // Tells the file path Console.WriteLine("FILE PATH: "); Console.OutputEncoding = Encoding.GetEncoding(932); Console.WriteLine("ファイル パス: "); pdf_path_original = Console.ReadLine(); string pdf_path = pdf_path_original.Replace(oldstr, newstr); // Tells the file name Console.WriteLine(".pdf`s Name: "); Console.OutputEncoding = Encoding.GetEncoding(932); Console.WriteLine("ファイルの名前は: "); string pdf_file_name = Console.ReadLine(); string path_n_name = pdf_path + "/" + pdf_file_name + ".pdf"; // Tells the file alignment Console.WriteLine("Text alignment: "); Console.OutputEncoding = Encoding.GetEncoding(932); Console.WriteLine("テキスト配置: "); Console.WriteLine("1: Left (左), and Right (右), or 2: Middle (真ん中)"); string caseSwitch = Console.ReadLine(); Console.WriteLine(); // Tells the file start page and end page Console.WriteLine(".pdf`s Initial Page "); Console.OutputEncoding = Encoding.GetEncoding(932); Console.WriteLine("最初のページは: "); string startpage_string = Console.ReadLine(); int startpage = Int32.Parse(startpage_string); Console.WriteLine(".pdf`s Last Page "); Console.OutputEncoding = Encoding.GetEncoding(932); Console.WriteLine("最後のページは: "); string endpage_string = Console.ReadLine(); int endpage = Int32.Parse(endpage_string); // Creates blank pdf files for (int i = startpage; i <= endpage; i++) { string convi = i.ToString(); // Creates a temp folder for the pdf files System.IO.Directory.CreateDirectory(pdf_path + "/" + "temp"); System.IO.FileStream pdf_creator = new System.IO.FileStream(pdf_path + "/" + "temp" + "/" + convi + ".pdf", System.IO.FileMode.Create); pdf_creator.Close(); } // Tells the attributes from the new pdf files, and the original pdf source iTextSharp.text.pdf.PdfReader reader = null; iTextSharp.text.Document sourceDocument = null; iTextSharp.text.pdf.PdfCopy pdfCopyProvider = null; iTextSharp.text.pdf.PdfImportedPage importedPage = null; reader = new iTextSharp.text.pdf.PdfReader(path_n_name); sourceDocument = new iTextSharp.text.Document(reader.GetPageSizeWithRotation(startpage)); sourceDocument.Open(); // Creates a .docx to receive the pdf's text Spire.Doc.Document word_doc = new Spire.Doc.Document(); // Word doc formatting Spire.Doc.Section word_doc_section = word_doc.AddSection(); Spire.Doc.Documents.Paragraph word_doc_paragraph = word_doc_section.AddParagraph(); Spire.Doc.Documents.Paragraph word_doc_paragraph_page = word_doc_section.AddParagraph(); // Update those blank pdf files, inserting the copied pages into it try { for (int i = startpage; i <= endpage; i++) { string convi = i.ToString(); pdfCopyProvider = new PdfCopy(sourceDocument, new System.IO.FileStream(pdf_path + "/" + "temp" + "/" + convi + ".pdf", System.IO.FileMode.Append)); sourceDocument.Open(); importedPage = pdfCopyProvider.GetImportedPage(reader, i); pdfCopyProvider.AddPage(importedPage); } sourceDocument.Close(); reader.Close(); } // ERROR catch (Exception ex) { Console.WriteLine("Error! "); Console.OutputEncoding = Encoding.GetEncoding(932); Console.WriteLine("エラー ! "); throw ex; } // Collects the text without furigana from the listed pdf files switch (caseSwitch) { // case 1 reffers to the left and right alignments of the pdf text case "1": Console.WriteLine(); for (int i = startpage; i <= endpage; i++) { // the following refers to the int counter of pages being converted into string string convi = i.ToString(); Console.OutputEncoding = Encoding.GetEncoding(932); Console.WriteLine("今のページ: " + convi); Console.WriteLine("Current Page: " + convi); // the following refers to the bitmiracle api pdf to get the texts using (BitMiracle.Docotic.Pdf.PdfDocument pdf_1 = new BitMiracle.Docotic.Pdf.PdfDocument(pdf_path + "/" + "temp" + "/" + convi + ".pdf")) { BitMiracle.Docotic.Pdf.PdfPage page = pdf_1.Pages[0]; foreach (PdfTextData data in page.GetWords()) { if (data.FontSize > 6 && data.Position.X < 600) { string text = data.Text; text.TrimEnd(); Console.OutputEncoding = Encoding.GetEncoding(932); Console.WriteLine(text); //word_builder.Writeln(text); word_doc_paragraph.AppendText(text); } } foreach (PdfTextData data in page.GetWords()) { if (data.FontSize > 6 && data.Position.X > 600) { string text = data.Text; text.TrimEnd(); Console.OutputEncoding = Encoding.GetEncoding(932); Console.WriteLine(text); word_doc_paragraph.AppendText(text); } } } // the following lines reffers to the space between pages of the pdf text Console.WriteLine(); Console.WriteLine(); Console.WriteLine(); Console.WriteLine(); Console.WriteLine(); // the followin reffers to the extra lines on word text word_doc_paragraph.AppendText(" "); word_doc_paragraph.AppendText("CURRENT PAGE: " + convi); word_doc_paragraph = word_doc_section.AddParagraph(); word_doc.Sections[0].Paragraphs[i].AppendBreak(BreakType.PageBreak); } break; // case 2 reffers to the alignment of the pdf text that is centralized case "2": Console.WriteLine(); for (int i = startpage; i <= endpage; i++) { // the following refers to the int counter of pages being converted into string string convi = i.ToString(); Console.OutputEncoding = Encoding.GetEncoding(932); Console.WriteLine("今のページ: " + convi); Console.WriteLine("Current Page: " + convi); // the following refers to the bitmiracle api pdf to get the texts using (BitMiracle.Docotic.Pdf.PdfDocument pdf_1 = new BitMiracle.Docotic.Pdf.PdfDocument(pdf_path + "/" + "temp" + "/" + convi + ".pdf")) { BitMiracle.Docotic.Pdf.PdfPage page = pdf_1.Pages[0]; foreach (PdfTextData data in page.GetWords()) { if (data.FontSize > 6) { string text = data.Text; text.TrimEnd(); Console.OutputEncoding = Encoding.GetEncoding(932); Console.WriteLine(text); word_doc_paragraph.AppendText(text); } } } Console.WriteLine(); Console.WriteLine(); Console.WriteLine(); Console.WriteLine(); Console.WriteLine(); word_doc_paragraph.AppendText(" "); word_doc_paragraph.AppendText("CURRENT PAGE: " + convi); word_doc_paragraph = word_doc_section.AddParagraph(); word_doc.Sections[0].Paragraphs[i].AppendBreak(BreakType.PageBreak); } break; default: Console.OutputEncoding = Encoding.GetEncoding(932); Console.WriteLine("error! (エラー)"); Console.ReadKey(); break; } // The following refers to creating a .docx file, opening up the file and deleting the temp folder word_doc.SaveToFile(pdf_path + "/" + pdf_file_name + ".docx", FileFormat.Docx); System.IO.Directory.Delete(pdf_path + "/" + "temp", true); try { System.Diagnostics.Process.Start(pdf_path + "/" + pdf_file_name + ".docx"); } catch { Console.WriteLine("Error! "); Console.OutputEncoding = Encoding.GetEncoding(932); Console.WriteLine("エラー ! "); } }
public void Export(DataGridView dataGrid, string filename) { Spire.Doc.Document document = new Spire.Doc.Document(); Spire.Doc.Section section = document.AddSection(); section.PageSetup.Orientation = Spire.Doc.Documents.PageOrientation.Landscape; AddHeaderTitle(section); Spire.Doc.Table table = section.AddTable(true); String[] header = { "ID", "Full Name", "Date of birth", "Gender", "Phone", "Email", "Position" }; int RowCount = dataGrid.Rows.Count; int ColumnCount = dataGrid.Columns.Count; String[][] data = new String[RowCount][]; for (int i = 0; i < RowCount; i++) { data[i] = new String[ColumnCount]; } //add rows for (int c = 0; c < ColumnCount; c++) { for (int r = 0; r < RowCount; r++) { if (dataGrid.Rows[r].Cells[c].Value.GetType() == typeof(DateTime)) { data[r][c] = ((DateTime)dataGrid.Rows[r].Cells[c].Value).ToString("dd/MM/yyyy"); } else { data[r][c] = dataGrid.Rows[r].Cells[c].Value.ToString(); } } } table.ResetCells(data.Length + 1, header.Length); TableRow FRow = table.Rows[0]; FRow.IsHeader = false; FRow.Height = 23; //FRow.RowFormat.BackColor = Color.AliceBlue; for (int i = 0; i < header.Length; i++) { //Cell Alignment Spire.Doc.Documents.Paragraph p = FRow.Cells[i].AddParagraph(); FRow.Cells[i].CellFormat.VerticalAlignment = VerticalAlignment.Middle; p.Format.HorizontalAlignment = Spire.Doc.Documents.HorizontalAlignment.Center; //Data Format Spire.Doc.Fields.TextRange TR = p.AppendText(header[i]); TR.CharacterFormat.FontName = "Calibri"; TR.CharacterFormat.FontSize = 14; TR.CharacterFormat.TextColor = Color.Black; TR.CharacterFormat.Bold = true; } //Data Row for (int r = 0; r < data.Length; r++) { TableRow DataRow = table.Rows[r + 1]; //Row Height DataRow.Height = 20; //C Represents Column. for (int c = 0; c < data[r].Length; c++) { //Cell Alignment DataRow.Cells[c].CellFormat.VerticalAlignment = VerticalAlignment.Middle; //Fill Data in Rows Spire.Doc.Documents.Paragraph p2 = DataRow.Cells[c].AddParagraph(); Spire.Doc.Fields.TextRange TR2 = p2.AppendText(data[r][c]); //Format Cells p2.Format.HorizontalAlignment = Spire.Doc.Documents.HorizontalAlignment.Center; TR2.CharacterFormat.FontName = "Calibri"; TR2.CharacterFormat.FontSize = 12; TR2.CharacterFormat.TextColor = Color.Black; } } //Save and Launch document.SaveToFile(filename); MessageBox.Show("Document Created Successfully!", "Export File", MessageBoxButtons.OK, MessageBoxIcon.Information); document.Close(); }
/// <summary> /// 透過既有的套印檔匯出 Word 文件 (以「編輯書籤內容」方式套印) /// </summary> /// <param name="result">回傳: 執行結果</param> /// <param name="msg">回傳: 訊息</param> /// <returns>串流資訊</returns> public byte[] ExportResumeByDocx_Bookmark(out bool result, out string msg) { result = true; msg = ""; MemoryStream ms = new MemoryStream(); try { Spire.Doc.Document document = new Spire.Doc.Document(); //載入套印檔 //注意: 實際運作時,若同一時間有兩位以上使用者同時進行套印,會產生「無法開啟已開啟檔案」的錯誤 //建議實作時,一個使用者執行匯出動作時先複製一個套印檔,完成套印後再將複製的檔案刪除,即可避開錯誤 document.LoadFromFile(HttpContext.Current.Server.MapPath("~/App_Data/MyResumeSample_Bookmark.docx")); #region 定義樣式 //定義樣式 BasicStyle: 一般段落文字 ParagraphStyle style = new ParagraphStyle(document) { Name = "Basic" }; //style.ParagraphFormat.HorizontalAlignment = HorizontalAlignment.Justify; style.CharacterFormat.FontName = "標楷體"; style.CharacterFormat.FontSize = 12; document.Styles.Add(style); #endregion //取得要套印的內容 Resume model = new Resume(); #region 套印內容 BookmarksNavigator bookmarkNavigator = new BookmarksNavigator(document); Spire.Doc.Bookmark bookmark = document.Bookmarks.FindByName("NAME"); if (bookmark != null) { bookmarkNavigator.MoveToBookmark("NAME"); bookmarkNavigator.ReplaceBookmarkContent(string.IsNullOrEmpty(model.Name) ? "" : model.Name, false); } bookmark = document.Bookmarks.FindByName("GENDER"); if (bookmark != null) { bookmarkNavigator.MoveToBookmark("GENDER"); bookmarkNavigator.ReplaceBookmarkContent(string.IsNullOrEmpty(model.Gender) ? "" : model.Gender, false); } bookmark = document.Bookmarks.FindByName("EMAIL"); if (bookmark != null) { bookmarkNavigator.MoveToBookmark("EMAIL"); bookmarkNavigator.ReplaceBookmarkContent(string.IsNullOrEmpty(model.Email) ? "" : model.Email, false); } bookmark = document.Bookmarks.FindByName("ADDRESS"); if (bookmark != null) { bookmarkNavigator.MoveToBookmark("ADDRESS"); bookmarkNavigator.ReplaceBookmarkContent(string.IsNullOrEmpty(model.Address) ? "" : model.Address, false); } bookmark = document.Bookmarks.FindByName("PHONE"); if (bookmark != null) { bookmarkNavigator.MoveToBookmark("PHONE"); bookmarkNavigator.ReplaceBookmarkContent(string.IsNullOrEmpty(model.Phone) ? "" : model.Phone, false); } bookmark = document.Bookmarks.FindByName("MOBILE"); if (bookmark != null) { bookmarkNavigator.MoveToBookmark("MOBILE"); bookmarkNavigator.ReplaceBookmarkContent(string.IsNullOrEmpty(model.Mobile) ? "" : model.Mobile, false); } Spire.Doc.Section tempSection = document.AddSection(); string html; ParagraphBase replacementFirstItem; ParagraphBase replacementLastItem; TextBodySelection selection; TextBodyPart part; //HTML Contents: Desciprion1 bookmark = document.Bookmarks.FindByName("DESCRIPTION1"); if (bookmark != null) { html = string.IsNullOrEmpty(model.Description1) ? "" : HttpUtility.HtmlDecode(model.Description1); tempSection.AddParagraph().AppendHTML(html); replacementFirstItem = tempSection.Paragraphs[0].Items.FirstItem as ParagraphBase; replacementLastItem = tempSection.Paragraphs[tempSection.Paragraphs.Count - 1].Items.LastItem as ParagraphBase; selection = new TextBodySelection(replacementFirstItem, replacementLastItem); //將內容各段落套用指定的樣式 for (int i = 0; i < tempSection.Paragraphs.Count; i++) { tempSection.Paragraphs[i].ApplyStyle("Basic"); } part = new TextBodyPart(selection); // locate the bookmark bookmarkNavigator.MoveToBookmark("DESCRIPTION1"); //replace the content of bookmark bookmarkNavigator.ReplaceBookmarkContent(part); //remove temp section document.Sections.Remove(tempSection); } //HTML Contents: Desciprion2 bookmark = document.Bookmarks.FindByName("DESCRIPTION2"); if (bookmark != null) { tempSection = document.AddSection(); html = string.IsNullOrEmpty(model.Description2) ? "" : HttpUtility.HtmlDecode(model.Description2); tempSection.AddParagraph().AppendHTML(html); replacementFirstItem = tempSection.Paragraphs[0].Items.FirstItem as ParagraphBase; replacementLastItem = tempSection.Paragraphs[tempSection.Paragraphs.Count - 1].Items.LastItem as ParagraphBase; selection = new TextBodySelection(replacementFirstItem, replacementLastItem); part = new TextBodyPart(selection); bookmarkNavigator.MoveToBookmark("DESCRIPTION2"); bookmarkNavigator.ReplaceBookmarkContent(part); document.Sections.Remove(tempSection); } //圖片 bookmark = document.Bookmarks.FindByName("IMG"); if (bookmark != null) { bookmarkNavigator.MoveToBookmark("IMG"); Spire.Doc.Section section_img = document.AddSection(); Spire.Doc.Documents.Paragraph paragraph_img = section_img.AddParagraph(); Image img = Image.FromFile(HttpContext.Current.Server.MapPath("~/App_Data/Penguins.jpg")); DocPicture picture = paragraph_img.AppendPicture(img); bookmarkNavigator.InsertParagraph(paragraph_img); document.Sections.Remove(section_img); } #endregion #region 動態新增表格 if (model.JobHistory.Count > 0) { Spire.Doc.Section s = document.AddSection(); Spire.Doc.Table table = s.AddTable(true); string[] Header = { "序號", "任職公司", "職稱", "開始時間", "結束時間" }; //Add Cells table.ResetCells(model.JobHistory.Count + 1, Header.Length); //Header Row TableRow FRow = table.Rows[0]; FRow.IsHeader = true; for (int i = 0; i < Header.Length; i++) { Spire.Doc.Documents.Paragraph p = FRow.Cells[i].AddParagraph(); FRow.Cells[i].CellFormat.VerticalAlignment = VerticalAlignment.Middle; p.Format.HorizontalAlignment = HorizontalAlignment.Center; TextRange TR = p.AppendText(Header[i]); TR.CharacterFormat.Bold = true; } //Data Row model.JobHistory = model.JobHistory.OrderBy(x => x.StartDT).ToList(); for (int r = 0; r < model.JobHistory.Count; r++) { TableRow DataRow = table.Rows[r + 1]; string[] data = new string[] { (r + 1).ToString(), model.JobHistory[r].CompanyName, model.JobHistory[r].JobTitle, (model.JobHistory[r].StartDT.HasValue ? model.JobHistory[r].StartDT.Value.ToShortDateString() : ""), (model.JobHistory[r].EndDT.HasValue ? model.JobHistory[r].EndDT.Value.ToShortDateString() : "") }; //Columns. for (int c = 0; c < data.Length; c++) { //Cell Alignment DataRow.Cells[c].CellFormat.VerticalAlignment = VerticalAlignment.Middle; //Fill Data in Rows Spire.Doc.Documents.Paragraph p2 = DataRow.Cells[c].AddParagraph(); TextRange TR2 = p2.AppendText(data[c]); //Format Cells p2.Format.HorizontalAlignment = HorizontalAlignment.Center; } } bookmarkNavigator.MoveToBookmark("TABLE"); bookmarkNavigator.InsertTable(table); } #endregion #region 套用樣式 //套用文章段落樣式 for (int s = 0; s < document.Sections.Count; s++) { Spire.Doc.Section sections = document.Sections[s]; //套用文章段落樣式 for (int p = 0; p < sections.Paragraphs.Count; p++) { Spire.Doc.Documents.Paragraph pgh = sections.Paragraphs[p]; pgh.ApplyStyle("Basic"); pgh.Format.BeforeSpacing = 12; } //套用表格樣式 for (int t = 0; t < document.Sections[s].Tables.Count; t++) { Spire.Doc.Table table = (Spire.Doc.Table)document.Sections[s].Tables[t]; table.PreferredWidth = new PreferredWidth(WidthType.Percentage, 100); table.TableFormat.IsAutoResized = true; //set table border //table.TableFormat.Borders.Right.BorderType = Spire.Doc.Documents.BorderStyle.Thick; //table.TableFormat.Borders.Left.BorderType = Spire.Doc.Documents.BorderStyle.Thick; //table.TableFormat.Borders.Top.BorderType = Spire.Doc.Documents.BorderStyle.Thick; //table.TableFormat.Borders.Bottom.BorderType = Spire.Doc.Documents.BorderStyle.Thick; //table.TableFormat.Borders.Horizontal.BorderType = Spire.Doc.Documents.BorderStyle.Thick; //table.TableFormat.Borders.Vertical.BorderType = Spire.Doc.Documents.BorderStyle.Thick; for (int tr = 0; tr < table.Rows.Count; tr++) { for (int td = 0; td < table.Rows[tr].Cells.Count; td++) { for (int t_ph = 0; t_ph < table.Rows[tr].Cells[td].Paragraphs.Count; t_ph++) { table.Rows[tr].Cells[td].Paragraphs[t_ph].ApplyStyle("Basic"); } } } } } #endregion //匯出 document.SaveToStream(ms, FileFormat.Docx); } catch (Exception ex) { result = false; msg = ex.Message; } if (result) { return(ms.ToArray()); } else { return(null); } }
/// <summary> /// 透過既有的套印檔匯出 Word 文件 (以「取代文字」方式套印) /// </summary> /// <param name="result">回傳: 執行結果</param> /// <param name="msg">回傳: 訊息</param> /// <returns>串流資訊</returns> public byte[] ExportResumeByDocx_ReplaceText(out bool result, out string msg) { result = true; msg = ""; MemoryStream ms = new MemoryStream(); try { Spire.Doc.Document document = new Spire.Doc.Document(); //載入套印檔 //注意: 實際運作時,若同一時間有兩位以上使用者同時進行套印,會產生「無法開啟已開啟檔案」的錯誤 //建議實作時,一個使用者執行匯出動作時先複製一個套印檔,完成套印後再將複製的檔案刪除,即可避開錯誤 document.LoadFromFile(HttpContext.Current.Server.MapPath("~/App_Data/MyResumeSample.docx")); #region 定義樣式 //定義樣式 BasicStyle: 一般段落文字 ParagraphStyle style = new ParagraphStyle(document) { Name = "Basic" }; //style.ParagraphFormat.HorizontalAlignment = HorizontalAlignment.Justify; style.CharacterFormat.FontName = "標楷體"; style.CharacterFormat.FontSize = 12; document.Styles.Add(style); #endregion //取得要套印的內容 Resume model = new Resume(); #region 套印內容 document.Replace("{$Name$}", string.IsNullOrEmpty(model.Name) ? "" : model.Name, false, true); document.Replace("{$Gender$}", string.IsNullOrEmpty(model.Gender) ? "" : model.Gender, false, true); document.Replace("{$Email$}", string.IsNullOrEmpty(model.Email) ? "" : model.Email, false, true); document.Replace("{$Address$}", string.IsNullOrEmpty(model.Address) ? "" : model.Address, false, true); document.Replace("{$Phone$}", string.IsNullOrEmpty(model.Phone) ? "" : model.Phone, false, true); document.Replace("{$Mobile$}", string.IsNullOrEmpty(model.Mobile) ? "" : model.Mobile, false, true); //包含 HTML 字串需放置在 paragraph 內, //因此套印檔中的 {$Description1$} 及 {$Description2$} 需透過「以 paragraph 取代文字」方式替代 //Replace {$Description1$} with paragraph TextSelection selection = document.FindString("{$Description1$}", false, true); TextRange range = selection.GetAsOneRange(); Spire.Doc.Documents.Paragraph paragraph = range.OwnerParagraph; paragraph.ApplyStyle("Basic"); paragraph.Replace("{$Description1$}", "", false, false); paragraph.AppendHTML(string.IsNullOrEmpty(model.Description1) ? "" : HttpUtility.HtmlDecode(model.Description1)); //Replace {$Description2$} with paragraph selection = document.FindString("{$Description2$}", false, true); range = selection.GetAsOneRange(); paragraph = range.OwnerParagraph; paragraph.ApplyStyle("Basic"); paragraph.Replace("{$Description2$}", "", false, false); paragraph.AppendHTML(string.IsNullOrEmpty(model.Description2) ? "" : HttpUtility.HtmlDecode(model.Description2)); //Replace {$Img$} with Image DocPicture pic = new DocPicture(document); pic.LoadImage(Image.FromFile(HttpContext.Current.Server.MapPath("~/App_Data/Penguins.jpg"))); selection = document.FindString("{$Img$}", false, true); range = selection.GetAsOneRange(); range.OwnerParagraph.ChildObjects.Insert(0, pic); range.OwnerParagraph.ChildObjects.Remove(range); #endregion #region 動態新增表格 if (model.JobHistory.Count > 0) { Spire.Doc.Section s = document.AddSection(); Spire.Doc.Table table = s.AddTable(true); string[] Header = { "序號", "任職公司", "職稱", "開始時間", "結束時間" }; //Add Cells table.ResetCells(model.JobHistory.Count + 1, Header.Length); //Header Row TableRow FRow = table.Rows[0]; FRow.IsHeader = true; for (int i = 0; i < Header.Length; i++) { Spire.Doc.Documents.Paragraph p = FRow.Cells[i].AddParagraph(); FRow.Cells[i].CellFormat.VerticalAlignment = VerticalAlignment.Middle; p.Format.HorizontalAlignment = HorizontalAlignment.Center; TextRange TR = p.AppendText(Header[i]); TR.CharacterFormat.Bold = true; } //Data Row model.JobHistory = model.JobHistory.OrderBy(x => x.StartDT).ToList(); for (int r = 0; r < model.JobHistory.Count; r++) { TableRow DataRow = table.Rows[r + 1]; string[] data = new string[] { (r + 1).ToString(), model.JobHistory[r].CompanyName, model.JobHistory[r].JobTitle, (model.JobHistory[r].StartDT.HasValue ? model.JobHistory[r].StartDT.Value.ToShortDateString() : ""), (model.JobHistory[r].EndDT.HasValue ? model.JobHistory[r].EndDT.Value.ToShortDateString() : "") }; //Columns. for (int c = 0; c < data.Length; c++) { //Cell Alignment DataRow.Cells[c].CellFormat.VerticalAlignment = VerticalAlignment.Middle; //Fill Data in Rows Spire.Doc.Documents.Paragraph p2 = DataRow.Cells[c].AddParagraph(); TextRange TR2 = p2.AppendText(data[c]); //Format Cells p2.Format.HorizontalAlignment = HorizontalAlignment.Center; } } //Replace text with Table TextSelection selectionTable = document.FindString("{$JobHistory$}", true, true); TextRange rangeTable = selectionTable.GetAsOneRange(); Spire.Doc.Documents.Paragraph paragraphTable = rangeTable.OwnerParagraph; Body body = paragraphTable.OwnerTextBody; int index = body.ChildObjects.IndexOf(paragraphTable); body.ChildObjects.Remove(paragraphTable); body.ChildObjects.Insert(index, table); } #endregion #region 套用樣式 //套用文章段落樣式 for (int s = 0; s < document.Sections.Count; s++) { Spire.Doc.Section section = document.Sections[s]; //套用文章段落樣式 for (int p = 0; p < section.Paragraphs.Count; p++) { Spire.Doc.Documents.Paragraph pgh = section.Paragraphs[p]; pgh.ApplyStyle("Basic"); pgh.Format.BeforeSpacing = 12; } //套用表格樣式 for (int t = 0; t < document.Sections[s].Tables.Count; t++) { Spire.Doc.Table table = (Spire.Doc.Table)document.Sections[s].Tables[t]; table.PreferredWidth = new PreferredWidth(WidthType.Percentage, 100); table.TableFormat.IsAutoResized = true; //set table border //table.TableFormat.Borders.Right.BorderType = Spire.Doc.Documents.BorderStyle.Thick; //table.TableFormat.Borders.Left.BorderType = Spire.Doc.Documents.BorderStyle.Thick; //table.TableFormat.Borders.Top.BorderType = Spire.Doc.Documents.BorderStyle.Thick; //table.TableFormat.Borders.Bottom.BorderType = Spire.Doc.Documents.BorderStyle.Thick; //table.TableFormat.Borders.Horizontal.BorderType = Spire.Doc.Documents.BorderStyle.Thick; //table.TableFormat.Borders.Vertical.BorderType = Spire.Doc.Documents.BorderStyle.Thick; for (int tr = 0; tr < table.Rows.Count; tr++) { for (int td = 0; td < table.Rows[tr].Cells.Count; td++) { for (int t_ph = 0; t_ph < table.Rows[tr].Cells[td].Paragraphs.Count; t_ph++) { table.Rows[tr].Cells[td].Paragraphs[t_ph].ApplyStyle("Basic"); } } } } } #endregion //匯出 document.SaveToStream(ms, FileFormat.Docx); } catch (Exception ex) { result = false; msg = ex.Message; } if (result) { return(ms.ToArray()); } else { return(null); } }
public IActionResult yjExportInfo(AddressRequestPayload payload) { var response = ResponseModelFactory.CreateInstance; string sWebRootFolder = _hostingEnvironment.WebRootPath + "\\UploadFiles\\ImportUserInfoWord\\"; var timeInfo = DateTime.Now.ToString("yyyyMMddHHmmss"); var wordName = timeInfo + "address.docx"; string wordUrl = sWebRootFolder + wordName; MemoryStream ms = new MemoryStream(); XWPFDocument m_Docx = new XWPFDocument(); m_Docx.Write(ms); ms.Flush(); SaveToFile(ms, wordUrl); List <string> list = new List <string>(); using (_dbContext) { Document document111 = new Document(); document111.LoadFromFile(wordUrl); Section section = document111.Sections[0]; section.Paragraphs[0].AppendBookmarkStart("picture"); section.Paragraphs[0].AppendBookmarkEnd("picture"); var user = AuthContextService.CurrentUser; string s1 = payload.Kw2; string[] s2 = s1.Split(" "); StringBuilder where = new StringBuilder(); StringBuilder sql = new StringBuilder("SELECT * FROM HomeAddress HA "); for (int i = 0; i < s2.Length; i++) { if (s2.Length > 0 && i == 0) { where.Append("WHERE "); } where.Append("HA.Address LIKE '%" + s2[i] + "%' "); if (i >= 0 && i < s2.Length - 1) { where.Append(" AND "); } } sql.Append(where); //var query = _dbContext.HomeAdd.FromSql(sql.ToString()); var query = _dbContext.HomeAddress.FromSqlRaw(sql.ToString()); if (!string.IsNullOrEmpty(payload.Kw)) { query = query.Where(x => x.Address.ToString().Contains(payload.Kw)); } if (!string.IsNullOrEmpty(payload.Kw1)) { query = query.Where(x => x.Address.ToString().Contains(payload.Kw1)); } var entities = query.ToList(); //var entities = _dbContext.HomeAddress.Where(x => ids.IndexOf(x.HomeAddressUuid.ToString()) >= 0).ToList(); for (int i = 0; i < entities.Count(); i++) { var pata = _hostingEnvironment.WebRootPath + EWM.GetEWM2("h_" + entities[i].HomeAddressUuid.ToString(), _hostingEnvironment, entities[i].Address); //实例化BookmarksNavigator类,指定需要添加图片的书签“” BookmarksNavigator bn = new BookmarksNavigator(document111); bn.MoveToBookmark("picture", true, true); //添加段落,加载图片并插入到段落 Section section0 = document111.AddSection(); Spire.Doc.Documents.Paragraph paragraph = section0.AddParagraph(); Image image = Image.FromFile(pata); DocPicture picture = document111.Sections[0].Paragraphs[0].AppendPicture(image); picture.Width = 160; picture.Height = 180; //picture.HorizontalPosition = 100.0f; //picture.VerticalPosition = 50.0f; bn.InsertParagraph(paragraph); document111.Sections.Remove(section0); //string output = sWebRootFolder + "test.docx"; document111.SaveToFile(wordUrl, FileFormat.Docx); //Arraypata = pata.; //list.Add(pata); } list.Add(wordUrl); //关闭进程 document111.Dispose(); var time = DateTime.Now.ToString("yyyyMMddHHmmssfff"); var check = ZIP.CompressMulti(list, _hostingEnvironment.WebRootPath + "\\UploadFiles\\EWM\\" + time, false); if (check) { response.SetSuccess("导出成功"); response.SetData("\\UploadFiles\\EWM\\" + time + ".zip"); } else { response.SetFailed("导出失败"); } } return(Ok(response)); }