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<Microsoft.Web.WebView2.Core.CoreWebView2InitializationCompletedEventArgs>(webView21_CoreWebView2InitializationCompleted);
|
}
|
|
private string ConvertExcelToHtml(string filePath)
|
{
|
var sb = new StringBuilder();
|
sb.AppendLine("<html><head><meta charset='UTF-8'><style>table, th, td { border: 1px solid black; border-collapse: collapse; padding: 4px; }</style></head><body>");
|
|
using var workbook = new XLWorkbook(filePath);
|
var worksheet = workbook.Worksheet(1);
|
var range = worksheet.RangeUsed();
|
|
sb.AppendLine("<table>");
|
foreach (var row in range.Rows())
|
{
|
sb.AppendLine("<tr>");
|
foreach (var cell in row.Cells())
|
{
|
sb.Append("<td>").Append(cell.GetValue<string>()).Append("</td>");
|
}
|
sb.AppendLine("</tr>");
|
}
|
sb.AppendLine("</table></body></html>");
|
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 @"<!DOCTYPE html>
|
<html>
|
<head>
|
<meta charset='UTF-8'>
|
<script src='https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.18.5/xlsx.full.min.js'></script>
|
</head>
|
<body>
|
<h2>Excel Preview (SheetJS)</h2>
|
<select id='sheetSelector' onchange='renderSheet()'></select>
|
<div id='excelContent'></div>
|
|
<script>
|
let workbook = null;
|
|
function loadExcelFromBase64(base64) {
|
const binary = atob(base64);
|
const len = binary.length;
|
const bytes = new Uint8Array(len);
|
for (let i = 0; i < len; i++) {
|
bytes[i] = binary.charCodeAt(i);
|
}
|
workbook = XLSX.read(bytes, { type: 'array' });
|
|
const selector = document.getElementById('sheetSelector');
|
selector.innerHTML = '';
|
workbook.SheetNames.forEach(name => {
|
const opt = document.createElement('option');
|
opt.value = name;
|
opt.text = name;
|
selector.appendChild(opt);
|
});
|
renderSheet();
|
}
|
|
function renderSheet() {
|
const name = document.getElementById('sheetSelector').value;
|
const ws = workbook.Sheets[name];
|
const html = XLSX.utils.sheet_to_html(ws);
|
document.getElementById('excelContent').innerHTML = html;
|
}
|
</script>
|
</body>
|
</html>";
|
}
|
|
//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();");
|
}
|
}
|
}
|