string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +
fileName + ";Extended Properties=\"Excel 12.0 Xml;HDR=Yes;IMES=1;\"";
using (OleDbConnection conn = new OleDbConnection(strConn))
{
conn.Open();
DataTable dt = dataset.Tables[0];
OleDbCommand cmd = new OleDbCommand(getCreateTableCommand(dt), conn);
cmd.ExecuteNonQuery();
conn.Close();
}
/*method - getCreateTableCommand returns something like this -
{CREATE TABLE [Results] ([name1] STRING,[name2] STRING,[name3] STRING,[name4] STRING}*/
输出很好。问题是 - 我希望excel列具有适当的宽度。换句话说,我希望得到更宽的列,有时甚至比写入列名所需的空间更宽。如何调整列的大小?
答案 0 :(得分:0)
ACE驱动程序无法控制Excel显示值的方式。如果要控制单元格格式,则需要使用OpenXML SDK,第三方加载项(如jetCell)或使用主互操作程序集的Excel自动化,但您可能不需要想要选择最后一个选项。
答案 1 :(得分:0)
填充Excel后,编写一个方法来自动调整列宽,或者在代码中将它们显式设置为您想要的任何内容。你需要使用Excel Interop,从我听到的,它是C#的痛苦。但是,这是一个非常简单的任务,我怀疑在C#中不会有什么大不了的。我对Excel自动化的经验完全在于vb。这就是我要做的事情(我不喜欢在我的应用程序中使用第三方任何东西)
How do I auto size columns through the Excel interop objects?