C# 使用C将单个单元格值从一个Excel文档复制到另一个Excel文档#
我正在制作一个应用程序,它将使用生成的一个Excel文档,并将该文档中的一些值放到另一个Excel文档中,我陷入了需要复制值的阶段 我的代码:C# 使用C将单个单元格值从一个Excel文档复制到另一个Excel文档#,c#,excel,C#,Excel,我正在制作一个应用程序,它将使用生成的一个Excel文档,并将该文档中的一些值放到另一个Excel文档中,我陷入了需要复制值的阶段 我的代码: private void buttonIzvrsi_Click(object sender, EventArgs e) { if(textBoxPolazna.Text!="" && textBoxKrajnja.Text != "") { Microsoft.Office.
private void buttonIzvrsi_Click(object sender, EventArgs e)
{
if(textBoxPolazna.Text!="" && textBoxKrajnja.Text != "")
{
Microsoft.Office.Interop.Excel.Application polazniExcel = new Microsoft.Office.Interop.Excel.Application();
polazniExcel.FileValidation = MsoFileValidationMode.msoFileValidationSkip;
Microsoft.Office.Interop.Excel.Workbook polazna = polazniExcel.Workbooks.Open(textBoxPolazna.Text.ToString());
Excel.Worksheet Polazni = polazniExcel.Sheets[1];//sheet koji treba unijeti
Microsoft.Office.Interop.Excel.Application krajnjiExcel = new Microsoft.Office.Interop.Excel.Application();
krajnjiExcel.FileValidation = MsoFileValidationMode.msoFileValidationSkip;
Microsoft.Office.Interop.Excel.Workbook krajnja = krajnjiExcel.Workbooks.Open(textBoxKrajnja.Text.ToString());
Excel.Worksheet Krajnji_PoMT = krajnjiExcel.Sheets["Po mjestu troška"];//sheet po mjestu troska
Excel.Worksheet Krajnji_Ukupno = krajnjiExcel.Sheets["Ukupno po mjesecima"];//sheet ukupno
Excel.Range brojRedovaPolazni = Polazni.UsedRange;
int brojacRedovaPolazni = brojRedovaPolazni.Rows.Count; //broj redova u polaznom excelu
Excel.Range brojRedovaKrajnjiMT = Krajnji_PoMT.UsedRange;
int brojacRedovaKrajnjiMT = brojRedovaKrajnjiMT.Rows.Count;//broj redova u krajnjem excelu sheet mjesto troska
Excel.Range brojRedovaKrajnjiUkupno = Krajnji_Ukupno.UsedRange;
int brojacRedovaKrajnjiUkupno = brojRedovaKrajnjiUkupno.Rows.Count;//broj redova u krajnjem excelu sheet ukupno
List<string> listaMT = new List<string>();
List<string> PostojeciMjeseci = new List<string>(); //tu planiram trpati mjesece koji postoje
if (brojacRedovaPolazni == brojacRedovaKrajnjiMT)
{
for (int i = 1; i <= 12; i++)
{
if(Polazni.Cells[9, i + 2].Value != null || Polazni.Cells[9, i + 2].Value != "")
{
listaMT.Add(Polazni.Cells[9, i + 2].Value);
}
}
PostojeciMjeseci = mjeseci.Intersect(listaMT).ToList(); //ovi mjeseci postoje
int kolumna = 0;
for (int i = 0; i < PostojeciMjeseci.Count; i++)
{
for (int j = 1; j < 12; j++)
{
//MessageBox.Show(Polazni.Cells[9, j + 2].Value);
if (string.Equals(PostojeciMjeseci[i], Polazni.Cells[9, j + 2].Value))
{
#region Broj kolumne
if (string.Equals(Polazni.Cells[9, j + 2].Value, "siječanj")) kolumna = 3;//"C";
else if (string.Equals(Convert.ToString(Polazni.Cells[9, j + 2].Value), "veljača")) kolumna = 4;// "D";
else if (string.Equals(Convert.ToString(Polazni.Cells[9, j + 2].Value), "ožujak")) kolumna = 5;// "E";
else if (string.Equals(Convert.ToString(Polazni.Cells[9, j + 2].Value), "travanj")) kolumna = 6;// "F";
else if (string.Equals(Convert.ToString(Polazni.Cells[9, j + 2].Value), "svibanj")) kolumna = 7;// "G";
else if (string.Equals(Convert.ToString(Polazni.Cells[9, j + 2].Value), "lipanj")) kolumna = 8;// "H";
else if (string.Equals(Convert.ToString(Polazni.Cells[9, j + 2].Value), "srpanj")) kolumna = 9;// "I";
else if (string.Equals(Convert.ToString(Polazni.Cells[9, j + 2].Value), "kolovor")) kolumna = 10;// "J";
else if (string.Equals(Convert.ToString(Polazni.Cells[9, j + 2].Value), "rujan")) kolumna = 11;// "K";
else if (string.Equals(Convert.ToString(Polazni.Cells[9, j + 2].Value), "listopad")) kolumna = 12;// "L";
else if (string.Equals(Convert.ToString(Polazni.Cells[9, j + 2].Value), "studeni")) kolumna = 13;// "M";
else if (string.Equals(Convert.ToString(Polazni.Cells[9, j + 2].Value), "prosinac")) kolumna = 14;// "N";
#endregion
//MessageBox.Show("U petlji: "+Polazni.Cells[9, j + 2].Value);
string sValue = "";
for (int x = 1; x <= brojacRedovaKrajnjiMT - 12; x++)
{
Krajnji_PoMT.Cells[(x + 12), kolumna].Value = Polazni.Cells[(x + 12), kolumna].Value;
}
}
}
}
}
else if (brojacRedovaPolazni == brojacRedovaKrajnjiUkupno)
{
for (int i = 1; i <= brojacRedovaKrajnjiUkupno; i++)
{
}
}
else
{
MessageBox.Show("Broj redova nije konzistentan s glavnom tablicom.");
}
polazna.Close(true, Type.Missing, Type.Missing);
krajnja.Close(true, Type.Missing, Type.Missing);
polazniExcel.Quit();
krajnjiExcel.Quit();
}
else
{
MessageBox.Show("Unesite obe putanje do Excel datoteka.");
}
}
我尝试了许多变体,但我无法将该值粘贴到另一个Excel。如果我说:
Krajnji_PoMT.Cells[(x + 12), kolumna].Value = "test";
然后它就起作用了。这里有什么问题?您在问题线路上收到的错误是什么?可能是。没有错误,只是没有出现值,对吗?另外,在调试器中检查
value
的运行时值。@gravity没有错误,但是当粘贴完值后,数据应该在哪里就为空,我甚至使用MessageBox.Show()查看我正在写什么,它也显示为空。为了帮助你理解我所说的:@dlatikay我不知道该怎么做,因为我得到了这个:我想你需要分配给公式
属性,或者从中读取@gravity的链接答案也会起作用,但它将取代剪贴板上的内容,这可能是用户不希望工具能做到的。
Krajnji_PoMT.Cells[(x + 12), kolumna].Value = "test";