У меня проблемы с русским языком в моей базе данных.Я читаю данные из файла xlsx.Для чтения я использую библиотеку OfficeOpenXml.При отладке проблем с кодировкой нет, но после добавления в базу есть только ???
.Я не думаю, что проблема в кодировке базы данных.
[HttpPost]
public ActionResult Upload(IFormFile file)
{
if (file == null || file.Length == 0)
{
ModelState.AddModelError("file", "Choose file!");
}
if (Path.GetExtension(file.FileName) != ".xlsx")
{
ModelState.AddModelError("file", "Choose .xlsx file!");
}
StringBuilder sbSql = new StringBuilder();
sbSql.Append("set dateformat dmy;");
sbSql.Append("DELETE FROM [CamcostDB].[dbo].[Items];");
using (var xls = new ExcelPackage(file.OpenReadStream()))
{
using (var sheet = xls.Workbook.Worksheets["Export Products Sheet"])
{
for (int j = sheet.Dimension.Start.Row + 1; j <= sheet.Dimension.End.Row; j++)
{
if (sheet.Cells[j, 1].Value == null)
sbSql.AppendFormat(@"INSERT INTO [CamcostDB].[dbo].[Items] ([Id],[About],[Price],[Title]) VALUES ('{0}', '{1}' , {2} , '{3}');", Guid.NewGuid(), GV(sheet, j, 4), GVDouble(sheet, j, 6), GV(sheet, j, 2));
}
}
}
using (var connection = new SqlConnection(Configuration.GetConnectionString("DefaultConnection")))
{
var command = new SqlCommand(sbSql.ToString(), connection);
if (connection != null)
{
connection.Open();
}
int result = command.ExecuteNonQuery();
connection.Close();
}
return Content("success");
}
private string GVDouble(ExcelWorksheet sheet, int rowNo, int cellNo)
{
return sheet.Cells[rowNo, cellNo].Value != null ? sheet.Cells[rowNo, cellNo].Value.ToString().Replace(',','.') : "0";
}
private string GV(ExcelWorksheet sheet, int rowNo, int cellNo)
{
return sheet.Cells[rowNo, cellNo].Value != null ? sheet.Cells[rowNo, cellNo].Value.ToString() : "";
}
}
И вот что у меня есть: