2013-07-15 1 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 Automation с использованием первичной сборки Interop, но, скорее всего, вы не хотите идти с последним вариантом.

0

После заполнения Excel напишите способ автоподстройки ширины столбца или укажите их явно в коде, как хотите. Вам нужно будет использовать Excel Interop, и из того, что я слышу, это боль в C#. Однако это довольно простая задача, и я подозреваю, что это не будет большой проблемой в C#. Мой опыт в автоматизации Excel лежит исключительно на vb. Это то, что я сделал бы (я не люблю использовать третье лицо в моих приложениях)

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