【问题标题】:Insert integers into excel sheet将整数插入Excel工作表
【发布时间】:2019-03-27 20:36:06
【问题描述】:

使用oledb向excel表格中插入数据,整数只显示为整数:

我已经尝试更改以下连接字符串的属性:

string szConnectionString = $"Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" + myFilePath + "';Extended Properties=\"Excel 12.0;HDR=YES;Readonly=False;\"";

此外,我尝试创建一个具有数据类型的新工作表/表格:

cmd.CommandText = "CREATE TABLE [data3] (quarter VARCHAR, value INT);";

按照我当前的代码插入数据:

cmd.CommandText = "CREATE TABLE [data3] (quarter VARCHAR, value INT);";
cmd.ExecuteNonQuery();

cmd.CommandText = "INSERT INTO [data3$]([quarter ],[value]) VALUES(?,?)";
cmd.Parameters.AddWithValue("@p1", "2018.06");
cmd.Parameters.AddWithValue("@p2", 13); // <-- INT
cmd.ExecuteNonQuery();

我的期望是数据正确插入到excel中,意思是正确的格式。

【问题讨论】:

  • 离题,但你为什么无缘无故地使用插值字符串?你可以把你的代码写成$"Provider=...;Data Source='{myFilePath}';..."
  • 一般来说,OLEDB 与 Excel 的交互不支持 格式化 值。如果您想完全控制结果,请使用 .NET Excel 库。你可以找到一个列表here。 (就我个人而言,我使用 SpreadsheetLight。)
  • 是的,你是对的,我将代码 sn-p 更改为“int”。将数据插入excel并打开excel文件,所有数据都显示为字符串而不是整数。在屏幕截图中,您可以看到每列的绿色边缘表示“此字符串可能是整数”
  • @SNO 避免 AddWithValues。该方法必须根据输入猜测要使用的类型、大小、比例等。请改用Add 并指定您想要的类型。
  • @SNO 更好的选择是使用像 EPPlus 这样的库来直接创建 xlsx 文件。您不必安装 Jet 驱动程序,您可以操作样式、表格等。将数据加载到工作表中可以像 sheet.Cells.LoadFromDataTable(someTable)sheet.Cells.LoadFromCollection(someList) 一样简单

标签: c# excel oledb


【解决方案1】:

我运行了这段代码,将其更改为以下代码后没有任何问题:

cmd.CommandText = "CREATE TABLE [data3] (quarter VARCHAR, value INT);";
cmd.ExecuteNonQuery();

cmd.CommandText = "INSERT INTO [data3$]([quarter],[value]) VALUES(@Q1,@V1)";
cmd.Parameters.AddWithValue("@Q1", "2018.06");
cmd.Parameters.Add("@V1", SqlDbType.Int);
cmd.Parameters["@V1"].Value = 13;
cmd.ExecuteNonQuery();

我做了一些更改并强制 value 参数为整数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-23
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    • 2021-03-30
    • 2015-11-25
    • 1970-01-01
    相关资源
    最近更新 更多