Не уверен, почему это так не работает - это работает для меня, но как минимум попробуйте процитировать данные:
Response.Write("\"Year\", \"Make\", \"Model\", \"Length\"\n\"1997\", \"Ford\", \"E350\", \"2.34\"\n\"2000\", \"Mercury\", \"Cougar\", \"2.38\"");
Excel также может импортировать XML, Google "<? Mso-application progid =" Excel.Sheet "?>" Для формата. Или просто сохраните таблицу Excel в формате XML, чтобы увидеть пример. XML-файлы Excel могут называться «.xls», и они смогут открывать их напрямую.
Наконец, вы можете использовать NPOI в .NET для работы с электронными таблицами Excel в собственном формате: http://npoi.codeplex.com/
Для XML вы также можете использовать класс-оболочку, который я написал, который инкапсулирует это в простую объектную модель C #: http://snipt.org/lLok/
Вот некоторый псевдокод для использования класса:
XlsWorkbook book = new XlsWorkbook();
XlsWorksheet ws = new XlsWorksheet();
ws.Name = "Sheet Name";
XlsRow row;
XlsCell cell;
foreach (datarow in datasource) {
row = new XlsRow();
foreach (datavalue in datarow) {
cell = new XlsCell(datavalue.ToString());
cell.DataType = datavalue is numeric ? DataTypes.Numeric | DataTypes.String;
row.Cells.Add(cell);
}
ws.Rows.Add(row);
}
wkb.Worksheets.Add(ws);
Response.Write(wkb.XmlOutput());
Или просто создайте свой собственный метод, вот основы.
Создайте заголовок следующим образом:
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("<?xml version=\"1.0\"?>\n");
sb.Append("<?mso-application progid=\"Excel.Sheet\"?>\n");
sb.Append(
"<Workbook xmlns=\"urn:schemas-microsoft-com:office:spreadsheet\" ");
sb.Append("xmlns:o=\"urn:schemas-microsoft-com:office:office\" ");
sb.Append("xmlns:x=\"urn:schemas-microsoft-com:office:excel\" ");
sb.Append("xmlns:ss=\"urn:schemas-microsoft-com:office:spreadsheet\" ");
sb.Append("xmlns:html=\"http://www.w3.org/TR/REC-html40\">\n");
sb.Append(
"<DocumentProperties xmlns=\"urn:schemas-microsoft-com:office:office\">");
sb.Append("</DocumentProperties>");
sb.Append(
"<ExcelWorkbook xmlns=\"urn:schemas-microsoft-com:office:excel\">\n");
sb.Append("<ProtectStructure>False</ProtectStructure>\n");
sb.Append("<ProtectWindows>False</ProtectWindows>\n");
sb.Append("</ExcelWorkbook>\n");
Оттуда добавьте к вашей выходной строке, создав узлы, используя эту базовую структуру:
<Worksheet ss:Name="SheetName">
<Table>
<Row>
<Cell>
<Data ss:Type="DataType">Cell A1 Contents Go Here</Data>
</Cell>
</Row>
</Table>
</Worksheet>
В пределах <Row>
каждый элемент <Cell>
создает новый столбец. Добавьте новый <Row>
для каждой строки таблицы. DataType
для <Data>
может быть «Строка» или «Число».