From 1a1c8e71fcd14858f595029f089b2d4a00202b32 Mon Sep 17 00:00:00 2001
From: ogi <Administrator@S-OGI-PC>
Date: Fri, 05 Dec 2025 09:24:16 +0900
Subject: [PATCH] プロジェクトファイルを追加。
---
HotelPms.SourceFactory/FormEdge.cs | 190 +++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 190 insertions(+), 0 deletions(-)
diff --git a/HotelPms.SourceFactory/FormEdge.cs b/HotelPms.SourceFactory/FormEdge.cs
new file mode 100644
index 0000000..296a0c0
--- /dev/null
+++ b/HotelPms.SourceFactory/FormEdge.cs
@@ -0,0 +1,190 @@
+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();");
+ }
+ }
+}
--
Gitblit v1.10.0