2012-01-09 4 views
0

Я экспортирую в Excel с помощью C#, и я получаю эту ошибку для некоторых записей.Экспорт в Excel

The field is too small to accept the amount of data you attempted to add. Try inserting or pasting less data 

Из-за этого я видел, что это связано с ограничением по размеру, но я не мог найти обходное решение. Есть идеи?

Запрошенный Код:

string lFilename = Leads.xls"; 
string lDistributorFolder = Server.MapPath(".") + "\\Portals\\0\\Distributors\\" + _currentUser.UserID.ToString() + "\\"; 
string lTemplateFolder = System.Configuration.ConfigurationManager.AppSettings["Templates"]; 
System.IO.Directory.CreateDirectory(lDistributorFolder); 

File.Copy(lTemplateFolder + lFilename, lDistributorFolder + lFilename, true); 
string lConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + lDistributorFolder + "\\" + lFilename + ";Extended Properties=\"Excel 8.0;HDR=YES;\""; 
DbProviderFactory lFactory = DbProviderFactories.GetFactory("System.Data.OleDb"); 
int lSequence = 0; 

using (DbConnection lConnection = lFactory.CreateConnection()) 
{ 
    lConnection.ConnectionString = lConnectionString; 
    lConnection.Open(); 

foreach (GridDataItem lItem in grdLeadList.Items) 
    { 
    lSequence++; 

    using (DbCommand lCommand = lConnection.CreateCommand()) 
     { 
      lCommand.CommandText = "INSERT INTO [ColderLeads$] "; 
      lCommand.CommandText += "(F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21) "; 
      lCommand.CommandText += "VALUES("; 
      lCommand.CommandText += "\"" + lSequence.ToString() + "\","; 
      lCommand.CommandText += "\"" + lItem.Cells[_gLeadNumber].Text.Replace(" ", " ") + "\","; 
      lCommand.CommandText += "\"" + lItem.Cells[_gSource].Text.Replace(" ", " ") + "\","; 
      lCommand.CommandText += "\"" + lItem.Cells[_gAccountName].Text.Replace(" ", " ") + "\","; 
      lCommand.CommandText += "\"" + lItem.Cells[_gCreatedOn].Text.Replace(" ", " ") + "\","; 
      lCommand.CommandText += "\"" + lItem.Cells[_gContactFullName].Text.Replace(" ", " ") + "\","; 
      lCommand.CommandText += "\"" + lItem.Cells[_gPriority].Text.Replace(" ", " ") + "\","; 
      lCommand.CommandText += "\"" + lItem.Cells[_gStreet1].Text.Replace(" ", " ") + "\","; 
      lCommand.CommandText += "\"" + lItem.Cells[_gStreet2].Text.Replace(" ", " ") + "\","; 
      lCommand.CommandText += "\"" + lItem.Cells[_gZIP].Text.Replace(" ", " ") + "\","; 
      lCommand.CommandText += "\"" + lItem.Cells[_gCity].Text.Replace(" ", " ") + "\","; 
      lCommand.CommandText += "\"" + lItem.Cells[_gState].Text.Replace(" ", " ") + "\","; 
      lCommand.CommandText += ")"; 
      lCommand.ExecuteNonQuery(); 
     } 
     } 

    lConnection.Close(); 
    } 

Спасибо!

+7

Можете ли вы показать код, который вы используете для экспорта, а также элемент данных, на котором он не работает? – David

+3

'Я экспортирую в Excel с помощью C#' - вы забыли показать C# в своем вопросе. –

+4

@ M.Babcock, необъяснимый нижний план? Есть ли что-то непонятное в первых двух комментариях? Какое еще объяснение вам нужно? Постскриптум Я не спустил вниз, но полностью согласен с человеком, который это сделал. Это как сказать механику: моя машина сломалась и спросила его, почему, не доведя машину. И это еще хуже: вы просите его исправить вашу машину, не доведя разбитую машину (я полагаю, что OP просит нас исправить его код). –

ответ

3

Вы используете Excel 2003? Если это так, существует ограничение на размер листа Excel. Это 65 536 строк на 256 столбцов. См. Следующие link для получения дополнительной информации.

Существует также ограничение на ширину столбца. Это 255 символов. Попробуйте обрезать все поля на C# перед экспортом в Excel. То, что вы также можете сделать, - это когда рабочая книга достигла максимальной длины строки, создайте другую Рабочую таблицу.

+0

Спасибо, у меня нет много столбцов или строк. Только один столбец может иметь абзац текста и кажется слишком большим. –

+0

@ У Юстина есть ли в нем какие-либо возвращения каретки? Попробуйте удалить данные в необработанную строку без какого-либо форматирования. –