Я использую Open XML XML SDK в моей сети Asp MVC для загрузки Excel на мой сайт.
В моем файле Excel есть 4 столбца Имя, электронная почта, название компании и номер телефона.
Я использую следующий код, чтобы получить файл Excel из моего представления и сохранить его на локальном диске, а затем получить доступ к его ячейке для сохранения в моей базе данных.
**, но существует проблема при отладке кода.когда я хочу получить доступ к ячейке, содержащей строку, она показывает, что она содержит 0, но при чтении чисел проблем нет.
она показывает ноль, когда мой элемент foreach попадает в ячейки, содержащие строку. ** Любая идея?
отредактированный Вопрос: мне удалось прочитать значение ячейки с этой модификацией кода, но есть еще одна проблема. Согласно Этот ответ Я должен прочитать разделяемую строку, чтобы прочитать строку, но когда я прочитал DataType, он оценилноль в какой-то случайный момент.поэтому я не могу прочитать некоторые ячейки.я не могу найти проблему
вот код контроллера:
[HttpPost]
public IHttpActionResult UploadExcelFile()
{
try
{
var rnd = new Random();
string filePath = "";
var httpRequest = HttpContext.Current.Request;
if (httpRequest.Files.Count < 1)
{
return Content(HttpStatusCode.BadRequest, "there's no file selected");
}
var guid = rnd.Next(999);
var postedFile = httpRequest.Files[0];
var serverFilePath = HttpContext.Current.Server.MapPath("~/Content/Email/" + guid + Path.GetExtension(postedFile.FileName));
filePath = "/Content/Email/" + guid + Path.GetExtension(postedFile.FileName);
postedFile.SaveAs(serverFilePath);
using (SpreadsheetDocument spreadsheetDocument =SpreadsheetDocument.Open(serverFilePath, false))
{
List<string> colName = new List<string>(new string[] { "A", "B", "C","D" });
var sheets = spreadsheetDocument.WorkbookPart.Workbook.Descendants<Sheet>();
WorkbookPart workbookPart = spreadsheetDocument.WorkbookPart;
WorksheetPart worksheetPart = workbookPart.WorksheetParts.First();
Worksheet worksheet = worksheetPart.Worksheet;
var rowCount = GetRowCount(worksheet);
for (int i = 0; i < rowCount; i++)
{
Cell cell = GetCell(worksheet, colName[i], i+1);
Row row = GetRow(worksheet, i+1);
foreach (var item in row.ChildElements)
{
List<string> cellValue = new List<string>();
if (cell.DataType != null)
{
if (cell.DataType == CellValues.SharedString)
{
int id = -1;
if (Int32.TryParse(cell.InnerText, out id))
{
SharedStringItem x = GetSharedStringItemById(workbookPart, id);
if (x.Text != null)
{
cellValue.Add(x.Text.Text);
}
else if (item.InnerText != null)
{
cellValue.Add(x.InnerText);
}
else if (item.InnerXml != null)
{
cellValue.Add(x.InnerXml);
}
}
}
}
else
{
cellValue.Add(item.InnerText);
}
}
}
}
return Ok(new { message = "Record has been saved successfully" });
}
catch (Exception e)
{
return Content(HttpStatusCode.BadRequest, "there's problem with Server");
throw;
}
}