求助C# 合并Excel 设置列单元格格式为"文本格式"

彤小晨er 2016-01-19 02:36:55
现在合并了两个Excel表格 有一列为文本格式 “0001”通过程序合并后变为“1” 了.
希望还保持“0001”该怎样修改程序?
希望可以实现保留原单元格格式合并.

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;
...全文
200 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
彤小晨er 2016-01-20
  • 打赏
  • 举报
回复
引用 5 楼 zhouqinghe24 的回复:
[quote=引用 3 楼 chenxt87 的回复:] [quote=引用 1 楼 zhouqinghe24 的回复:] 前面加 ' 单引号
谢谢啦~这个OK啦~嘿嘿~ 但是遇到了一个新的问题~有一个Excel没有Sheet2 然后就报错了 怎么办呢 [/quote] 可以create 一个sheet 想要sheet几就create 几个[/quote]在哪里写create? 我结了半天贴了···老说与总分不符···
瑞卡哥哥 2016-01-20
  • 打赏
  • 举报
回复
引用 3 楼 chenxt87 的回复:
[quote=引用 1 楼 zhouqinghe24 的回复:] 前面加 ' 单引号
谢谢啦~这个OK啦~嘿嘿~ 但是遇到了一个新的问题~有一个Excel没有Sheet2 然后就报错了 怎么办呢 [/quote] 可以create 一个sheet 想要sheet几就create 几个
瑞卡哥哥 2016-01-20
  • 打赏
  • 举报
回复
结贴吧...
彤小晨er 2016-01-20
  • 打赏
  • 举报
回复
引用 2 楼 lj1995091 的回复:
Excle中在单元格内容前面加 ' 单引号,他就认为后面的数据是文本型 所以你在你写数据的时候在前面加个单引号 你怎么合并都没事
ok啦~谢谢您啦~
彤小晨er 2016-01-20
  • 打赏
  • 举报
回复
引用 1 楼 zhouqinghe24 的回复:
前面加 ' 单引号
谢谢啦~这个OK啦~嘿嘿~ 但是遇到了一个新的问题~有一个Excel没有Sheet2 然后就报错了 怎么办呢
Yentre 2016-01-19
  • 打赏
  • 举报
回复
Excle中在单元格内容前面加 ' 单引号,他就认为后面的数据是文本型 所以你在你写数据的时候在前面加个单引号 你怎么合并都没事
瑞卡哥哥 2016-01-19
  • 打赏
  • 举报
回复
前面加 ' 单引号

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧