グッドオーレやExcelの記事:http://support.microsoft.com/kb/316934
次のコードは、成功した行数で、Excelファイルへのパスを表す文字列を返しますプライベート変数を更新します。
Path
から覚えておいてください。System.IO;
!
string tempXlsFilePathName; string result = new string;
string sheetName;
string queryString;
int successCounter;
// set sheetName and queryString
sheetName = "sheetName";
queryString = "CREATE TABLE " + sheetName + "([columnTitle] char(255))";
// Write .xls
successCounter = 0;
tempXlsFilePathName = (_tempXlsFilePath + @"\literalFilename.xls");
using (OleDbConnection connection = new OleDbConnection(GetConnectionString(tempXlsFilePathName)))
{
OleDbCommand command = new OleDbCommand(queryString, connection);
connection.Open();
command.ExecuteNonQuery();
yourCollection.ForEach(dataItem=>
{
string SQL = "INSERT INTO [" + sheetName + "$] VALUES ('" + dataItem.ToString() + "')";
OleDbCommand updateCommand = new OleDbCommand(SQL, connection);
updateCommand.ExecuteNonQuery();
successCounter++;
}
);
// update result with successfully written username filepath
result = tempXlsFilePathName;
}
_successfulRowsCount = successCounter;
return result;
N.B.これは急いで編集されたので、間違いを含んでいる可能性があります。
Excel 2010とVSTO 4.0を使用していますが、このような問題はありません。あなたは何を使用していますか? – user626528
@Sean my answerにはC#コードが含まれています。リビジョン3で尋ねたように、リンクされたアーティクルにはVBコードが含まれています。 – StuperUser
私の最初の考えは、データをさまざまなセル(それぞれ100/300文字)に分割してそれらをマージすることです...残念ながら回避できますが、うまくいくと思います – Ortund