Microsoft Open SDK 2.0使用c#生成excel文件

请参考链接我正在使用的代码从数据表中生成Excel文件。 我能够成功生成excel文件。

但问题/挑战/问题如下。

  1. 我想根据数据types生成列,所以如果列值包含date,那么它的单元格格式应该是date(dd / mm / yyy)如果数字然后数字。 等等…
  2. 我试图根据数据格式生成Excel文件,您可以看到具体的方法来生成单元格的值。 但是问题出在用户下载文件时会给出“Excel发现不可读的内容文件名”的警告信息,你是否想恢复这个工作簿的内容? 我不希望这个警告信息应该来。
  3. 如果我把所有东西写成没有格式的文本,那么文件将会打开而没有任何警告信息,下载文件后,如果用户试图格式化date或数字格式的相应列,那么也不允许用户在Excel中格式化/切片和切块数据文件。

参考: – http://www.codeproject.com/Articles/263106/Export-Tabular-Data-in-CSV-and-Excel-Formats-Throu

请让我知道如果有人的解决scheme。

我正在使用DocumentFormat.OpenXml.dll

  private Cell CreateTextCell(string header, UInt32 index, string text) { var cell = new Cell {DataType = CellValues.InlineString, CellReference = header + index}; var istring = new InlineString(); var t = new Text {Text = text}; istring.Append(t); cell.Append(istring); return cell; } private Cell CreateDateCell(string header, UInt32 index, DateTime sDate) { Cell cell = new Cell(); cell.DataType = CellValues.Date; cell.CellReference = header + index; cell.StyleIndex = UInt32Value.FromUInt32(14); cell.CellValue = new CellValue { Text = sDate.ToOADate().ToString() }; return cell; } private Cell CreateNumberCell(string header, UInt32 index, string text) { Cell cell = new Cell(); cell.DataType = CellValues.Number; cell.CellReference = header + index; cell.CellValue = new CellValue(text); return cell; } 

我已经转移到EPPlus .net库来生成excel文件,并且它非常易于使用。

谢谢。

我可能没有完整的解决scheme,但您可以尝试以下步骤来find根本原因:

  1. 内容错误不可读的原因之一(有很多原因,但考虑到你只是从数据表写入)。如果StyleIndex / Datatype / Cellvalue格式不匹配
  2. 要确定根本原因,您可以尝试:创build一个示例excel,并直接编写一个单元格(只有一个单元格)与数字,它没有问题,尝试下一个数据types一个接一个。 接下来尝试一个接一个地写下来。 做到这一点,并排除导致问题的types。

接下来,尝试改变该types的StyleIndex / cellFormat(你可以在线查看示例),直到格式没有错误。 一旦你对所有types都好,你可以尝试写入整个excel。 如果您想使用OpenXML尝试一些新function,也可以使用此方法(因为您没有关于Online的所有示例)

识别问题的另一种方法是使用Openxml生产力工具并对文件进行validation。