0
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 列具有适当的宽度。换句话说,我想得到更宽的列,有时甚至比写列名所需的空间还要宽。如何调整列的大小?

4

2 回答 2

0

ACE 驱动程序无法控制 Excel 如何显示该值。如果您想控制单元格格式,您将需要使用OpenXML SDK、像jetCell这样的第三方插件或使用主互操作程序集的 Excel 自动化,但您可能不想使用最后一个选项.

于 2013-07-15T18:53:09.187 回答
0

填充 Excel 后,编写一个方法来自动调整列宽,或者在代码中将它们显式设置为您想要的任何值。您需要使用 Excel 互操作,据我所知,这在 C# 中很痛苦。但是,这是一项非常简单的任务,我怀疑在 C# 中不会有什么大不了的。我对 Excel 自动化的体验完全在于 vb。这就是我要做的(虽然我不喜欢在我的应用程序中使用 3rd 方)

如何通过 Excel 互操作对象自动调整列大小?

于 2013-07-15T20:40:57.247 回答