Я создал документ Word с Word 2007 и сохранил его. Затем я использовал инструмент производительности OpenXML и использовал отражение кода, чтобы получить код C #.
Следующим шагом, который я сделал, было создание функции, которая возвращает объект tableRow.
Я бы использовал свой список, который я создал с помощью LINQ, для заполнения текстовых полей
ряд. Я скопировал код генерации строки из 1 встроенной строки
таблицы, и заполнить поля в цикле, используя
foreach(ClassForLinqResult lr in LinqResult)
{
Table1.Append(CreateRow(lr.param1,lr.param2..etc));
}
Проблема остается, когда сервер отвечает с файлом,
Я получаю сообщение об ошибке при попытке открыть его:
"The file is corrupt and cannot be opened".
Была ли какая-то часть кода, которую я пропустил, которую нужно где-то добавить
еще для строк я добавлю? Как выясняется, когда я использую слово, чтобы попытаться восстановить
файл, мои строки отображаются правильно.
В поврежденном файле есть папка с файлом, например:
package\services\metadata\core-properties\edf684ae4e35438dacc06cb66c0afad2.psmdcp
после исправления файла он удаляет его и добавляет файл core.xml в
папка "docProps".
некоторые другие файлы изменены
customXML\item.xml changes to customXML\item1.xml after recovery
customXML\itemProps.xml changes to customXML\itemProps1.xml after recovery
customXML\item.xml.rels changes to customXML\item1.xml.rels after recovery
word\footer.xml changes to word\footer1.xml after recovery
word\theme\theme.xml changes to word\theme\theme1.xml
В любом случае, если у кого-нибудь есть какие-то инструменты, которые указывают на проблему для меня, я был бы признателен
Я пытался
OpenXmlPackageValidationSettings validationSettings = new OpenXmlPackageValidationSettings();
validationSettings.EventHandler += new EventHandler<OpenXmlPackageValidationEventArgs>(PackageValidationEventHandler);
CreateParts(package,LicenseToPrint);
package.Validate(validationSettings);
Никогда не попадает ни в один код, указывающий на проблему с проверкой.
Я не смог выяснить проблему со словом документ.
Может кто-нибудь помочь с идеей, как выяснить проблему? Или, может быть, я пропустил шаг
что вызывает мою проблему?
Дополнительная информация:
Этот код - то, как я отрисовываю файл docx в asp.net
GeneratedClass c = new GeneratedClass();
using (MemoryStream generatedStream = new MemoryStream())
{
c.CreatePackage(generatedStream,LicenseToPrint);
ValidateDocument(generatedStream);
Response.ClearHeaders();
Response.ClearContent();
Response.AddHeader("content-disposition", "attachment; FileName=\"License.docx\"");
Response.ContentType = "application/msword";
//Response.ContentType = "application/vnd.ms-word.document";
generatedStream.WriteTo(Context.Response.OutputStream);
Context.Response.Flush();
}