データベースからExcelシートにデータをインポートしています。このために、私はdatareaderを使用しています。 Excelシートテンプレートにはいくつかのマクロがあり、数式は計算されておらず、通常のExcelワークシートではありません。特定のセルに書き込むことができる場合にのみ、Excelシートにデータを書き込む必要があります。そうでない場合は、データをインポートしないでください。C#を使用してセルがEXCELで読み取り専用かどうかを確認するには
これはXMLファイルで、どの列から書き込みを開始するべきか、そしてどの行に停止するべきかを示しています。私はこれを多くのシートに対して行っています。しかし、1つのシートでは、行の最初のセルは「読み取り専用」(ロック)で、残りは書き込みアクセスが許可されています。
DBからDatareaderを使用して行全体を取得したので、ロックされたセルに書き込むことなく、他のセルに書き込む必要があります。
参考用にコードスニペットを添付しています。
これを手伝ってください。
サンプル::
if (reader.HasRows)
{
minRow = 0;
minCol = 0;
Excel.Workbook SelWorkBook = excelAppln.Workbooks.Open(curfile, 0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "", true, false, 0, false, false, false);
Excel.Sheets excelSheets = SelWorkBook.Worksheets;
Excel.Worksheet excelworksheet = (Excel.Worksheet)excelSheets.get_Item(CurSheetName);
// Process each result in the result set
while (reader.Read())
{
// Create an array big enough to hold the column values
object[] values = new object[reader.FieldCount];
// Add the array to the ArrayList
rowList.Add(values);
// Get the column values into the array
reader.GetValues(values);
int iValueIndex = 0;
// If the Reading Format is by ColumnByColumn
if (CurTaskNode.ReadFormat == "ColumnbyColumn")
{
minCol = 0;
// minRow = 0;
for (int iCol = 0; iCol < CurTaskNode.HeaderData.Length; iCol++)
{
// Checking whether the Header data exists or not
if (CurTaskNode.HeaderData[minCol] != "")
{
// Assigning the Value from reader to the particular cell in excel sheet
excelworksheet.Cells[CurTaskNode.DATA_MIN_ROW + minRow, CurTaskNode.DATA_MIN_COL + minCol] = values[iValueIndex];
iValueIndex++;
}
minCol++;
}
minRow++;
}SelWorkBook.Close(true, curfile, null);
これを解決するには、私を助けてください。
は、あなたが全体の行マイナス最初の列を持つように(配列をスライスまずあなたはそれがロックされて、その後場合は、最初のセルのロックされたプロパティをチェックする必要があり、
RAMM
あなたはいくつかのコードを掲載しました、あなたはそれが何をしているのか、なぜそれがあなたにとってうまくいかないのかを説明していませんか? –
申し訳ありませんが、私は忘れてしまった。 このコードは、リーダーに行がある場合にDBからデータを読み取ります。次に、新しいプリロードされたExcelテンプレートファイルを開き、リーダーデータをValuesオブジェクトに割り当てます。 XMLファイルのヘッダー長(HeaderData.Length)に対して、各Excelセルに書き込み、最後にファイルを保存して閉じます。 データが書き込まれる場所は、excelworksheet.Cells [CurTaskNode.DATA_MIN_ROW + minRow、CurTaskNode.DATA_MIN_COL + minCol] = values [iValueIndex]です。 //セルに書き込むかどうかを実際にチェックする必要があります。私はそれをすることができません。 Plsのヘルプ – Ramm
私は新しい答えを投稿し、それを試してみました。 –