using ClosedXML.Excel; using HotelPms.Share.Windows.Util; using Microsoft.Web.WebView2.Core; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Security.Policy; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace HotelPms.SourceFactory { public partial class FormEdge : FormBase { public FormEdge() { InitializeComponent(); //webView21.Source = new Uri("https://www.google.co.jp"); webView21.CoreWebView2InitializationCompleted += new System.EventHandler(webView21_CoreWebView2InitializationCompleted); } private string ConvertExcelToHtml(string filePath) { var sb = new StringBuilder(); sb.AppendLine(""); using var workbook = new XLWorkbook(filePath); var worksheet = workbook.Worksheet(1); var range = worksheet.RangeUsed(); sb.AppendLine(""); foreach (var row in range.Rows()) { sb.AppendLine(""); foreach (var cell in row.Cells()) { sb.Append(""); } sb.AppendLine(""); } sb.AppendLine("
").Append(cell.GetValue()).Append("
"); return sb.ToString(); } private void button1_Click(object sender, EventArgs e) { if (webView21 != null && webView21.CoreWebView2 != null) { //string html = ConvertExcelToHtml(@"D:\Pms\HotelPms\HotelPms.SourceFactory\PivotTables.xlsx"); //string tempPath = Path.Combine(Path.GetTempPath(), "excel_preview.html"); //File.WriteAllText(tempPath, html, Encoding.UTF8); //webView21.Source = new Uri(tempPath); var bytes = File.ReadAllBytes(@"D:\Pms\HotelPms\HotelPms.SourceFactory\PivotTables.xlsx"); var base64 = Convert.ToBase64String(bytes); webView21.CoreWebView2.ExecuteScriptAsync($"loadExcelFromBase64('{base64}')"); //webView21.CoreWebView2.Navigate(textBox1.Text); } } private string GenerateSheetJSTemplate() { return @"

Excel Preview (SheetJS)

"; } //private bool bInitialized = false; private void webView21_CoreWebView2InitializationCompleted(object sender, Microsoft.Web.WebView2.Core.CoreWebView2InitializationCompletedEventArgs e) { //bInitialized = true; webView21.CoreWebView2.NavigationCompleted += webView21_NavigationCompleted; webView21.CoreWebView2.AddWebResourceRequestedFilter("*", Microsoft.Web.WebView2.Core.CoreWebView2WebResourceContext.All); webView21.CoreWebView2.WebResourceRequested += webView21_WebResourceRequested; webView21.CoreWebView2.WebResourceResponseReceived += webView21_WebResourceResponseReceived; string html = GenerateSheetJSTemplate(); string templatePath = Path.Combine(Path.GetTempPath(), "excel_viewer_sheetjs.html"); File.WriteAllText(templatePath, html); webView21.Source = new Uri(templatePath); } private void webView21_NavigationCompleted(object sender, Microsoft.Web.WebView2.Core.CoreWebView2NavigationCompletedEventArgs e) { System.Diagnostics.Debug.Print("NavigationCompleted"); } private void webView21_WebResourceRequested(object sender, Microsoft.Web.WebView2.Core.CoreWebView2WebResourceRequestedEventArgs e) { System.Diagnostics.Debug.Print("WebResourceRequested"); System.Diagnostics.Debug.Print(e.Request.Uri); // Add other Debug.Print... } private void webView21_WebResourceResponseReceived(object sender, Microsoft.Web.WebView2.Core.CoreWebView2WebResourceResponseReceivedEventArgs e) { System.Diagnostics.Debug.Print("WebResourceResponseReceived"); // Add other Debug.Print... } private async void FormEdge_Load(object sender, EventArgs e) { LoadingObj.ShowWaiting(); await webView21.EnsureCoreWebView2Async(); await webView21.CoreWebView2.Profile.ClearBrowsingDataAsync(); //webView21.CoreWebView2.Navigate("http://comtab.jp"); LoadingObj.CloseWaiting(); } private string url = string.Empty; private void button2_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog() != DialogResult.OK) { return; } url = openFileDialog1.FileName; LoadingObj.ShowWaiting(); webView21.CoreWebView2.Navigate(url); LoadingObj.CloseWaiting(); } private async void button3_Click(object sender, EventArgs e) { CoreWebView2PrintSettings printSettings = webView21.CoreWebView2.Environment.CreatePrintSettings(); //printSettings.Orientation = CoreWebView2PrintOrientation.Landscape; //printSettings.PrinterName = "Microsoft Print to PDF"; //printSettings.Orientation = CoreWebView2PrintOrientation.Portrait; printSettings.PrinterName = "RICOH imagio MP C2800"; printSettings.MediaSize = CoreWebView2PrintMediaSize.Custom; printSettings.PageHeight = 11.69; // A4 paper size printSettings.PageWidth = 8.27; printSettings.MarginLeft = 0; printSettings.MarginTop = 0; //printSettings.ShouldPrintBackgrounds = true; //var result = await webView21.CoreWebView2.PrintToPdfAsync(url, printSettings); var result = await webView21.CoreWebView2.PrintAsync(printSettings); } private void button4_Click(object sender, EventArgs e) { webView21.CoreWebView2.ExecuteScriptAsync("window.print();"); } } }