2013-07-15 181 views
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列具有适当的宽度。换句话说,我想要得到更宽的列,有时甚至会更宽,以便写出列名的空间。如何调整列的大小?OLEDB Excel文件格式

回答

0

ACE驱动程序无法控制Excel如何显示值。如果您想要控制单元格格式,您需要使用OpenXML SDK,第三方加载项(如jetCell)或使用主互操作程序集的Excel自动化,但是您可能不想使用最后一个选项。

0

在填充Excel之后,编写一个方法来自动调整列宽,或者在代码中将它们明确地设置为任何你想要的。你需要使用Excel Interop,并且从我听到的,这是C#中的一个痛苦。但是,这是一个非常简单的任务,我怀疑在C#中不会有什么大不了的。我对Excel自动化的经验完全在于vb。这是我会做的(我不喜欢在我的应用程序中使用第三方任何东西)

How do I auto size columns through the Excel interop objects?