При попытке экспорта в CSV все работает, однако в верхнем ряду отсутствует весь экспорт. Эта строка не пропускается при экспорте той же записи в Excel или KML.
Пробовал переписать функцию и добавить строку, но ничего не работает
public FileResult ExportToCSV()
{
List<Tuple<String, String>> nameValues = new
List<Tuple<string, string>>();
if (ReportSession.FilterKeys != null)
{
nameValues = (List<Tuple<String, String>>)
ReportSession.FilterKeys;
}
ReportRequestFilter dbr = (ReportRequestFilter)
ReportSession.DatabaseRequestFilter;
List<Report_Packet_History> dplist = GetAllReportData
(dbr.Group_Id, dbr.AllowChildgroups, dbr.Device_Id, dbr.user_id,
MapLimitConstants.MAX_EXPORT_BULK_ROWS, dbr.Lookback, dbr.periodEnd, 1,
dbr.ShowActiveOnly);
List<Report_Packet_History> dplistreturn = GetFilters(nameValues,
dplist);
//SetReportViewBags(dplist);
DateTime endDate = dplist.Max(dt => dt.gps_datetime);
DateTime startDate = dplist.Min(dt => dt.gps_datetime);
String[] Device = dplist.Select(dt => dt.imei).Distinct().ToArray();
String[] Group = dplist.Select(dt => dt.user_group_name).Distinct
().ToArray();
Utility.LocalisedDateTime ldt = ToolBox.ConvertToUserTimezone
(DateTime.UtcNow, Session.CurrentUserSettings.time_zone, false,
Session.CurrentUserSettings.Locale);
String fileName = "IRISReport_" + string.Format("{0}_to_{1}",
startDate.ToShortDateString(), endDate.ToShortDateString());
fileName += string.Format(Device.Count() > 1 ? "_Assets_" : "_Asset_"
+
Device[0]);
fileName += string.Format(Group.Count() > 0 ? "_Groups_" : "_Group_"
+ Group[0]);
//List<Report_Packet_History> dplistres = GetFilters(nameValues,
dplist).Take(MapLimitConstants.MAX_EXPORT_CSV_ROWS).Skip
(0).ToList<Report_Packet_History>();
//Response.Charset = "";
return GenerateCSV(dplistreturn, fileName + ".csv");
}
Вот метод GenerateCSV, где заголовок будет установлен в false? У меня первый ряд = правда.
private FileResult GenerateCSV(List<Report_Packet_History> report, String
FileName)
{
Type rphType = typeof
(Connector.Models.Report.Report_Packet_History);
PropertyInfo[] myField =
rphType.GetProperties().ToArray();
Boolean firstRow = true;
StringBuilder csvOut = new StringBuilder();
MemoryTributary stream = new MemoryTributary();
foreach (Report_Packet_History rph in report)
{
for (int i = 0; i < myField.Length; i++)
{
if (firstRow)
{
csvOut.Append(myField[i].Name + ",");
}
else
{
if (myField[i].GetValue(rph) == null)
{
csvOut. Append("" + ",");
}
else
{
csvOut.Append(myField[i].GetValue
(rph).ToString() + ",");
}
}
}
csvOut.Append("\r\n");
byte[] byteArray = Encoding.UTF8.GetBytes
(csvOut.ToString());
csvOut.Clear();
stream.Write(byteArray, 0, byteArray.Length);
firstRow = false;
}
stream.Seek(0, SeekOrigin.Begin);
return File
(stream,System.Net.Mime.MediaTypeNames.Application.Octet,
FileName);
}