Попытка понять C# и таблицы XML в ASP.net
В настоящее время я создаю веб-приложение, которое будет предоставлять пользователям ту же информацию, которую они видят в таблице на текущей странице, в формате электронной таблицы Excel. Я нашел некоторый предыдущий код в другом проекте, который сделал то же самое.
Сначала маленький вопрос: кто-нибудь знает, как работает Column ss:Width? Это не точное совпадение. Column ss:AutoFitWidth="0" ss:Width="114"
возвращает ширину столбца 21,00...
Где у меня большая часть проблем, так это то, что все данные, которые передаются в электронную таблицу, имеют начальный и хвостовой пробелы; Понятия не имею, как это убрать. я пробовал .Trim()
когда я делаю .ToString()
запрос, и я искал другие методы, но я, кажется, не нашел его. Ниже приведен фрагмент кода моей рабочей таблицы:
<Worksheet ss:Name="UserMgmt1">
<Table>
@*Name*@
<Column ss:AutoFitWidth="0" ss:Width="114" />
<Row>
<Cell ss:StyleID="s29">
<Data ss:Type="String">Name</Data>
</Cell>
</Row>
@foreach (tbl_Users query in ViewBag.contents )
{
<Row>
<Cell ss:StyleID="s31">
<ss:Data ss:Type="String" >
@(query.Name.ToString().Trim())
</ss:Data>
</Cell>
</Row>
}
</Table>
</Worksheet>
Забыл добавить ActionResult, который реализует этот код:
public ActionResult _Excel(tblUsers model)
{
List<tbl_Users> inquiriesList = UserManageModel.GetResults(model);
ViewBag.contents = inquiriesList;
return View("_Excel");
}
И звонок:
@using (Html.BeginForm("_Excel", "UserManage", FormMethod.Post))
{
<input type="submit" value="View Detailed List of Users in Excel" />
}
Результат выглядит так в Excel, с таким большим количеством пробелов, окружающих каждый элемент строки:
Administrator
2 ответа
В соответствии со спецификацией XML Excel на MSDN http://msdn.microsoft.com/en-us/library/aa140066(v=office.10).aspx ss:Width - это ширина столбца в точках (которая может отображаться по-разному в зависимости от разрешения экрана и т. д.).
Лишние пробелы вокруг вашего обрезанного текста могут быть связаны с вашим отступом. Попробуйте свернуть этот элемент XML следующим образом:
<ss:Data ss:Type="String" >@(query.Name.ToString().Trim())</ss:Data>
Оказывается, моей проблемой всегда было форматирование моего <Row>
код
<ss:Data ss:Type="String" >
@(query.Name.ToString().Trim())
</ss:Data>
Ведущий и следующий пробел между <ss:Data>
Теги копируются в документ Excel. Я понятия не имею, почему это происходит, но это решает мою проблему.