Отлитые Ячейки Excel
Я хочу создать SQL-скрипт из листа Excel, и поэтому мне нужно знать типы из всех ячеек.
Поэтому я попытался получить тип из ячеек в следующем коде с результатами после этого в текстовом поле
C# код:
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using Excel = Microsoft.Office.Interop.Excel;
using System.Windows.Forms;
namespace Export
{
internal class ExcelWorker
{
Excel.Application _xlApp = new Excel.Application();
Excel.Workbook _xlWorkBook;
Excel.Range _range;
object misValue = System.Reflection.Missing.Value;
private void Show(string value) => MessageBox.Show(value);
internal void ReadExcelFile(string path, string cell)
{
try
{
_xlWorkBook = OpenBook(_xlApp, path, false, true, false);
Excel.Worksheet sheet = _xlWorkBook.Sheets["Sheet1"] as Excel.Worksheet;
Show(string.Format("Cell {0} nn Cell Number Format {1}", cell, sheet.get_Range(cell).NumberFormat));
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
private static Excel.Workbook OpenBook(Excel.Application excelInstance, string fileName, bool readOnly, bool editable,
bool updateLinks)
{
Excel.Workbook book = excelInstance.Workbooks.Open(
fileName, updateLinks, readOnly,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, editable, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing);
return book;
}
}
}
Лист Excel:

результаты для каждой ячейки:
Теперь я не уверен, что это единственный способ получить "правильный" тип для приведения значений ячеек excel к точному типу sql или если есть лучшее решение, которого я не знаю.
Есть ли лучший способ получить тип для каждой ячейки или я должен создать перечисление или что-то вроде этого и сопоставить каждый возможный формат ячейки ?
1 ответ:
Вы не сможете получить тип ячейки. Если вы хотите ввести данные из листа excel в БД, попробуйте выполнить приведение к нужному типу SQL и fromat. Особенно для datetime это обязательно, так как формат datetime зависит от настроек вашей БД.
Будьте осторожны с пустыми клетками. Вы должны проверить их перед кастингом. В Office 2010 и 2013 пустые ячейки равны нулю. Вы должны проверить это перед использованием ToString () или что-то вроде этого, потому что это бросит exceeption. Также будьте осторожны с двойным, например, используя ", "или".- это зависит от ваших настроек в Экселе.

Comments