確實有很多方法。您可以使用OLEDB,也可以使用互操作(請參閱get_Range()
和ListObjects["table_name"].DataBodyRange
)。
當我被迫創建基於模板的Excel文件時,我使用了XML映射 - 它非常方便使用很。將xsd綁定到工作簿後,只需將xml加載到工作簿中,Excel就會將數據放置到正確的單元格中。 (如果你需要一個例子,只是發表評論,我會更新它的答案。)
但我個人與mj82同意。如果你可以避免寫入Excel文件 - 避免它。您可以將表(2003年的「列表」)綁定到某個外部數據源,並將該工作簿設置爲在打開時自動更新。如果在您的環境中可能會是最好的解決方案。
UPDATE: 使用XML地圖數據推到一個Excel工作簿,請按照下面的步驟
創建一個XML架構(XSD文件)。例如:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="BILLSTRINGS" targetNamespace="http://tempuri.org/BILLSTRINGS.xsd" elementFormDefault="qualified" xmlns="http://tempuri.org/BILLSTRINGS.xsd" xmlns:mstns="http://tempuri.org/BILLSTRINGS.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="BILLSTRINGS">
<xs:complexType>
<xs:sequence>
<xs:element name="STRINGS" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="ID_GOOD" type="xs:string" />
<xs:element name="NAME_GOOD" type="xs:string" />
<xs:element name="Quantity" type="xs:string" />
<xs:element name="Price" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
打開工作簿,如在ms help描述添加XSD作爲地圖和地圖細胞元素。
然後在你的代碼中: 用xml數據創建一個字符串。 (我用的類型數據集,所以我剛剛打電話的getXML。) 打開工作簿和數據推到Excel:
using OExcel = Microsoft.Office.Interop.Excel;
//...
OExcel.Application app = new OExcel.ApplicationClass();
OExcel.Workbook wb = app.Workbooks.Open(filepath, false, false, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
wb.XmlMaps["MAPNAME"].ImportXml(string_with_xml);
而這一切。希望這可以幫助。
如果它是在共享位置,如果該文件將被打開別人什麼,你嘗試做插入它的東西?如果有更好的解決方案,Excel不是很好......我建議您使用MS Access,創建結果表格,通過ADO使用MS Access數據庫的C#很容易在互聯網上廣爲人知。至於結果 - 您可以在Excel中用少量點擊查詢來連接到Access並獲取所需的所有數據。 – mj82 2011-05-07 20:01:19
@user:請不要在您的標題中加入「(C#.NET)」。只需將這些信息留在標籤中。 – 2011-05-07 20:37:37
@ mj82,該文件僅爲需要它的人員提供寫入權限,包括寫入自動化程序的用戶。如果已經以只讀模式訪問Excel文件,它仍然可以寫入。 – 2013-09-07 10:08:54