投射Excel单元格

我想从Excel工作表生成一个SQL脚本,因此我需要知道所有单元格的types。

因此,我试图从下面的代码中的单元格中获取types,然后在文本框中显示结果

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} \n\n 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表格 每个单元的结果:

在这里输入图像说明

现在我不确定是否只有获得“正确”types才能将excel单元格值转换为确切的sqltypes,或者是否有更好的解决scheme,我不知道。

有没有更好的方式来获得每个单元格的types,或者我应该创build一个枚举或类似的东西,并映射每个可能的单元格格式?

你不能得到一个单元格的types。 如果你想从excel工作表input数据到数据库,尝试转换为所需的SQLtypes和fromat。 特别是对于date时间这是强制性的,因为date时间格式取决于你的数据库设置。
小心空单元格。 你必须在铸造前检查他们。 在Office 2010和2013中,空单元格为NULL。 你需要在使用ToString()或类似的东西之前检查这个,因为这会抛出一个exceeption。 同时要小心谨慎,例如使用“,”或“。”。 这取决于你在Ecxel的设置。