Для первого случая речь идет о выравнивании 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]
contentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentОБНОВЛЕНИЕ
На основе приведенных здесь комментариев приведен конкретный случай, когда процентная высота работает без указания высоты в родительском элементе.
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
в чтобы можно было определить высоту контейнера.
Для всех версий MS Office:
Для нового Office (2007):
system.io.packaging
. Посмотрите как по http://msdn.microsoft.com/en-us/library/bb332058.aspxДля старого Office (до 2007):
Проверьте компоненты Aspose. Они разработаны для имитации функциональности Interop, не требуя полной установки Office на сервере.
Если документ находится в формате Word 2007, можно пользоваться system.io.packaging библиотекой для взаимодействия с ним программно.
В мире Java существует также JExcelApi. Это очень ясно записано, от того, что я смог видеть, намного более чистый затем ПОИ. Таким образом, возможно, даже порт того кода к.NET не вне рассмотрения, в зависимости от курса, у Вас есть достаточно времени на Ваших руках.
OpenOffice.
Можно программировать против него и иметь его, делают много для Вас, не тратя деньги на лицензию на сервер, или связали уязвимость с ним на Вашем сервере.
Рабочие книги Microsoft Excel могут быть считаны с помощью драйвера ODBC (или действительно ли это - драйвер OLE DB? не может помнить), который заставляет рабочую книгу быть похожей на таблицу базы данных. Но я не знаю, доступен ли тот драйвер без самого Пакета офисных программ.
Поскольку новые docx форматы являются по сути XML-файлами, можно создать и управлять ими программно со стандартными методами XML DOM, после того как Вы знаете структуру.
Файлы являются в основном архивами zip с альтернативным расширением файла. Используйте System.IO.Packaging
пространство имен для получения доступа к внутренним элементам файла затем откройте их в a XmlDocument
выполнить управление.
Существуют примеры, доступные для того, чтобы сделать это, и Office Открывает, на проект XML на SourceForge может стоить посмотреть для вдохновения.
Что касается более старых двоичных форматов, они были собственными к MS, и единственный способ, которым Вы, вероятно, достигнете содержание из, через объектную модель Office (требует установки Office), или сторонний преобразователь/синтаксический анализатор файла.
К сожалению, нет ничего первой стороны и собственного компонента платформы.NET для работы с этими файлами.
Можно использовать OpenOffice. Это имеет инструмент преобразования командной строки:
Практическое руководство преобразования
Короче говоря, Вы определяете макрос в OpenOffice, и Вы называете тот макрос с параметром командной строки к OpenOffice. В том аргументе кодируется название локального файла (файл Office).
Это не большое решение, но это должно быть осуществимо.
Что необходимо сделать с теми, регистрируют? Если Вы просто хотите передать их потоком пользователю, то основные потоки файла прекрасны. Если Вы хотите создать новые файлы (возможно, на основе шаблона) для отправки пользователю, которого пользователь может открыть в Office, существует разнообразие или обходные решения.
Если Вы на самом деле сохраняете данные в Office документами для использования Вашим веб-сайтом, Вы делаете его неправильно. Документы Office, даже электронные таблицы Excel и базы данных доступа, не являются действительно соответствующим выбором для использования с интерактивным веб-сайтом.