Что такой я работаю в проекте, в котором требуют, чтобы данные ahoja excel хранились в SqlServer, до сих пор у меня есть следующее, Контролирующее:
[HttpGet]
[Route("Import")]
public string Import([Bind]Archivos files)
{
string sWebRootFolder = _hostingEnvironment.WebRootPath;
string sFileName = files.Files.ToString();
FileInfo file = new FileInfo(Path.Combine(sWebRootFolder, sFileName));
try
{
using (ExcelPackage package = new ExcelPackage(file))
{
StringBuilder sb = new StringBuilder();
ExcelWorksheet worksheet = package.Workbook.Worksheets[1];
int rowCount = worksheet.Dimension.Rows;
int ColCount = worksheet.Dimension.Columns;
bool bHeaderRow = true;
for (int row = 1; row <= rowCount; row++)
{
for (int col = 1; col <= ColCount; col++)
{
if (bHeaderRow)
{
sb.Append(worksheet.Cells[row, col].Value.ToString() + "\t");
}
else
{
sb.Append(worksheet.Cells[row, col].Value.ToString() + "\t");
}
}
sb.Append(Environment.NewLine);
}
return sb.ToString();
}
}
catch (Exception ex)
{
return "Some error occured while importing." + ex.Message;
}
}
Модель:
public class Archivos
{
[Display(Name = "Files2")]
public IFormFile[] Files { get; set; }
}
Вид:
<input type="file" multiple="multiple" id="Files2" name="Files2" />
<button type="submit" asp-controller="ImportExport" asp-action="Import">OK</button>
<br />
<br />
<table id="exceltable"></table>
еще мне не удается получить отборный arcihvo, они могли бы иметь какой-то пример или соединение, чтобы проверять и сравнивать мой код? заранее спасибо.
Я оставляю cГіdigo уже функционально, если помогает poara кто-то, консультируйте несколько сайтов, чтобы производить эту funciГіn.
Драйвер:
public IActionResult ImportFile([Bind] Archivos fl)
{
if (fl.Document != null)
{
ClassBase ccl = new ClassBase();
IFormFile[] file;
file = fl.Document;
string folderName = "Upload";
var path_Root = "//ruta_demi_server/carpeta/Archivos";
var path2 = path_Root + "/" + folderName;
var pathfile = "";
if (!Directory.Exists(path2))
Directory.CreateDirectory(path2);
var y = file.Count();
string[] data = new string[y];
for (int x = 0; x < file.Length; x++)
{
path2 = path2 +"/"+ file[x].FileName;
var stream = new FileStream(path2, FileMode.OpenOrCreate, FileAccess.ReadWrite);
file[x].CopyTo(stream);
data[x] = path2;
stream.Close();
}
ccl.InsertExceldataOk(path2);
}
return View();
}
}
Смоделировал (claseBase):
public static IConfigurationRoot Configuration;
public void InsertExceldataOk(string fullPath)
{
var hasHeader = true;
using (var con = new SqlConnection(conectionexcel))
{
con.Open();
FileInfo excelFile = new FileInfo(fullPath);
using (var epPackage = new ExcelPackage(excelFile))
{
var pck = epPackage.Workbook.Worksheets.First();
var ws = pck.Workbook.Worksheets.First();
DataTable tbl = new DataTable();
foreach (var firstRowCell in ws.Cells[1, 1, 1,
ws.Dimension.End.Column])
{
tbl.Columns.Add(hasHeader ? firstRowCell.Text :
string.Format("Column {0}", firstRowCell.Start.Column));
}
var startRow = hasHeader ? 2 : 1;
for (int rowNum = startRow; rowNum <= ws.Dimension.End.Row; rowNum++)
{
var wsRow = ws.Cells[rowNum, 1, rowNum, ws.Dimension.End.Column];
DataRow row = tbl.Rows.Add();
foreach (var cell in wsRow)
{
row[cell.Start.Column - 1] = cell.Text;
}
}
using (SqlConnection con2 = new SqlConnection(conectionexcel))
{
//Al cargar el archivo solo se eliminan los datos con cierto ID
string query = "delete from Despachos where Despacho = '039998'";
SqlCommand cmd = new SqlCommand(query, con2);
cmd.CommandType = System.Data.CommandType.Text;
con2.Open();
cmd.ExecuteNonQuery();
con2.Close();
}
using (var sqlCopy = new SqlBulkCopy(conectionexcel))
{
sqlCopy.DestinationTableName = "[Despachos]";
sqlCopy.WriteToServer(tbl);
}
}
}
}