110,561
社区成员
发帖
与我相关
我的任务
分享
private void buttonStart_Click(object sender, EventArgs e)
{
textBoxInput.ReadOnly = true;
buttonStart.Enabled = false;
textBoxInput.Refresh();
buttonStart.Refresh();
#region 更新导入列表
listReflash();
#endregion
string[] sheetWords = SplitWords(textBoxSheets.Text);
int sheetStart=0;
int sheetEnd=0;
string[] rangeColumnWords = SplitWords(textBoxRC.Text);
string[] rangeRowWords = SplitWords(textBoxRR.Text);
int[,,] rangeRegion = new int[2, 2, 2];
string[] rangeString = new string[2];
int standardColumn = Convert.ToInt32(textBoxSC.Text);
int standardRow = Convert.ToInt32(textBoxSR.Text);
int fileCount = textBoxInput.Lines.Length;
if (fileCount < 2)
{
MessageBox.Show("导入表至少含有2个文件!");
return;
}
ClassExcelOperation excel = new ClassExcelOperation(2, false, false, false);
int[] WorkSheetCount = new int[2];
excel.OpenExcel(textBoxInput.Lines[0], 0);
WorkSheetCount[0] = excel.WSheetCount(0);
for (int fileIndex = 1; fileIndex < fileCount; fileIndex++)
{
excel.OpenExcel(textBoxInput.Lines[fileIndex], 1);
WorkSheetCount[1] = excel.WSheetCount(1);
#region 工作表范围确定sheetStart,sheetEnd
sheetStart=Convert.ToInt32(sheetWords[0]);
if (sheetWords[1] == "#")
{
if (WorkSheetCount[0] != WorkSheetCount[1])
{
string MsgWords;
MsgWords = "两个工作薄表单数不一致,将以短表为准!位置:\r\n" + textBoxInput.Lines[0];
MsgWords += "\r\n" + textBoxInput.Lines[fileIndex] + "\r\n继续么?";
if (MessageBox.Show(MsgWords, "重要提示:", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.No)
{
return;
}
else
{
sheetEnd = Math.Min(excel.WSheetCount(0), excel.WSheetCount(1));
}
}
else
{
sheetEnd = excel.WSheetCount(1);
}
}
else
{
sheetEnd = Convert.ToInt32(sheetWords[1]);
}
#endregion
for (int sheetIndex = sheetStart; sheetIndex <= sheetEnd; sheetIndex++)
{
excel.OperSheet(sheetIndex, 0);
excel.OperSheet(sheetIndex, 1);
#region //源操作区范围确定rangeRegion[Point,Way,源]
rangeRegion[0, 0, 1] = Convert.ToInt32(rangeRowWords[0]);
rangeRegion[0, 1, 1] = Convert.ToInt32(rangeColumnWords[0]);
if (rangeRowWords[1] == "#")
{
rangeRegion[1, 0, 1] = excel.RowCount(1, standardColumn);
}
else
{
rangeRegion[1, 0, 1] = Convert.ToInt32(rangeRowWords[1]);
}
if (rangeColumnWords[1] == "#")
{
rangeRegion[1, 1, 1] = excel.ColCount(1, standardRow);
}
else
{
rangeRegion[1, 1, 1] = Convert.ToInt32(rangeColumnWords[1]);
}
#endregion
if (rangeRegion[0, 0, 1] > rangeRegion[1, 0, 1] | rangeRegion[0, 1, 1] > rangeRegion[1, 1, 1])
{
#region 空区范围处理
if (checkBox2.Checked)
{
textBoxMsg.Text += "[提示]\r\nfileIndex:" + Convert.ToString(fileIndex);
textBoxMsg.Text += " | sheetIndex:" + Convert.ToString(sheetIndex) + "为空记录\r\n";
textBoxMsg.Refresh();
}
#endregion
}
else
{
#region //目标操作区范围确定rangeRegion[Point,Way,目标]
rangeRegion[0, 0, 0] = excel.RowCount(0, standardColumn) + 1;
rangeRegion[0, 1, 0] = rangeRegion[0, 1, 1];
rangeRegion[1, 0, 0] = rangeRegion[0, 0, 0] + rangeRegion[1, 0, 1] - rangeRegion[0, 0, 1];
rangeRegion[1, 1, 0] = rangeRegion[1, 1, 1];
#endregion
#region //操作区格式化
rangeString[0] = excel.Tools_NtoC(rangeRegion[0, 1, 0]) + Convert.ToString(rangeRegion[0, 0, 0]) + ":";
rangeString[0] += excel.Tools_NtoC(rangeRegion[1, 1, 0]) + Convert.ToString(rangeRegion[1, 0, 0]);
rangeString[1] = excel.Tools_NtoC(rangeRegion[0, 1, 1]) + Convert.ToString(rangeRegion[0, 0, 1]) + ":";
rangeString[1] += excel.Tools_NtoC(rangeRegion[1, 1, 1]) + Convert.ToString(rangeRegion[1, 0, 1]);
#endregion
Excel.Range ran = excel.get_Range(rangeString[1], 1);
excel.set_Range(rangeString[0], ran, 0);
}
}
textBoxMsg.Text += "[提示]\r\n fileIndex:" + Convert.ToString(fileIndex);
textBoxMsg.Text += " | 导入成功!\r\n";
textBoxMsg.Refresh();
excel.CloseExcel(1);
}
textBoxMsg.Text += "[提示]\r\n fileIndex:0 | 导入成功!\r\n";
textBoxMsg.Refresh();
excel.SaveAs(textBoxOutput.Text, 0);
excel.CloseExcel(0);
excel.CloseApp();
textBoxMsg.Text += "[全部完成]\r\n " + textBoxOutput.Text + "保存成功!";
textBoxMsg.Refresh();
textBoxInput.ReadOnly = false;
buttonStart.Enabled = true;