update 20250129

This commit is contained in:
Stefan Hutter
2025-01-29 21:11:56 +01:00
parent 3f765247ee
commit 6558c21a9d
193 changed files with 390461 additions and 223 deletions

View File

@@ -22,6 +22,7 @@ using System.IO;
using Microsoft.VisualBasic;
using System.Net.NetworkInformation;
using System.Net;
using Microsoft.VisualBasic.CompilerServices;
namespace OnDocOffice
@@ -408,8 +409,9 @@ namespace OnDocOffice
dv.used = 0;
foreach (Syncfusion.DocIO.DLS.Bookmark bm in bookmarks)
{
dv.used = 1;
break;
if (bm.Name == dv.TMBeginn.ToString()) { dv.used = 1;break; }
//dv.used = 1;
//break;
}
}
//foreach (Syncfusion.DocIO.DLS.Bookmark bm in bookmarks)
@@ -454,13 +456,46 @@ namespace OnDocOffice
return Convert.ToBase64String(imageArray);
}
public string convert_wordfelder(string x)
{
string convert_wordfelderRet = default;
string s;
string s1;
int i;
s = x;
i = Strings.InStr(s, Conversions.ToString('\r'));
while (i > 0)
{
s = Strings.Left(s, i - 1) + "#" + Strings.Right(s, Strings.Len(s) - i);
if (Strings.Mid(s, i + 1, 1) == Conversions.ToString('\n'))
{
s = Strings.Left(s, i) + Strings.Right(s, Strings.Len(s) - (i + 1));
}
i = Strings.InStr(s, Conversions.ToString('\r'));
}
i = Strings.InStr(s, "#");
while (i > 0)
{
s = Strings.Left(s, i - 1) + '\v' + Strings.Right(s, Strings.Len(s) - i);
i = Strings.InStr(s, "#");
}
convert_wordfelderRet = s;
return convert_wordfelderRet;
}
public string Generate_Word_in_Office(ref clsDocData docdata, ref clsdok dok, string vorlage, string connectionstring, string tempdir, string dokumentid, string apptype, string extension, int OfficeSleep, int bookmarks_docio, bool vbfilemanagment, bool editdoc)
{
connectstring = connectionstring;
DialogGenerate dialogGenerate = new DialogGenerate(docdata.Bezeichnung.ToString());
dialogGenerate.Show();
System.Windows.Forms.Application.DoEvents();
dialogGenerate.set_progress(10);
dialogGenerate.set_progress(10,"Datei bereit stellen");
this.dokumentid = docdata.Dokumentid;
string filename = tempdir + dokumentid + "." + extension;
@@ -484,10 +519,9 @@ namespace OnDocOffice
fh.SaveBase64ToFile(vorlage, filename);
get_bookmakrs(fh.Base64FromFile(filename), ref docdata);
Logging.Logging.Debug("Generate_Word_in_Office", "clsOffice", dokumentid);
dialogGenerate.set_progress(20);
dialogGenerate.set_progress(20,"Datei öffnen");
Start_Application();
// Thread.Sleep(OfficeSleep);
worddoc = word.Documents.Open(filename);
Thread.Sleep(OfficeSleep);
@@ -581,7 +615,7 @@ namespace OnDocOffice
worddoc = word.ActiveDocument;
worddoc.Save();
word.NormalTemplate.Saved = true;
dialogGenerate.set_progress(30);
dialogGenerate.set_progress(30, "Datei konvertiert und geöffnet");
//word.ActiveDocument.Close(false);
Thread.Sleep(OfficeSleep);
//worddoc = word.Documents.Open(filename);
@@ -592,187 +626,254 @@ namespace OnDocOffice
worddoc.Unprotect(Password: "Australia");
is_protected = true;
}
int usecount = 0;
Logging.Logging.Debug("VB Fill","OnDoc",dokumentid);
foreach (clsDocValue dv in docdata.DocValues)
{
//dv.used = 0;
if (dv.TMBeginn.Contains("CompanyBBEB99")) { dv.used = 1; };
if (dv.TMBeginn.Contains("EDKCursor"))
{
dv.used = 1;
cursortm = dv.TMBeginn;
}
if (dv.FieldName.Contains("TGEDKCursor"))
{
dv.used = 1;
cursorfeld = dv.FieldName;
}
if (dv.FieldName.ToString() != "") { dv.used = 1; };
if (dv.used == 1) { usecount++; }
}
float progressstep = 1;
try
{
float b = 50;
progressstep = b / (float)usecount;
progressstep = progressstep + 1;
}
catch
{ }
VBOffice.VBOffice vbo = new VBOffice.VBOffice();
vbo.Fill_Word(ref word, ref docdata, editdoc, dialogGenerate,(float)progressstep);
vbo = null;
Logging.Logging.Debug("VB Fill Ende", "OnDoc", dokumentid);
bool cursorpositionieren = false;
if (docdata.Kopfzeile_generieren == true)
{
Kopfzeile_generieren();
}
//word.Visible = false;
dialogGenerate.set_progress(40);
//if (docdata.Kopfzeile_generieren == true)
//{
// Kopfzeile_generieren();
//}
////word.Visible = false;
//dialogGenerate.set_progress(40);
//word.ScreenUpdating = false;
if (bookmarks_docio == 1)
{
worddoc.Save();
worddoc.Close();
Fill_Bookmarks_from_Word(filename, docdata, "", "");
worddoc = word.Documents.Open(filename);
}
else
{
//if (bookmarks_docio == 1)
//{
// worddoc.Save();
// worddoc.Close();
// Fill_Bookmarks_from_Word(filename, docdata, "", "");
// worddoc = word.Documents.Open(filename);
//}
//else
//{
float progressstep = 1;
try
{
float b = 60;
progressstep = b / (float)docdata.DocValues.Count();
}
catch
{
// //float progressstep = 1;
// //try
// //{
// // float b = 60;
// // progressstep = b / (float)docdata.DocValues.Count();
// //}
// //catch
// //{
}
cursortm = "";
foreach (clsDocValue dv in docdata.DocValues)
{
dv.used = 0;
if (dv.TMBeginn.Contains("CompanyBBEB99")) { dv.used = 1; };
if (dv.TMBeginn.Contains("EDKCursor"))
{
dv.used = 1;
cursortm = dv.TMBeginn;
}
if (dv.FieldName.Contains("TGEDKCursor"))
{
dv.used = 1;
cursorfeld = dv.FieldName;
}
// //}
// int usecount = 0;
// cursortm = "";
// Logging.Logging.Debug("Festlegung Used", "OnDoc", dokumentid);
// foreach (clsDocValue dv in docdata.DocValues)
// {
// //dv.used = 0;
// if (dv.TMBeginn.Contains("CompanyBBEB99")) { dv.used = 1; };
// if (dv.TMBeginn.Contains("EDKCursor"))
// {
// dv.used = 1;
// cursortm = dv.TMBeginn;
// }
// if (dv.FieldName.Contains("TGEDKCursor"))
// {
// dv.used = 1;
// cursorfeld = dv.FieldName;
// }
if (dv.FieldName.ToString() != "") { dv.used = 1; };
// if (dv.FieldName.ToString() != "") { dv.used = 1; };
// if (dv.used == 1) { usecount++; }
}
// }
// float progressstep = 1;
// try
// {
// float b = 40;
// progressstep = b / (float)usecount;
// }
// catch
// {
foreach (Microsoft.Office.Interop.Word.Bookmark bm in worddoc.Bookmarks)
{
clsDocValue dv = docdata.DocValues.Find(x => x.TMBeginn == bm.Name);
if (dv != null) { dv.used = 1; }
}
foreach (clsDocValue dv in docdata.DocValues)
{
if (dv.used == 0) { continue; }
try
{
if (dv.TMBeginn.ToString().Contains("TGEDKCursor"))
{
cursorpositionieren = true;
cursortm = dv.TMBeginn.ToString();
}
if (dv.FieldName.ToString().Contains("TGEDKCursor"))
{
cursorpositionieren = true;
cursorfeld = dv.FieldName.ToString();
}
}
catch { }
// Logging.Logging.Debug(dv.TMBeginn.ToString() + " / " + dv.TMEnd.ToString(), dv.Value.ToString(), dokumentid);
dialogGenerate.add_progress((int)progressstep);
// }
// Logging.Logging.Debug("Used 1 Ende", "OnDoc", dokumentid);
//20250119 - nur befüllte werte übermitteln'
if (dv.Value.ToString().Trim() != "")
{
if (dv.TMBeginn.ToString() != "" && dv.TMEnd.ToString() == "" && !dv.TMBeginn.ToString().Contains("TGEDKCurosr"))
{
if (dv.TMBeginn.Contains("Zustel"))
{
int a = 1;
}
// foreach (clsDocValue dv in docdata.DocValues)
// {
// dialogGenerate.add_progress((int)progressstep);
// if (dv.used == 0) { continue; }
// try
// {
// if (dv.TMBeginn.ToString().Contains("TGEDKCursor"))
// {
// cursorpositionieren = true;
// cursortm = dv.TMBeginn.ToString();
// }
// if (dv.FieldName.ToString().Contains("TGEDKCursor"))
// {
// cursorpositionieren = true;
// cursorfeld = dv.FieldName.ToString();
// }
// }
// catch { }
// // Logging.Logging.Debug(dv.TMBeginn.ToString() + " / " + dv.TMEnd.ToString(), dv.Value.ToString(), dokumentid);
// dialogGenerate.add_progress((int)progressstep);
try
{
worddoc.Bookmarks[dv.TMBeginn.ToString()].Select();
pos = worddoc.Bookmarks[dv.TMBeginn.ToString()].Start;
word.Selection.Text = dv.Value.ToString();
pos2 = word.Selection.End;
// //20250119 - nur befüllte werte übermitteln'
// // if (dv.Value.ToString().Trim() != "")
// //{
// Logging.Logging.Debug(dv.TMBeginn.ToString() + " / " + dv.TMEnd.ToString() + " / " + dv.FieldName.ToString() + " => " + dv.Value.ToString(), "OnDoc", dokumentid);
// if (dv.TMBeginn.ToString() != "" && dv.TMEnd.ToString() == "" && !dv.TMBeginn.ToString().Contains("TGEDKCurosr"))
// {
// try
// {
// worddoc.Bookmarks[dv.TMBeginn.ToString()].Select();
// pos = worddoc.Bookmarks[dv.TMBeginn.ToString()].Start;
// word.Selection.Text = dv.Value.ToString();
// pos2 = word.Selection.End;
// if (dv.TMBeginn.Contains("TGEDKDirektTelefonB") || dv.TMBeginn.Contains("TGEDKVornameNameBetreue") || dv.TMBeginn.Contains("TGEDKDirektTelefonZ"))
// {
// Logging.Logging.Debug("1S - " + dv.TMBeginn.ToString(), "", dokumentid);
// word.Selection.MoveLeft(Unit: Microsoft.Office.Interop.Word.WdUnits.wdCharacter, Count: 1);
// if (editdoc) word.Selection.TypeText(Text: " ");
// word.Selection.SetRange(pos + 1, pos2 + 1);
// //var withBlock = worddoc.Bookmarks;
// //withBlock.Add(Range: word.Selection.Range, Name: dv.TMBeginn.ToString());
// //withBlock.DefaultSorting = Microsoft.Office.Interop.Word.WdBookmarkSortBy.wdSortByName;
// //withBlock.ShowHidden = false;
// worddoc.Bookmarks.Add(Range: word.Selection.Range, Name: dv.TMBeginn.ToString());
// Logging.Logging.Debug("1E - " + dv.TMBeginn.ToString(), "", dokumentid);
// }
// else
// {
// if (dv.TMBeginn.Contains("TGEDKDirektTelefonDokZ") || dv.TMBeginn.Contains("TGEDKVornameNameDokZ"))
// {
// Logging.Logging.Debug("2S - " + dv.TMBeginn.ToString(), "", dokumentid);
// word.Selection.Text = dv.Value.ToString();
// word.Selection.MoveLeft(Unit: Microsoft.Office.Interop.Word.WdUnits.wdCharacter, Count: 1);
// word.Selection.TypeText(Text: " ");
// word.Selection.SetRange(Start: pos + 1, End: pos2 + 1);
// //var withBlock = worddoc.Bookmarks;
// //withBlock.Add(Range: word.Selection.Range, Name: dv.TMBeginn.ToString());
// //withBlock.DefaultSorting = Microsoft.Office.Interop.Word.WdBookmarkSortBy.wdSortByName;
// //withBlock.ShowHidden = false;
// worddoc.Bookmarks.Add(Range: word.Selection.Range, Name: dv.TMBeginn.ToString());
// Logging.Logging.Debug("2E - " + dv.TMBeginn.ToString(), "", dokumentid);
if (dv.TMBeginn.Contains("TGEDKDirektTelefonB") || dv.TMBeginn.Contains("TGEDKVornameNameBetreue") || dv.TMBeginn.Contains("TGEDKDirektTelefonZ"))
{
word.Selection.MoveLeft(Unit: Microsoft.Office.Interop.Word.WdUnits.wdCharacter, Count: 1);
if (editdoc) word.Selection.TypeText(Text: " ");
word.Selection.SetRange(pos + 1, pos2 + 1);
var withBlock = worddoc.Bookmarks;
withBlock.Add(Range: word.Selection.Range, Name: dv.TMBeginn.ToString());
withBlock.DefaultSorting = Microsoft.Office.Interop.Word.WdBookmarkSortBy.wdSortByName;
withBlock.ShowHidden = false;
}
else
{
if (dv.TMBeginn.Contains("TGEDKDirektTelefonDokZ") || dv.TMBeginn.Contains("TGEDKVornameNameDokZ"))
{
word.Selection.Text = dv.Value.ToString();
word.Selection.MoveLeft(Unit: Microsoft.Office.Interop.Word.WdUnits.wdCharacter, Count: 1);
word.Selection.TypeText(Text: " ");
word.Selection.SetRange(Start: pos + 1, End: pos2 + 1);
// }
// else
// {
// Logging.Logging.Debug("3S - " + dv.TMBeginn.ToString(), "", dokumentid);
var withBlock = worddoc.Bookmarks;
withBlock.Add(Range: word.Selection.Range, Name: dv.TMBeginn.ToString());
withBlock.DefaultSorting = Microsoft.Office.Interop.Word.WdBookmarkSortBy.wdSortByName;
withBlock.ShowHidden = false;
}
else
{
word.Selection.SetRange(pos, pos2);
var withBlock = worddoc.Bookmarks;
withBlock.Add(Range: word.Selection.Range, Name: dv.TMBeginn.ToString());
withBlock.DefaultSorting = Microsoft.Office.Interop.Word.WdBookmarkSortBy.wdSortByName;
withBlock.ShowHidden = false;
}
}
word.Selection.MoveLeft(Unit: Microsoft.Office.Interop.Word.WdUnits.wdCharacter, Count: 1);
word.Selection.MoveLeft(Unit: Microsoft.Office.Interop.Word.WdUnits.wdCharacter, Count: 2, Extend: Microsoft.Office.Interop.Word.WdMovementType.wdExtend);
if (word.Selection.Text == " ")
{
word.Selection.MoveRight(Unit: Microsoft.Office.Interop.Word.WdUnits.wdCharacter, Count: 1);
word.Selection.MoveLeft(Unit: Microsoft.Office.Interop.Word.WdUnits.wdCharacter, Count: 1, Extend: Microsoft.Office.Interop.Word.WdMovementType.wdExtend);
word.Selection.Delete(Unit: Microsoft.Office.Interop.Word.WdUnits.wdCharacter, Count: 1);
}
}
catch { }
}
if (dv.TMBeginn.ToString() != "" && dv.TMEnd.ToString() != "" && !dv.TMBeginn.ToString().Contains("TGEDKCursor"))
{
try
{
worddoc.Bookmarks[dv.TMBeginn.ToString()].Select();
pos = worddoc.Bookmarks[dv.TMBeginn.ToString()].Start;
worddoc.Bookmarks[dv.TMEnd.ToString()].Select();
pos2 = worddoc.Bookmarks[dv.TMEnd.ToString()].Start;
word.Selection.SetRange(pos, pos2);
word.Selection.TypeText(Text: dv.Value.ToString());
var withBlock = worddoc.Bookmarks;
withBlock.Add(Range: word.Selection.Range, Name: dv.TMBeginn.ToString());
withBlock.DefaultSorting = Microsoft.Office.Interop.Word.WdBookmarkSortBy.wdSortByName;
withBlock.ShowHidden = false;
}
catch { }
}
if (dv.FieldName.ToString() != "" && !dv.FieldName.Contains("TGEDKCursor"))
{
try
{
if (dv.FieldName.Contains("cc_"))
{
word.ActiveDocument.SelectContentControlsByTag(dv.FieldName)[1].Range.Text = dv.Value;
}
if (worddoc.FormFields[dv.FieldName].TextInput.Width != 0)
{
int fieldlen = worddoc.FormFields[dv.FieldName].TextInput.Width;
worddoc.FormFields[dv.FieldName].TextInput.Width = fieldlen + 5;
}
worddoc.FormFields[dv.FieldName.ToString()].Result = dv.Value;
}
catch { }
}
}
}
}
//word.ScreenUpdating = true;
// word.Selection.SetRange(Start: pos, End: pos2);
// //var withBlock = worddoc.Bookmarks;
// //withBlock.Add(Range: word.Selection.Range, Name: dv.TMBeginn.ToString());
// //withBlock.DefaultSorting = Microsoft.Office.Interop.Word.WdBookmarkSortBy.wdSortByName;
// //withBlock.ShowHidden = false;
// worddoc.Bookmarks.Add(Range: word.Selection.Range, Name: dv.TMBeginn.ToString());
// Logging.Logging.Debug("3E - " + dv.TMBeginn.ToString(), "", dokumentid);
// }
// }
// Logging.Logging.Debug("4S - " + dv.TMBeginn.ToString(), "", dokumentid);
// word.Selection.MoveLeft(Unit: Microsoft.Office.Interop.Word.WdUnits.wdCharacter, Count: 1);
// word.Selection.MoveLeft(Unit: Microsoft.Office.Interop.Word.WdUnits.wdCharacter, Count: 2, Extend: Microsoft.Office.Interop.Word.WdMovementType.wdExtend);
// if (word.Selection.Text == " ")
// {
// word.Selection.MoveRight(Unit: Microsoft.Office.Interop.Word.WdUnits.wdCharacter, Count: 1);
// word.Selection.MoveLeft(Unit: Microsoft.Office.Interop.Word.WdUnits.wdCharacter, Count: 1, Extend: Microsoft.Office.Interop.Word.WdMovementType.wdExtend);
// word.Selection.Delete(Unit: Microsoft.Office.Interop.Word.WdUnits.wdCharacter, Count: 1);
// }
// Logging.Logging.Debug("4E - " + dv.TMBeginn.ToString(), "", dokumentid);
// }
// catch { }
// }
// if (dv.TMBeginn.ToString() != "" && dv.TMEnd.ToString() != "" && !dv.TMBeginn.ToString().Contains("TGEDKCursor"))
// {
// try
// {
// Logging.Logging.Debug("5S - " + dv.TMBeginn.ToString(), "", dokumentid);
// worddoc.Bookmarks[dv.TMBeginn.ToString()].Select();
// pos = worddoc.Bookmarks[dv.TMBeginn.ToString()].Start;
// worddoc.Bookmarks[dv.TMEnd.ToString()].Select();
// pos2 = worddoc.Bookmarks[dv.TMEnd.ToString()].Start;
// word.Selection.SetRange(pos, pos2);
// word.Selection.TypeText(Text: dv.Value.ToString());
// var withBlock = worddoc.Bookmarks;
// withBlock.Add(Range: word.Selection.Range, Name: dv.TMBeginn.ToString());
// withBlock.DefaultSorting = Microsoft.Office.Interop.Word.WdBookmarkSortBy.wdSortByName;
// withBlock.ShowHidden = false;
// Logging.Logging.Debug("5E - " + dv.TMBeginn.ToString(), "", dokumentid);
// }
// catch { }
// }
// if (dv.FieldName.ToString() != "" && !dv.FieldName.Contains("TGEDKCursor"))
// {
// try
// {
// Logging.Logging.Debug("6S - " + dv.TMBeginn.ToString(), "", dokumentid);
// if (dv.FieldName.Contains("cc_"))
// {
// word.ActiveDocument.SelectContentControlsByTag(dv.FieldName)[1].Range.Text = dv.Value;
// }
// if (worddoc.FormFields[dv.FieldName].TextInput.Width != 0)
// {
// int fieldlen = worddoc.FormFields[dv.FieldName].TextInput.Width;
// worddoc.FormFields[dv.FieldName].TextInput.Width = fieldlen + 5;
// }
// worddoc.FormFields[dv.FieldName.ToString()].Result = convert_wordfelder(dv.Value);
// Logging.Logging.Debug("6E - " + dv.TMBeginn.ToString(), "", dokumentid);
// }
// catch { }
// }
// //}
// }
//}
word.ScreenUpdating = true;
Logging.Logging.Debug("Word Befüllen Ende", "clsOffice", dokumentid);
if (docdata.Barcode == true) { Generate_Barcodes(ref docdata, tempdir); }
@@ -788,9 +889,10 @@ namespace OnDocOffice
}
word.Visible = true;
word.Activate();
dialogGenerate.set_progress(90,"Macros ausführen");
Logging.Logging.Debug("Start Macros", "clsOffice", dokumentid);
if(!editdoc) run_macros(ref docdata, connectionstring);
if (!editdoc) run_macros(ref docdata, connectionstring);
if (cursorpositionieren)
{
@@ -810,10 +912,11 @@ namespace OnDocOffice
Thread.Sleep(OfficeSleep);
string b64 = fh.Base64FromFile(filename);
word.Documents.Open(filename);
word.Activate();
Logging.Logging.Debug("Word geöffnet", "clsOffice", dokumentid);
word.Documents.Open(filename);
word.Activate();
dialogGenerate.set_progress(100,"Generierung beendet");
Logging.Logging.Debug("Word geöffnet", "clsOffice", dokumentid);
word = null;
Logging.Logging.Debug("Generierung abgeschlossen", "clsOffice", dokumentid);
@@ -826,6 +929,7 @@ namespace OnDocOffice
private void Kopfzeile_generieren()
{
Logging.Logging.Debug("Kopfzeile", "OnDoc", dokumentid);
word.Selection.HomeKey(Unit: Microsoft.Office.Interop.Word.WdUnits.wdStory);
if (word.ActiveWindow.View.SplitSpecial != Microsoft.Office.Interop.Word.WdSpecialPane.wdPaneNone)
{
@@ -1338,7 +1442,7 @@ namespace OnDocOffice
//TextBodyPart bookmarkContent = bookmarkNavigator.GetBookmarkContent();
//string bookmarkText = ((Syncfusion.DocIO.DLS.WParagraph)bookmarkContent.BodyItems.FirstItem).Text;
}
}