[英]issues while exporting data from excel by using linqtoexcel in c#
[英]Importing Excel Data(using LinqToExcel) Only works If worksheet is open C# MVC
我正在將excel數據導入到我的數據庫中,該數據可以很好地工作,但前提是必須打開電子表格。 如果未打開,則會顯示錯誤消息“預期表格式不正確”,為什么? 在此先感謝您的幫助!
[HttpPost]
public ActionResult ImportExcel(PipelineDetails model, HttpPostedFileBase FileUpload, int ProjectID)
{
string Result = "";
if (FileUpload != null)
{
if (FileUpload.ContentType == "application/vnd.ms-excel" || FileUpload.ContentType == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
{
string filename = FileUpload.FileName;
string pathToExcelFile = filename;
var excelFile = new ExcelQueryFactory();
excelFile.FileName = pathToExcelFile;
excelFile.AddMapping<PipelineDetails>(x => x.Accumulated_Length, "Accumulated Length");
excelFile.AddMapping<PipelineDetails>(x => x.Elevation, "Elevation");
excelFile.AddMapping<PipelineDetails>(x => x.Pipe_Outside_Diameter, "Pipe Outside Diameter");
excelFile.AddMapping<PipelineDetails>(x => x.Wall_Thickness, "Wall Thickness");
excelFile.AddMapping<PipelineDetails>(x => x.Control_Point_Description, "Control Point Description");
excelFile.AddMapping<PipelineDetails>(x => x.Control_Point_Size, "Control Point Size");
var pipelineData = from PLD in excelFile.Worksheet<PipelineDetails>() select PLD;
try
{
foreach (var a in pipelineData)
{
if (a.Accumulated_Length == null || a.Elevation == null || a.Pipe_Outside_Diameter == null ||
a.Wall_Thickness == null)
{
Result = "There is a problem with the Import File. Please check the file format or data.";
return RedirectToAction("Index", "Pipeline", new { id = ProjectID, result = Result });
}
}
}
catch (Exception ex)
{
Result = "There is a problem with the Import File. Please check the file format or data.";
return RedirectToAction("Index", "Pipeline", new { id = ProjectID, result = Result });
}
ProjectManager PM = new ProjectManager();
PM.DeleteALLPipeLine_forProject(ProjectID);
foreach (var a in pipelineData)
{
try
{
if (a.Accumulated_Length.ToString() != "" && a.Elevation.ToString() != "" && a.Pipe_Outside_Diameter.ToString() != "" &&
a.Wall_Thickness.ToString() != "")
{
using (RexusTradingEntities RTE = new RexusTradingEntities())
{
PipelineData PD = new PipelineData();
PD.Accumulated_Length = Convert.ToDecimal(a.Accumulated_Length);
PD.Elevation = Convert.ToDecimal(a.Elevation);
PD.Pipe_Outside_Diameter = Convert.ToDecimal(a.Pipe_Outside_Diameter);
PD.Wall_Thickness = Convert.ToDecimal(a.Wall_Thickness);
PD.Control_Point_Description = a.Control_Point_Description;
PD.Control_Point_Size = a.Control_Point_Size;
PD.fkiProjectID = ProjectID;
PD.CreateDateTimeStamp = DateTime.Now;
RTE.PipelineDatas.Add(PD);
RTE.SaveChanges();
}
}
}
catch (DbEntityValidationException ex)
{
foreach (var entityValidationErrors in ex.EntityValidationErrors)
{
foreach (var validationError in entityValidationErrors.ValidationErrors)
{
Response.Write("Property: " + validationError.PropertyName + " Error: " + validationError.ErrorMessage);
}
}
}
}
//Adding the Node Numbers in sequencial order
PM.UpdatePipelineNodeNumbers(ProjectID, model);
Result = "Import Success";
return RedirectToAction("Index", "Pipeline", new { id = ProjectID, result = Result });
}
else
{
Result = "Only Excel file format is allowed.";
return RedirectToAction("Index", "Pipeline", new { id = ProjectID, result = Result });
}
}
else
{
Result = "No Import File Selected.";
return RedirectToAction("Index", "Pipeline", new { id = ProjectID, result = Result });
}
}
編輯:我也嘗試添加以下內容,但仍然收到錯誤:
if (FileUpload.FileName.EndsWith("xlsx"))
{
excelFile.DatabaseEngine = LinqToExcel.Domain.DatabaseEngine.Ace;
}
if (FileUpload.FileName.EndsWith("xls"))
{
excelFile.DatabaseEngine = LinqToExcel.Domain.DatabaseEngine.Jet;
}
編輯:我只是將我的.xlsx文件另存為.xls,並且它導入了完美的!? 為什么不使用.xlsx?
不幸的是,我需要找到解決方案,並且由於沒有任何幫助(例如,答復和其他帖子),我不得不做出決定並取消上面的操作,只允許導入csv文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.