Как прочитать содержимое клиентского Word в Интернете и отобразить его на странице?
Я обнаружил, что существует два метода: один — работать непосредственно с клиентом, а другой — загружать клиентское слово на сервер для работы. Каждый из этих двух методов имеет свои особенности.
Я приведу пример работы клиента.
Сначала добавьте следующий js-код в .aspx
<script Language='javascript'>
//Файл преобразования слов по умолчанию находится в папке C:\.
var os__localPath = "C:\";
//имя сохраненного файла
var os__localFile = "defaultFileWord.htm";
var os__xmlDom = новый ActiveXObject("MSXML2.DOMDocument");
var os__xmlFSO;
//Сохраняем данные для текущего клиента (вы можете передать имя файла для сохранения).
функция os_SaveToLocal()
{
вар _saveAs = "";
если (аргументы.длина > 0)
_saveAs = аргументы[0] + "";
еще
_saveAs = os__localFile;
пытаться
{
если (os__xmlFSO == ноль)
os__xmlFSO = новый ActiveXObject("Scripting.FileSystemObject");
}
поймать(е){window.alert(e);}
}
//Преобразуем Word в HTML-файл
функция WorcChangeHtml()
{
вар os_xmlFSO;
//Получаем объект управления загрузкой
вар objUpFile = window.document.Form1.updFile;
//Получаем путь и файл клиентского Word
вар UpFileValue = window.document.Form1.updFile.value;
если (os__xmlFSO == ноль)
os__xmlFSO = новый ActiveXObject("Scripting.FileSystemObject");
пытаться
{
if(window.document.Form1.updFile.value == "")
{
alert('Пожалуйста, выберите соответствующий файл Word');
objUpFile.focus();
}
иначе if(UpFileValue.indexOf(".doc") == -1)
{
alert('Выбранный вами файл не является файлом WordrnПожалуйста, выберите правильный файл Word');
objUpFile.focus();
}
иначе если(!os__xmlFSO.FileExists(objUpFile.value))
{
alert('Соответствующий файл Word не существует');
objUpFile.focus();
}
еще
{
вар wdFormatHTML = 8;
вар objWord = новый ActiveXObject("Word.Application");
objWord.Application.Visible = ложь;
вар objDoc = objWord.Documents.Open(UpFileValue);
objDoc.SaveAs(os__localPath+os__localFile, wdFormatHTML);
window.document.Form1.updFile.value = "";
объект.Закрыть();
objWord.Выход();
вар GetHtml = GetLine();
var iBeginIndex = GetHtml.indexOf("<body");
var iEndIndex = GetHtml.lastIndexOf("</body>");
GetHtml = GetHtml.substring(iBeginIndex,iEndIndex+7).replace("<body","<div");
GetHtml = GetHtml.replace("</body>","</div>");
//Назначаем преобразованное значение значению элемента управления страницей txtIdea. Чтобы сохранить значение Word в базе данных, я использую <input type = "hidden".... Если вы хотите отобразить содержимое Word, вы можете. рассмотрите window.document.Form1 «Ваш идентификатор элемента управления отображением».innerText = GetHtml;
window.document.Form1.txtIdea.value = GetHtml;
}
}
поймать(е){window.alert(e);}
}
//Читаем текстовый файл
функция ПолучитьЛинию()
{
вар fso, txtfile, strValue;
вар ForReading = 1, ForWriting = 2;
fso = новый ActiveXObject("Scripting.FileSystemObject");
txtfile = fso.OpenTextFile(os__localPath+os__localFile, ForReading);
в то время как (!txtfile.AtEndOfStream)
{
стрValue = strValue + txtfile.ReadLine();
}
txtfile.Закрыть();
возврат (strValue);
}
</script>
Обратите внимание, что на страницу необходимо добавить следующие два элемента управления и соответствующие клиентские события.
<input id="updFile" type="file" style="BORDER-RIGHT: 1 пиксель сплошной; BORDER-TOP: 1 пиксель сплошной; BORDER-LEFT: 1 пиксель сплошной; ШИРИНА: 77,46%; BORDER-BOTOM: 1 пиксель сплошной; ВЫСОТА: 26 пикселей"
size="71"> <input style="BORDER-RIGHT: #999999 1 пиксель сплошной; BORDER-TOP: #999999 1 пиксель сплошной; РАЗМЕР ШРИФТА: 15pt; BORDER-LEFT: #999999 1 пиксель сплошной; ШИРИНА: 103 пикселя; BORDER- НИЗ: #999999 1 пиксель, сплошной. ВЫСОТА: 28 пикселей;
onclick="WorcChangeHtml()" runat="server" id="btnUpLoad" type="submit" value="import" name="btnUpLoad">
<textarea style="ШИРИНА: 15,25 %; ВЫСОТА: 23 пикселя" rows="50" cols="16" id="txtIdea"
runat="сервер">
Значение в txtIdea — это содержимое клиентского Word. Примечание. Вам необходимо настроить параметры безопасности IE, иначе оно будет недействительным.