【发布时间】:2017-02-23 08:36:56
【问题描述】:
我想生成与我们之前使用的相同的 Excel 报告(使用旧版本的 Excel)。唯一的问题是旧式报告中的所有单元格都显示为带有撇号字符的字符串:
我用下面的代码创建了基本相同的报告:
oleDbConnection = new System.Data.OleDb.OleDbConnection(
"provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +
fileFullPath +
";Extended Properties='Excel 12.0 Xml;HDR=YES' ");
oleDbConnection.Open();
oleDbCommand.Connection = oleDbConnection;
string commandHeader = String.Join("] char(255), [", headers);
commandHeader = "[" + commandHeader + "]";
commandHeader = "CREATE TABLE data (" + commandHeader + " char(255))";
oleDbCommand.CommandText = commandHeader;
oleDbCommand.ExecuteNonQuery();
foreach (var item in exportList)
{
string line = String.Join("\",\"\'", new string[] {item.Foreman_ID, item.DateApp.Date.ToString("yyyyMMdd"), item.TimeApp,
item.Employee_ID, item.ProductionOrder, item.OperationNumber,
item.ConfirmationNumber, item.date.Date.ToString("yyyyMMdd"), item.TotalHours.ToString("0.000").Replace(",", "."), item.SalaryType, item.TimeType,
item.ExtraPrice.ToString("0.00").Replace(",", "."), item.ExtraHours, item.ActualPC, item.PcPriceSplit, item.CostCenter});
line = line.Replace(" ", String.Empty);
line = "\"\'" + line + "\"";
oleDbCommand.CommandText = "Insert into data values(" + line + ")";
oleDbCommand.ExecuteNonQuery();
}
oleDbConnection.Close();
此代码生成相同的行,其中每个单元格都以撇号字符开头。但是如果我打开生成的 Excel,我仍然会看到我的撇号:
如果我按下单元格然后按回车键,那么这个撇号就会消失。
【问题讨论】:
-
wer 是行中的 pblm ,
oleDbCommand.CommandText = "Insert into data values(" + line + ")";是否显示错误 -
不,该行正常工作。报告已生成,但与之前使用的报告看起来不同。在新报告中,单元格中仍然可以看到撇号字符。
-
您是否尝试过在
\"\'\'"等位置的实际单引号字符之前删除反斜杠? -
我认为在代码中有些你试图在此处放置两个字符串(
')(\'\'),那就是它来了 -
string line = String.Join("\",\"\'\'", new string[] {item.Foreman_ID, item.DateApp.Date.ToString("yyyyMMdd"), item.TimeApp,检查此行并清除一个'
标签: c# excel oledb export-to-excel