Как я могу считать файлы MS Office в сервере, не устанавливая MS Office и не пользуясь Библиотекой Interop?

Для первого случая речь идет о выравнивании flexbox по умолчанию, которое составляет stretch . Таким образом, все элементы будут растянуты, чтобы соответствовать высоте контейнера 1 sup>, таким образом, меню будет иметь такую ​​же высоту, что и содержимое. Другими словами, самый высокий элемент будет определять высоту, а другой будет растягиваться, чтобы соответствовать этой высоте.

Измените выравнивание, и у вас больше не будет такого поведения:

html,
body {
  height: 100%;
}

.app {
  display: flex;
  align-items:flex-start; /*anything different from stretch*/
}

.menu {
  background-color: red;
  width: 100px;
  height:100%;
}

.content {
  flex: 1;
  border: 1px solid blue;
}
content
content
content
content
content
content
content
content
content
content
content
content
content
content

Добавив height:100% Вы теперь явно применяете высоту к элементу (растяжка больше не применяется), но это не приведет к значению auto (высоте содержимого), потому что у родительского элемента не указана высота 2 [ 1145] sup>

html,
body {
  height: 100%;
}

.app {
  display: flex;
}

.menu {
  background-color: red;
  width: 100px;
  height:100%;
}

.content {
  flex: 1;
  border: 1px solid blue;
}
content
content
content
content
content
content
content
content
content
content
content
content
content
content

1 sup> Если крестик Свойство size элемента flex вычисляется как auto, и ни одно из полей поперечной оси не имеет значения auto, элемент flex растягивается . Используемым значением является длина, необходимая , чтобы размер поперечного сечения поля поля элемента был как можно ближе к тому же размеру, что и линия , при этом соблюдая ограничения, налагаемые min-height / min-width / max-height / max-width. ref sup>

blockquote>

У нас есть только одна строка в нашем случае, поэтому она такая же, как и весь контейнер. [ 1135]


2 sup> Указывает процентную высоту. Процент рассчитывается по отношению к высоте блока, содержащего сгенерированный блок . Если высота содержащего блока не указана явно (то есть зависит от высоты содержимого), и этот элемент не является абсолютно позиционированным, значение вычисляется как «auto» . ref sup>

blockquote>

Добавьте высоту в приложение, и вы увидите, что происходит:

[ 114]
content
content
content
content
content
content
content
content
content
content
content
content
content
content

ОБНОВЛЕНИЕ

На основе приведенных здесь комментариев приведен конкретный случай, когда процентная высота работает без указания высоты в родительском элементе.

html,
body {
  height: 100%;
}

.app {
  display: flex;
  height: 80%;
}

.menu {
  background-color: red;
  width: 100px;
}

.container{
  flex: 1;
  background:green;
}

.test {
  height: 80%;
  border: 2px solid blue;
}
percentage height is working here!! why??

Как я объяснил в предыдущем ответе , высота .container не является явно установлен, но у нас нет циклической зависимости, потому что высота .container определяется поведением растяжения, а не его содержимым, поэтому браузер может сначала установить высоту .container с помощью stretch, а затем разрешить процентную высоту .test элемент. [тысяча сто сорок две]

Без эффекта растяжения браузер должен сначала найти высоту, основанную на контенте, и контент имеет высоту, основанную на контейнере, таким образом, у нас есть циклическая зависимость, которая сделает процентную высоту невыполненной до auto в чтобы можно было определить высоту контейнера.

5
задан one.beat.consumer 29 June 2012 в 18:41
поделиться

9 ответов

Для всех версий MS Office:

Для нового Office (2007):

  • Вы могли сделать некоторое основное использование материала функциональность .NET от system.io.packaging. Посмотрите как по http://msdn.microsoft.com/en-us/library/bb332058.aspx

Для старого Office (до 2007):

  • Старые форматы Office теперь документируются: http://www.microsoft.com/interop/docs/officebinaryformats.mspx. Если Вы хотите сделать что-то действительно легкое, Вы могли бы рассмотреть попытку его. Но знайте, что эти форматы ОЧЕНЬ сложны.
3
ответ дан 13 December 2019 в 22:19
поделиться

Проверьте компоненты Aspose. Они разработаны для имитации функциональности Interop, не требуя полной установки Office на сервере.

2
ответ дан 13 December 2019 в 22:19
поделиться

Если документ находится в формате Word 2007, можно пользоваться system.io.packaging библиотекой для взаимодействия с ним программно.

RWendi

1
ответ дан 13 December 2019 в 22:19
поделиться

В мире Java существует также JExcelApi. Это очень ясно записано, от того, что я смог видеть, намного более чистый затем ПОИ. Таким образом, возможно, даже порт того кода к.NET не вне рассмотрения, в зависимости от курса, у Вас есть достаточно времени на Ваших руках.

1
ответ дан 13 December 2019 в 22:19
поделиться

OpenOffice.

Можно программировать против него и иметь его, делают много для Вас, не тратя деньги на лицензию на сервер, или связали уязвимость с ним на Вашем сервере.

0
ответ дан 13 December 2019 в 22:19
поделиться

Рабочие книги Microsoft Excel могут быть считаны с помощью драйвера ODBC (или действительно ли это - драйвер OLE DB? не может помнить), который заставляет рабочую книгу быть похожей на таблицу базы данных. Но я не знаю, доступен ли тот драйвер без самого Пакета офисных программ.

0
ответ дан 13 December 2019 в 22:19
поделиться

Поскольку новые docx форматы являются по сути XML-файлами, можно создать и управлять ими программно со стандартными методами XML DOM, после того как Вы знаете структуру.

Файлы являются в основном архивами zip с альтернативным расширением файла. Используйте System.IO.Packaging пространство имен для получения доступа к внутренним элементам файла затем откройте их в a XmlDocument выполнить управление.

Существуют примеры, доступные для того, чтобы сделать это, и Office Открывает, на проект XML на SourceForge может стоить посмотреть для вдохновения.

Что касается более старых двоичных форматов, они были собственными к MS, и единственный способ, которым Вы, вероятно, достигнете содержание из, через объектную модель Office (требует установки Office), или сторонний преобразователь/синтаксический анализатор файла.

К сожалению, нет ничего первой стороны и собственного компонента платформы.NET для работы с этими файлами.

2
ответ дан 13 December 2019 в 22:19
поделиться

Можно использовать OpenOffice. Это имеет инструмент преобразования командной строки:

Практическое руководство преобразования

Короче говоря, Вы определяете макрос в OpenOffice, и Вы называете тот макрос с параметром командной строки к OpenOffice. В том аргументе кодируется название локального файла (файл Office).

Это не большое решение, но это должно быть осуществимо.

0
ответ дан 13 December 2019 в 22:19
поделиться

Что необходимо сделать с теми, регистрируют? Если Вы просто хотите передать их потоком пользователю, то основные потоки файла прекрасны. Если Вы хотите создать новые файлы (возможно, на основе шаблона) для отправки пользователю, которого пользователь может открыть в Office, существует разнообразие или обходные решения.

Если Вы на самом деле сохраняете данные в Office документами для использования Вашим веб-сайтом, Вы делаете его неправильно. Документы Office, даже электронные таблицы Excel и базы данных доступа, не являются действительно соответствующим выбором для использования с интерактивным веб-сайтом.

1
ответ дан 13 December 2019 в 22:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: